RT-Thread AT组件添加自定义URC功能

这里需要在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},
};

你可能感兴趣的:(rt-thread)