2021-04-06 11:12 PM
I know there is no simple answer to the above question. It depends on how many packets my network is sending. Maybe there is a formula predicting the number of nodes in the network where I know what data is sent and how often. I want to know if my network can work with 10, 100 or 1000 nodes. Any suggestions on how to calculate this?
2021-04-07 01:20 AM
In fact, it is mainly a question linked to the memory you are ready to allocate in your final application. Through ZbInit(..), you can tune the different table sizes used to manage the mesh network and you can also tune the heap used by the stack.
In your case, more you have end devices directly connected to your Coordinator, more your will need to increase the Neighbor Table size (NNT). If your application requires a lot of endpoints, which the stack needs to service through the ZDO layer, you may also need additional heap memory but with the default value (32K on FFD) it should be sufficient to cover most of the cases.
When you start the stack, you need to call the function Zbinit(..)
ZbInit(uint64_t extAddr, struct ZbInitTblSizesT *tblSizes, struct ZbInitSetLoggingT *setLogging);
According to the values you enter inside *tblSizes, you can tune the size of your network and the heap.
If you don’t define tblSizes and you pass NULL inside, the default values of the tables are as follow
o nwkNeighborTblSz - NWK neighbor table size (default = 64)
o nwkRouteTblSz - NWK routing table size (default = 32)
o nwkAddrMapTblSz - NWK address map table (default = 32)
o nwkBttSz - NWK broadcast transaction table (default = 32)
o nwkRReqSz - NWK route request table (default = 16)
o apsPeerLinkKeyTblSz - APS link key table (default = 32)
o heap (default used is 32KB for a FFD.
2021-04-07 02:10 AM
I want to build a network without end devices. Should your memory advice apply to routers as well?
2023-01-18 01:29 AM