Redoing Wireless¶
Wireless programming (high level code) needs to be redone. (xbee.c should be mostly fine)
The UDP/TCP Approach - David - 11/2/09¶
- Implement basic UDP messaging
- Basic Idea
- Allows packets to be received by all robots on a channel
- No verification of success or failure
- Why this is a good thing
- Many things, like the sensor matrix data, should be sent to all robots anyway
- This avoids any delays caused by sending and checking for acks
- Implementation Details
- This is very simple, just change the packet destination to XBEE_BROADCAST
- Can send a string directly through xbee_send_packet()
- Basic Idea
- Implement pseudo-TCP messaging
- Basic Idea
- Reliability
- Error-free
- If we wanted, we could also do ordered data, congestion control, etc
- Why
- Wireless likes to drop packets, or otherwise have problems
- This would mostly take care of those issues
- Implementation Details
- Use something similar to TCP, but cut down the header size significantly
- If we consider each packet as a self-contained message and don't care about order, we don't have to open or close a connection, just make sure this packet number is unique
- Sending packets and checking acks/resending would be handled by the library
- For packet groups, would just need a character to distinguish the packet group and a receive handler.
- Basic Idea
Discussion - James, Chris, Brad, David, others - 11/4/09¶
- High Priority
- change channel for private communication
- for high bandwidth situations
- timeout with keepalives to reset channel
- separate robot and computer code
- shared headers, and separate headers and c files
- channel partition
- see XBee_channels
- Time-dependent
- some packets need to be handled immediately (token ring)
- trigger interrupt
- other packets can wait a bit
- some packets need to be handled immediately (token ring)
- Programming Header (1 byte)
- Group (5 bits)
- Priority (1 bit)
- (2 reserved bits)
- Do we need to worry about escaping characters?
- Remove packet type (only have group to differentiate packets)
- user can define other parameters and transmit them in the data
- Max Packet Length
- ~100 char buffer limit
- trigger interrupt if we reach the limit
- Handling Packets
- include default handlers for certain groups of packets
- ex) default sending/receiving strings, ColoNet,
- allow user to define their own groups and handlers
- handle response to sent packet within library
- attempt to resend packet if it was lost, etc...
- include default handlers for certain groups of packets