物联网设备端开发AT模组中AT线程问题,client_parser()任务不进行阻塞,这样不会造成任务饥饿么?RT-THREAD中就有信号量机制
源码
#ifdef AT_OS_USED
static void client_parser(void *userContex)
{
int resp_buf_len = 0;
const at_urc *urc;
int line_counts = 0;
at_client_t client = at_client_get();
Log_d("client_parser start...");
while (1) {
if (at_recv_readline(client) > 0) {
#ifdef AT_DEBUG
const char *cmd = NULL;
int cmdsize = 0;
cmd = at_get_last_cmd(&cmdsize);
Log_d("last_cmd:(%.*s), readline:%s", cmdsize, STRING_PTR_PRINT_SANITY_CHECK(cmd),
STRING_PTR_PRINT_SANITY_CHECK(client->recv_buffer));
#endif
if ((urc = get_urc_obj(client)) != NULL) {
/* current receive is request, try to execute related operations */
if (urc->func != NULL) {
urc->func(client->recv_buffer, client->cur_recv_len);
}
}
相似问题