|
Information
说明: |
建议参照本版块置顶帖内容输入必要信息 |
芯片型号: |
TLSR8258 |
SDK及版本: |
tc_ble_mesh V4.1.0.1_Patch_0002 |
打开 MD_SENSOR_EN 后,模型发布参数时提示:[ERR]:tx upper layer failed: 6(see tx_errno_e)。表示发送缓冲区溢出,如何处理。
enum tx_errno_e{
TX_ERRNO_SUCCESS = 0,
TX_ERRNO_DEV_OR_APP_KEY_NOT_FOUND = 1,/* device key or app key not found */
TX_ERRNO_GET_UT_TX_BUF_FAIL = 2,/* get the upper layer tx buffer fail */
TX_ERRNO_ADDRESS_INVALID = 3,/* source address or destination address invalid */
TX_ERRNO_PAR_LEN_OVER_FLOW = 4,/* parameters length > 378 */
TX_ERRNO_TX_BUSY = 5,/* segment busy, reliable busy,... */
TX_ERRNO_TX_FIFO_FULL = 6,/* tx fifo full: mesh_adv_cmd_fifo_(normal message) or mesh_adv_fifo_fn2lpn_(message from friend to LPN)*/
TX_ERRNO_PAR_LEN_LPN_CTL = 7,/* All transport control messages originated by a Low Power node shall be sent as Unsegmented */
TX_ERRNO_IV_INVALID = 8,/* have not get iv index after import JSON */
TX_ERRNO_ALL_OTHER_ERR = -1,/* default error */
};
执行到下述代码的 model_pub_check_set 函数时出现:
u32 sensor_measure_proc()
{
//foreach(i, SENSOR_NUMS){ // TODO
sensor_cadence_t *p_cadence = &model_sig_sensor.sensor_states[0].cadence;
sensor_data_t * p_sensor_data = &sensor_data[0];
u32 sample_interval = 1 << sensor_descrip[0].measure_period;
if(clock_time_exceed_ms(sensor_measure_ms, sample_interval)){//
sensor_measure_ms = clock_time_ms();
u8 pub_flag = 0;
//update sensor_measure_quantity here
#if !WIN32
#if SENSOR_LIGHTING_CTRL_USER_MODE_EN // for sensor server to send sensor status.
gpio_set_input_en(SENSOR_GPIO_PIN, 1);
gpio_set_output_en(SENSOR_GPIO_PIN, 0);
sleep_us(100);
sensor_measure_quantity = gpio_read(SENSOR_GPIO_PIN) ? 0 : 1;
#elif (((NLC_SENSOR_TYPE_SEL == NLCP_TYPE_OCS)|| (NLC_SENSOR_TYPE_SEL == NLCP_TYPE_ALS)) && (NLC_SENSOR_SEL != SENSOR_NONE))
sensor_measure_quantity = nlc_sensor_get();
#endif
#endif
u32 measure_val = 0;
memcpy(&measure_val, p_sensor_data->p_raw, min2(sizeof(measure_val), p_sensor_data->len_raw));
if(sensor_measure_quantity < measure_val){
if((measure_val - sensor_measure_quantity) > p_cadence->cadence_unit.delta_down){
pub_flag = 1;
}
}
else{
if((sensor_measure_quantity - measure_val) > p_cadence->cadence_unit.delta_up){
pub_flag = 1;
}
}
if(pub_flag){
LOG_USER_MSG_INFO(0, 0, "sensor_measure_quantity:%d", sensor_measure_quantity);
memcpy(p_sensor_data->p_raw, &sensor_measure_quantity, min2(sizeof(measure_val), p_sensor_data->len_raw));
model_pub_check_set(ST_G_LEVEL_SET_PUB_NOW, (u8 *)&model_sig_sensor.sensor_srv[0].com, 0);
}
}
//}
return 1;
}
|
|