- Global _xbee_cmd_release_request  (xbee_cmd_request_t FAR *request)
- add bounds checking on request to make sure it's in the table?  
- Global _xbee_handle_transmit_status  (xbee_dev_t *xbee, const void FAR *frame, uint16_t length, void FAR *context)
- Figure out what needs to happen with these frames. Does atcmd layer need to pass errors down to callbacks? Registered endpoints? Tracked conversations?  
- Global _zcl_onoff_handler  (const wpan_envelope_t FAR *envelope, void FAR *context)
- set the OnOff attribute to off and break  - set the OnOff attribute to on and break  - toggle the OnOff attribute and break   
- Global _zcl_send_read_from_zdo_match  (wpan_conversation_t FAR *conversation, const wpan_envelope_t FAR *envelope)
- support a flag in the client_read object for sending ZCL request to first endpoint in list (current behavior) or all endpoints (for example, to query ALL meter endpoints on ALL radios). - find a way to track whether frame came in from broadcast or unicast response – if unicast, can return WPAN_CONVERSATION_END   
- Global _zcl_write_attributes  (zcl_command_t *cmd)
- Generate error if command is not one of the three expected commands. - Update to limit number of status records in response.   
- Class addr64  
- update all addr64 variables and structure elements to end in _be (big-endian) or _le (little-endian) where appropriate. Add functions to convert 64-bit values between host byte order and big/little endian.  
- Global addr64_format  (char FAR *buffer, const addr64 FAR *address)
- Add a parameter to indicate big or little endian and update code to work with either. (for little-endian, b starts at address->b + 8 and is decremented) 
- File firmware.h  
- Create typedefs for xbee_fw_source_t read() and seek() handlers, write documentation including what the return values are. 
- File platform.h  
- find pre-processor macro to identify POSIX platform  
- File platform_config.h  
- need a configure script to find location of endian.h?  - figure out a way to handle XBEE_NATIVE_64BIT  - better way to determine timer resolution?   
- Global wpan_endpoint_send_fn  )(const wpan_envelope_t FAR *envelope, uint16_t flags)
- Add support for a broadcast radius? Don't send Tx Status? Use frame ID 0? - come up with standard error codes for the following possible errors? outbound frame buffer is full, invalid data in envelope, payload is too big   
- File xbee_atcmd.c  
- move xbee_cmd_simple and xbee_identify into xbee_device layer? - Add code to return an error (and disable the stack) if the XBee responds with an IEEE address not in Digi's allocation? - review todo list at the top of the file – lots to do  
- Global xbee_comm_SC  (zcl_comm_startup_param_t FAR *p, const void FAR *value_be)
- Depending on the value of StartupControl, the extended_panid attribute might be set from ID (extended PAN ID) or OP (operating PAN ID). 
- Global xbee_fw_read_byte  (xbee_fw_source_t *source)
- check return value of source->read here and in _uint16 and _uint32?  
- Global xbee_io_configure  (xbee_dev_t *xbee, xbee_io_t FAR *io, uint_fast8_t index, enum xbee_io_type type, const wpan_address_t FAR *address)
- : this is a relatively crude test. Need to look at hardware  
- Global xbee_io_response_parse  (xbee_io_t FAR *parsed, const void FAR *source)
- : the 0x0F constant is an artifact of the sharing of AD0-3 with  
- Global xbee_mktime  (struct tm *time_rec)
- Handle DST and time zones.  
- File xbee_platform_posix.c  
- Create a platform unit test, one that can verify that the millisecond timer doesn't run backwards and that it matches up accurately with the seconds timer (base it on the HCS08 regression).  
- File xbee_serial_posix.c  
- missing a way to hold Tx in break condition  - missing a way to hold Tx in break condition   
- File xbee_serial_rabbit.c  
- Need code to make sure IN and OUT buffers are large enough for XBee. Does the out buffer need to be large enough to hold an entire frame? 
- File xbee_sxa_socket.c  
- Need a better path MTU discovery mechanism. 
- File xbee_xmodem.c  
- Have timeout values adjust based on link latency. Start out with a high timeout (10 seconds?) and adjust down based on actual response time (maybe 150% of last ACK's delay?) Timeout for EOT should start at timeout value from last block.  
- File zcl64.h  
- add a ZCL64_SPLIT macro to split zcl64_t into high and low halves  
- Global zcl64_t  
- Actually code up support for 56-bit values like we did for 24 bit.  
- File zcl_basic.h  
- Explore how we would support the DeviceEnabled attribute. Does each application need to check it? Does the endpoint dispatcher need to know about it? What about clients?  
- Global zcl_comm_sas_is_valid  (const zcl_comm_state_t FAR *comm)
- add more tests to this function  
- File zcl_onoff.h  
- Write code to support OnOff commands. Create sample program demonstrating use of these clusters (perhaps using LEDs and switches of XBIB-U-DEV board). REQUIRES: need to have reporting in place before this cluster is really useful. Devices need to receive updates whenever switch status changes.  
- Global zcl_parse_attribute_record  (const zcl_attribute_base_t FAR *entry, zcl_attribute_write_rec_t *write_rec)
- should we set a flag in write_rec to indicate that the status was not success?  
- Global zdo_send_match_desc  (wpan_dev_t *dev, const uint16_t *clusters, uint16_t profile_id, wpan_response_fn callback, const void FAR *context)
- update API to allow for unicast request in addition to broadcast  
- File zigbee_zdo.c  
- Create a cluster table and have the ZDO_ENDPOINT() macro use it instead of having zdo_handler use a switch on cluster_id to call the handlers for each command.