This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530: Zigbee Linux Gateway - Discover Manufacturer Specific Attributes

Part Number: CC2530


With regards to the Linux Zigbee Gateway

I realized that I should be using attribute discovery for improved Zigbee object handling.

However, the manufacturer specific attributes are not returned by the device (using "attr_get_attribute_list(...)" ).

This seems logiical as  "ZStatus_t zcl_SendDiscoverAttrsCmd(...)" in zlc.c does not set the manufacturer code.

Can this be done with a 'gw_send_zcl_frame_req__pack(...)' ?

How should I setup the 'GwSendZclFrameReq msg'  ?

I guess that I need to do something similar to get the command list (there is no "attr_get_command_list(...)") and in that case also handle the received ("raw") packets?

  • The other question is related.

    However, I added "attr_get_attribute_list()" once a new device is recognized.

    When it works (I do not always get the list back), I only get the standard attributes, not the manufactuerr specific attributes.  The list of manufacturer dependent attributes is dependent on the HW configuration of the Zigbee endpoint - I can not guess which ones are available and when requesting a non-existing attribute, I get no anwser back.  

    That is because the "manufacturer bit" is set to 0 in the ZCL command that is used by the gateway server.

    So it would be usefull to get a suggestion with regards to the raw command to send to amend this - possibly the gateway still decodes this for me.

    The other thing is that there is also a command discovery function which is not made available through the gateway API.  That works in a similar way, but I would need to decode the raw packets I get back.

    Thanks

    Mario

  • Try using GwSendZclFrameReq.

    This includes fields such as "manufacturerspecificflag", "has_manufacturercode", and "manufacturercode".

    Its "payload" field should should look like:

    msg.payload.len = 3;
    msg.payload.data = &payloadData[0];
    msg.payload.data[0] = startAttrID && 0xFF;
    msg.payload.data[1] = startAttrID >> 8;
    msg.payload.data[2] = maxAttrInRsp;