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);
            }
  • 相关阅读:
    Spring入门学习(一)
    Debian环境下vi设置
    Debian 环境下安装Tomcat记录
    Debian安装记录
    [原]Fedora 20的yum配置
    vue中slot以及mate的用法
    Express+Nodejs 下的登录拦截实现
    Node.js 常用Mongoose方法
    Node.js常用express方法
    node、Mongo项目如何前后端分离提供接口给前端
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/15576153.html
Copyright © 2011-2022 走看看