按照红旭Model移植方法创建Server端vendor model
Vendor Model在Server端的错误
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);
}
}
#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
感谢大佬指导