zoukankan      html  css  js  c++  java
  • lwm2m 的notify 的机制

    1. AT指令的回调函数

    void AT_CmdFunc_lwm2mNOTIFY(atCommand_t *pParam)

    在回调函数中用

    rc = lwm2mClientNotify(reqHandle, lwm2mclientId, &uri);

    在notify 里面要发送邮箱信息

    osiMessageQueuePut(lwm2m_atcmd_handle, &msg);

    这时要说到第一个任务,AT命令处理的主任务了。lwm2m_resource_value_changed 会标志有值改变了。在这个函数中会查看有没有 订阅者,有的话watcherP->update = true; 

    void lwm2mAtcmdProcessing(void *argument)
    {
      case MSG_LWM2M_NOTIFY:
      memcpy(&uri, &msg.uri, sizeof(lwm2m_uri_t));
      lwm2m_resource_value_changed(pContext->context, &uri);
      break;
    }

    然后说到另外一个任务

    void lwm2mMainLoop(void *arg)
    
    调用
    result = lwm2m_step(lwm2mH, (time_t*)&(tv.tv_sec));
    
    调用
    observe_step(contextP, tv_sec, timeoutP);
    
    开始组包数据
    coap_init_message(message, COAP_TYPE_NON, COAP_205_CONTENT, 0);
    coap_set_header_content_type(message, watcherP->format);
    coap_set_payload(message, buffer, length);

    在这里有CON , 和NON,那么如果改成CON,或许会收到数据 ACK。

    这里处理接收到的数据

    lwm2m_handle_packet(lwm2mH, buffer, numBytes, connP);

    加上,不知道行不行啊

            if (message->type == COAP_TYPE_ACK)
            {
                //如果收到了ACK
                lwm2mSendInd("RECV ACK",NULL);
            }
  • 相关阅读:
    ICE-3.5.1-错误记录
    windows下qtcreator添加ICE库文件
    LINUX下QT与C语言通过网卡名获取网卡IP与MAC
    Apache部署Django+Vue
    三次握手和四次挥手面试常问
    配置mysql时报错
    nosql的介绍以及和关系型数据库的区别
    redis的基本操作
    在Centos安装redis-孙志奇
    git的使用
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/15576153.html
Copyright © 2011-2022 走看看