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);
            }
  • 相关阅读:
    Xcode及模拟器SDK下载
    修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色
    NJKWebViewProgress ——webview进度条
    _tmain 和 main
    XSS原理
    逆向工程
    guide
    网络数据包
    Linux 文件系统 和文件属性
    Linux 文件系统
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/15576153.html
Copyright © 2011-2022 走看看