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);
            }
  • 相关阅读:
    WebBrowser.ExecWB的完整说明
    jQuery选择器的灵活用法
    Nooice, 首次开通博客园
    【HDU】3663 Power Stations
    【HDU】4069 Squiggly Sudoku
    【FOJ】2076 SUDOKU
    【HDU】3529 Bomberman Just Search!
    【HDU】3909 Sudoku
    【HDU】2780 SuSuSudoku
    【HDU】3111 Sudoku
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/15576153.html
Copyright © 2011-2022 走看看