这里需要在RT-Thread的AT组件中,添加自定义URC命令的解析功能,比如我这里是新短信到来的通知处理,首先就需要编写一个URC的响应函数urc_cmti_func
,然后根据URC指令的前缀和结束符,修改urc_table
以支持该命令的解析路由即可。
extern rt_mailbox_t mb_sms;
static void urc_cmti_func(struct at_client *client, const char *data, rt_size_t size)
{
RT_ASSERT(data && size);
char device[32];
int index=0;
LOG_I("URC data : %.*s", size, data);
sscanf(data,"+CMTI: \"%[A-Z]\",%d",device,&index);
LOG_D("device=>%s,index=>%d\n",device,index);
rt_mb_send(mb_sms, index);
}
static const struct at_urc urc_table[] =
{
{"SEND OK", "\r\n", urc_send_func},
{"SEND FAIL", "\r\n", urc_send_func},
{"+QIOPEN:", "\r\n", urc_connect_func},
{"+QIURC:", "\r\n", urc_qiurc_func},
{"+CMTI:", "\r\n", urc_cmti_func},
};