This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

ZIGBEE SDK ZB_GET_OUT_BUF_DELAYED2 call failed

HI,all

I am a newman for zigbee on NRF52840 with S140 softdevice,

I have two board, one is ZC and another is ZED.

On ZC board, I use ZB_GET_OUT_BUF_DELAYED2 to send data to ZED continuely,about 100 times this method return failed and can not alloc a buf.

after about 3 seconds ZB_GET_OUT_BUF_DELAYED2 can be called successfully.

My question is:

1,when ZB_GET_OUT_BUF_DELAYED2 call failed, is there any method to relase or remalloc buffer?

2,how to reduce the time(about 3 seconds) to get new buf successfully?

3,why need wait for some seconds to get new buf?

wish your help,thanks.

Parents
  • HI,Andreas,

    thanks your reply and help.

    my code to send data is below:

    #define ZB_ZCL_HF_DP_SEND_CMD(buffer, \
    addr, \
    dst_addr_mode, \
    dst_ep, \
    ep, \
    prfl_id, \
    def_resp, \
    cmd_id, \
    cb, \
    cmd_data, \
    cmd_size) \
    { \
    zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer) \
    ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, def_resp) \
    ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ(ptr, ZB_ZCL_GET_SEQ_NUM(), cmd_id); \
    ZB_ZCL_PACKET_PUT_DATA_N(ptr, cmd_data, cmd_size); \
    ZB_ZCL_FINISH_PACKET(buffer, ptr) \
    ZB_ZCL_SEND_COMMAND_SHORT(buffer, \
    addr, \
    dst_addr_mode, \
    dst_ep, \
    ep, \
    prfl_id, \
    ZB_ZCL_CLUSTER_ID_HF_DP_ATTR, \
    cb); \
    }

    #define ZB_ZCL_HF_DP_SEND_SWITCH_REQ( \
    buffer, addr, dst_addr_mode, dst_ep, ep, prfl_id, dis_default_resp, cb, cmd_data, cmd_size) \
    ZB_ZCL_HF_DP_SEND_CMD( \
    buffer, \
    addr, \
    dst_addr_mode, \
    dst_ep, \
    ep, \
    prfl_id, \
    dis_default_resp, \
    ZB_ZCL_CMD_HF_DP_SWITCH_ID, \
    cb, \
    cmd_data, \
    cmd_size)

    SwitchData data = {0, 2};
    ZB_ZCL_HF_DP_SEND_SWITCH_REQ(p_buf,
    addr,
    ZB_APS_ADDR_MODE_16_ENDP_PRESENT,
    ep,
    HFDP_GATEWAY_ENDPOINT,
    ZB_AF_HA_PROFILE_ID,
    ZB_ZCL_DISABLE_DEFAULT_RESPONSE,
    NULL,
    &data,
    sizeof(data));

Reply
  • HI,Andreas,

    thanks your reply and help.

    my code to send data is below:

    #define ZB_ZCL_HF_DP_SEND_CMD(buffer, \
    addr, \
    dst_addr_mode, \
    dst_ep, \
    ep, \
    prfl_id, \
    def_resp, \
    cmd_id, \
    cb, \
    cmd_data, \
    cmd_size) \
    { \
    zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer) \
    ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, def_resp) \
    ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ(ptr, ZB_ZCL_GET_SEQ_NUM(), cmd_id); \
    ZB_ZCL_PACKET_PUT_DATA_N(ptr, cmd_data, cmd_size); \
    ZB_ZCL_FINISH_PACKET(buffer, ptr) \
    ZB_ZCL_SEND_COMMAND_SHORT(buffer, \
    addr, \
    dst_addr_mode, \
    dst_ep, \
    ep, \
    prfl_id, \
    ZB_ZCL_CLUSTER_ID_HF_DP_ATTR, \
    cb); \
    }

    #define ZB_ZCL_HF_DP_SEND_SWITCH_REQ( \
    buffer, addr, dst_addr_mode, dst_ep, ep, prfl_id, dis_default_resp, cb, cmd_data, cmd_size) \
    ZB_ZCL_HF_DP_SEND_CMD( \
    buffer, \
    addr, \
    dst_addr_mode, \
    dst_ep, \
    ep, \
    prfl_id, \
    dis_default_resp, \
    ZB_ZCL_CMD_HF_DP_SWITCH_ID, \
    cb, \
    cmd_data, \
    cmd_size)

    SwitchData data = {0, 2};
    ZB_ZCL_HF_DP_SEND_SWITCH_REQ(p_buf,
    addr,
    ZB_APS_ADDR_MODE_16_ENDP_PRESENT,
    ep,
    HFDP_GATEWAY_ENDPOINT,
    ZB_AF_HA_PROFILE_ID,
    ZB_ZCL_DISABLE_DEFAULT_RESPONSE,
    NULL,
    &data,
    sizeof(data));

Children
No Data
Related