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

[nRF52840 with zigbee] How to append user data append to HA profile ?

Hi,

I am developing a system similar to door lock system.

In our system, user data should transmit from ZED(or ZR) to ZC.

So i modified the ZB_ZCL_ON_OFF_SEND_REQ macro to add user data.

With wireshark, packet size is ok (includes the user data bytes).

But i cannot extract appended user data at ZC side.(Light On/Off command can be parsed successfully).

I am using HA profile.

Give some clues.

Thanks.

#define my_ZB_ZCL_ON_OFF_SEND_REQ(                                                         \
    buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, dis_default_resp, command_id, cb) \
{                                                                                       \
  zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer)                                     \
  ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, dis_default_resp)            \
  ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ(ptr, ZB_ZCL_GET_SEQ_NUM(), command_id);           \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xab);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xcd);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xef);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0x01);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xaa);  \
  ZB_ZCL_FINISH_PACKET(buffer, ptr)                                                     \
  ZB_ZCL_SEND_COMMAND_SHORT(                                                            \
      buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, ZB_ZCL_CLUSTER_ID_ON_OFF, cb);  \
}

Parents
  • Hi,

    Could you explain a bit more about why you are not able to extract the appended user data? How are you implementing this right now?

    Since the payload is not what is expected for an on/off cluster you need to register an endpoint handler to intercept every frame coming to the endpoint and parse the data yourself.

    You can take a look at how it's handled in the zigbee_cli_cmd_attr.c file in the CLI example, as we handle reading attributes the same way.

    Best regards,

    Marjeris

  • Hi,

    The generated ld file does not include section ".zb_ep_handlers" which contain new end point handler i registered.

    Adding codes in main.c, is there something to do for section management ?

    Thanks.

    PS>

    I added zb_ep_handers section information in xml file. and after that map file generated zb_ep_handlers normally.

    but registered handler is not called.

    -------- in map file --------

    .zb_ep_handlers
    0x0000000000037c34 0x4
    0x0000000000037c34 __zb_ep_handlers_start__ = .
    0x0000000000037c34 __start_zb_ep_handlers = __zb_ep_handlers_start__
    *(.zb_ep_handlers*)
    .zb_ep_handlers
    0x0000000000037c34 0x4 Output/zigbee_light_coordinator_pca10056 Release/Obj/main.o
    0x0000000000037c34 zb_ep_attr
    0x0000000000037c38 __zb_ep_handlers_end__ = (__zb_ep_handlers_start__ + SIZEOF (.zb_ep_handlers))
    0x0000000000000004 __zb_ep_handlers_size__ = SIZEOF (.zb_ep_handlers)

Reply
  • Hi,

    The generated ld file does not include section ".zb_ep_handlers" which contain new end point handler i registered.

    Adding codes in main.c, is there something to do for section management ?

    Thanks.

    PS>

    I added zb_ep_handers section information in xml file. and after that map file generated zb_ep_handlers normally.

    but registered handler is not called.

    -------- in map file --------

    .zb_ep_handlers
    0x0000000000037c34 0x4
    0x0000000000037c34 __zb_ep_handlers_start__ = .
    0x0000000000037c34 __start_zb_ep_handlers = __zb_ep_handlers_start__
    *(.zb_ep_handlers*)
    .zb_ep_handlers
    0x0000000000037c34 0x4 Output/zigbee_light_coordinator_pca10056 Release/Obj/main.o
    0x0000000000037c34 zb_ep_attr
    0x0000000000037c38 __zb_ep_handlers_end__ = (__zb_ep_handlers_start__ + SIZEOF (.zb_ep_handlers))
    0x0000000000000004 __zb_ep_handlers_size__ = SIZEOF (.zb_ep_handlers)

Children
No Data
Related