Is the XBee Programmable built-in ZDO/ZCL support thread-safe? Specifically if you define an attribute in
// in zcl_attribute_base_t: /// Pointer to global variable of correct type, set as \c const to allow /// for both const and non-const values. (If \c const, flags should be /// include #ZCL_ATTRIB_FLAG_READONLY.) If NULL, the ZCL stack will /// respond to attempts to read/write with ZCL_STATUS_DEFINED_OUT_OF_BAND. const void FAR *value;
I’m asking in the event that the attribute is say 32 bits. What do I need to do to ensure that it’s returned atomically?
One specific example I have is a 32-bit event counter. It can incremented from my foreground (main state machine) or from a GPIO interrupt. When I access it from the foreground state machine I turn some interrupts off first. What I don’t really understand (and the root of this question) is interaction and thread safety issues within the ZDO/ZCL code e.g. the “general” handler.