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.

ez430-rf2480 address

Hi guys I'm working with the eZ430-RF2480 evaluation kit.

I need to know where in the code the coordinator gives (or send) the short address to a device (routers and end-devices) that joined the network.

Also i need to know the max number of children and how depth the network can be. And where can i change these values?

My network is going to be very huge (about 145 devices) and i will need to know the address of each device, the topology are going to be a mesh so i haven't  the exact positions and bindings of the devices.

Thank you!

                                                

  • To the best of my knowledge, the short address is assigned during the ZB_START_REQUEST.  If you know the chip specific 64-bit IEEE Address, you can request the assigned short address using the ZDO_NWK_ADDR_REQ command.

  • I tried to find the assignment of the address in the zb_StartConfirm wich is the callback funtion of the zb_StartRequest but the coordinator don't use this part of code when a device joins the network. 

    Maybe i'm searching for it wrongly.

    How can i find the 64-bit address?

    the researches continues....

  • I believe that the assignment is done by the CC2480 processor, not the embedded application, therefore, it is not exposed within the application. 

    To read the 64-bit IEEE address or the assigned 16-bit address of the end-device, you can use the ZB_GET_DEVICE_INFO command within the end-device application.  The 64-bit IEEE address is preassigned and unique to each CC2480 chip, so you would only have to determine this once and then "mark" each board or otherwise ID them so that you know their "name".

    If you want the network coordinator to determine the 16-bit address it assigned to the node, you must know the 64-bit long address and use the ZB_FIND_DEVICE_REQUEST.

    Another approach may be for you to assign in the source code a unique ID for each device and then add the field into the application cluster so that you can parse incoming packets for the IDs assigned by your own method.

  • RFCE thank you very much!

    These commands make my life easy from now on!

    About the 64-bit address, i understood and liked your idea, but if my network is established and i need to substitue one node? i will have to reprogram my coordinator, right?

    Is there a way to do it without have to reprogram? 

    Thanks a lot!

  • Just a noob question, after executes the function zb_GetDeviceInfo(ZB_INFO_IEEE_ADDR) where the 64-bit address is stored?

    To find the 16-bit address of a device i use the zb_FindDeviceRequest(ZB_IEEE_SEARCH, ...) the ... supposed to be the 64-bit address that i don't know where it is stored.

    i was looking in zaccelMsgBuf, but i don't have sure about the positions (zaccelMsgBuf[1], zaccelMsgBuf[2].... etc).

    thank you again!

     

  • You could just read the bytes from zaccelMsgBuf that are returned, but zaccel.c provides an easier interface to extracting this information.  The zb_GetDeviceInfo request response is handled by zaccel.c, which calls a routine in sapi_cb.c called zb_GetDeviceInfoConfirm.  In the sapiRsp routine for the case MT_SAPI_GET_DEVICE_INFO_REQ, only the portion of the packet containing the data is send to the zb_GetDeviceInfoConfirm routine (zaccelMsgBuf[3] through zaccelMsgBuf[11]).   I suggest that you take a look at sapi_cb.c.

    The sample code provided only handles transferring the device state and 16-bit short address to application global variables, as these are the only two parameters ZASA uses.  The 16-bit address is sent to the global variable zaccelNwkAddr, which is declared in zaccel.h.  What you will have to do is declare another global variable or array (as the IEEE address is 64-bit) for the IEEE address, and then add code to the case for the ZB_INFO_IEEE_ADDR similar to that implemented in ZB_INFO_SHORT_ADDR.

  • Thank's again RFCE!

    Maybe the address implementation could be easy if i just understand how the short address is calculated for the devices.

    I taked a look in the Cskip algorithm, so here is my idea:

    When the coordinators receives a data from a node it gets the node address and function (router or end-device) by looking at zaccelMsgBuf, so with the Cskip algorithm it calculates how depth is the node in the network.

    It is like the Sensor Monitor displays the nodes positions, i think.

     

    With the correctly position, the coordinator will transmit the information by serial in its I/O pins to another hardware.

  • RFCE -- thanks for your continued help!

  • Hi RFCE,

    Thank you so much for your post. It's really helpful.