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

Meaning of status 'ZB_ZDP_STATUS_NOT_SUPPORTED'

Hello Nordic support,

I would like to understand regarding the status value 'ZB_ZDP_STATUS_NOT_SUPPORTED'.

I have a Zigbee application in which the device type is a Zigbee coordinator. A Zigbee end device is able to join this network and bind to a certain cluster. When I send a leave request command to this end device from the coordinator using zdo_mgmt_leave_req() and check the status in callback, I see that the status received is 'ZB_ZDP_STATUS_NOT_SUPPORTED'. From the header file 'zboss_api_zdo.h', I get that this status means 'The requested optional feature is not supported on the target device.'.

I would like to know if this means that the zigbee end device has not implemented the functionality for leave request command? If yes, what would be the alternative to make the device leave the network?

Regards,

Anusha

  • Hi

    Indeed, it seems like the end device you're trying to make leave the network does not support the leave feature, or any optional features you've added to the leave request (I.E. rejoin, remove children, etc.). Can you show me a snippet of the zdo_mgmt_leave_req() function?

    What end device is this? I assume you're not able to modify it at all to implement the features you'd like?

    Best regards,

    Simon

  • Hi Simon,

    Thanks for your response. Here is the code snippet used for the leave request and the corresponding callback function:

    void send_leave_command(zb_uint16_t short_addr)
    {
      zb_zdo_mgmt_leave_param_t * p_req;
      zb_bufid_t bufid;
    
      bufid = zb_buf_get_out();
    
      p_req = ZB_BUF_GET_PARAM(bufid, zb_zdo_mgmt_leave_param_t);
      memset(p_req->device_address, 0, sizeof(zb_ieee_addr_t)); // if device_address is 0, the device at dst_addr is removed
    
      p_req->dst_addr = short_addr;
      p_req->remove_children = 0;
      p_req->rejoin = 0;
    
      zdo_mgmt_leave_req(bufid, send_leave_command_cb);
    }
    
    static void send_leave_command_cb(zb_bufid_t bufid)
    {
      zb_zdo_mgmt_leave_res_t * p_resp = (zb_zdo_mgmt_leave_res_t*)zb_buf_begin(bufid);
      if (p_resp->status == ZB_ZDP_STATUS_SUCCESS)
      {
        DB_PRINT("send_leave_command_cb SUCCESS\r\n");
      }
      else
      {
        DB_PRINT("send_leave_command_cb error 0x%02x\r\n",p_resp->status);
      }
      zb_buf_free(bufid);
    }

    This is a Develco wind sensor. Here is the link to the datasheet: https://fccid.io/2AHNM-WISZB120/User-Manual/User-Manual-3694667

    No, it does not seem to be possible to modify it to implement the desired features.

    Regards,

    Anusha

  • Hi

    From what I can see, the device doesn't have an option for "leaving" except for by timeouts or factory resetting the device. Even though it says in the data sheet "In section 5 “MMI” it is explained how to put the device into a join or leave network mode" I've not been able to find how to put it in "leave network mode". You might want to contact the manufacturer to ask if the feature is included or not.

    Best regards,

    Simon

Related