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

Zigbee reporting not work while using multiple endpoints

Hello,

I just started to understand Zigbee and I had some problem. I created 3 endpoints. In one of them (endpoint counter_ep) I need a attribute reporting. A reporting works well only if this endpoint is the last in the list of macro parameters ZBOSS_DECLARE_DEVICE_CTX_3_EP or the only one in the macro ZBOSS_DECLARE_DEVICE_CTX_1_EP, otherwise reports will be unstable (for example, only 1 out of 10 reports will be received). Please tell me what could be the problem. I already found a similar problem on your forum, but the question has been deleted.

Thanks in advance.

I am using nrf52840 chip, SDK 4.0.0, router.
Coordinator: nrf52840, SDK 4.0.0, CLI example.

Examples:
counter_ep - endpoint with report.

Works:

ZBOSS_DECLARE_DEVICE_CTX_3_EP (counter_ctx, duty_ep, leds_ep, counter_ep);

or
ZBOSS_DECLARE_DEVICE_CTX_1_EP (counter_ctx, counter_ep);

Does not work:

ZBOSS_DECLARE_DEVICE_CTX_3_EP (counter_ctx, counter_ep, duty_ep, leds_ep);

or
ZBOSS_DECLARE_DEVICE_CTX_3_EP (counter_ctx, duty_ep counter_ep, leds_ep);

or
ZBOSS_DECLARE_DEVICE_CTX_2_EP (counter_ctx, counter_ep, leds_ep);

or
ZBOSS_DECLARE_DEVICE_CTX_2_EP (counter_ctx, counter_ep, duty_ep);

Parents
  • Hi Nikita

    I'm sorry, but we aren't able to see why your declarations are causing trouble. Some good news though. According to one of our developers, there shouldn't be any problems declaring the endpoints in one array like you have done successfully, as long as you calculate it properly to prevent accessing memory outside the array boundary.

    So if you want a quick and clean solution, just stick with what is working.

    Best regards,

    Simon

Reply
  • Hi Nikita

    I'm sorry, but we aren't able to see why your declarations are causing trouble. Some good news though. According to one of our developers, there shouldn't be any problems declaring the endpoints in one array like you have done successfully, as long as you calculate it properly to prevent accessing memory outside the array boundary.

    So if you want a quick and clean solution, just stick with what is working.

    Best regards,

    Simon

Children
Related