按照红旭Model移植方法创建Server端vendor model

    static char str[] = "ok\r\r\n";
    
    #define StrLen sizeof(str)/sizeof(str[0])
    
    static void hx_model_server_tx_cb(const hx_model_server_t * p_self, \
                                            const uint8_t* p_data,uint8_t length)
    {
        app_usbd_cdc_acm_write(&m_app_cdc_acm, str, StrLen); 
    
        uint8_t* message = (uint8_t*)malloc(sizeof(uint8_t)*length);
        memcpy(message,p_data,length);
        free(message);
    }
    static uint8_t* hx_model_server_get_cb(const hx_model_server_t * p_self)
    {
        app_usbd_cdc_acm_write(&m_app_cdc_acm, str, StrLen);   
    }
    
    static hx_model_server_t m_hx_model_server[SERVER_MODEL_INSTANCE_COUNT];
    hx_server_model_callbacks_t server_callbacks = {
        .get_handler = hx_model_server_get_cb,\
        .tx_handler = hx_model_server_tx_cb
    };
    
    static void models_init_cb(void)
    {
        __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Initializing and adding models\n");
        app_model_init();
        for(uint8_t i = 0; i <SERVER_MODEL_INSTANCE_COUNT; i++)
        {
            m_hx_model_server[i].p_callbacks = &server_callbacks;
            uint32_t status = hx_model_server_init(&m_hx_model_server[i],i);
        }    
    }

      zqaking

      #define ACCESS_MODEL_COUNT (/* Element 0:                                       */ \
                                  1 + /* Config Server                                */ \
                                  1 + /* Health Server                                */ \
                                  1 + /* Generic OnOff Server                         */ \
                                  1 + /* Default Transition Time Server               */ \
                                  1 + /* Scene Server                                 */ \
                                  1 + 2  /* Scene Setup Server (extends Scene Server)    */)
      
      /**
       * The number of elements in the application.
       *
       * @warning If the application is to support _multiple instances_ of the _same_ model, these instances
       * cannot be in the same element and a separate element is needed for each new instance of the same model.
       */
      #define ACCESS_ELEMENT_COUNT (2)

        server端是完全按照步骤来的,我在client端通过同样的方式创造vendor model且发送mesh成功,在服务端好像没收到还是怎么回事

          zqaking 你可以用nRF Mesh App试下吗?

          Wireless-Tech
          抱歉 找到问题了 是我自己猪鼻

          #ifndef HX_MODEL_CONTROL_ENABLE
          #define HX_MODEL_CONTROL_ENABLE                    (1)
          #endif

          红旭无线默认定义HX_MODEL_CONTROL_ENABLE为1,而在这里我是单独创建server,因此会引起回调函数里面的参数错误。

            Wireless-Tech
            感谢大佬指导

              撰写回复...