Proto commits in nasa/meshNetwork

These 10 commits are when the Protocol Buffers files have changed:

Commit:ff4bd66
Author:Chris Becker

Moved node configuration proto file into interface folder. Minor updates to MeshController from unit testing.

The documentation is generated from this commit.

Commit:5d538ea
Author:Chris Becker

Updated python demo execution script to match new mesh interface.

Commit:0ed7297
Author:Chris Becker

-Added limits for maximum admin bytes size in mesh packet (adminBytesMaxLength) and maximum payload bytes size (msgPayloadMaxLength) in a packet. These are both configurable parameters. During the admin period, the maximum admin bytes size in the packet is equal to the sum of these two parameters since only admin bytes will be transmitted. -Corrected bug in UDPRadio. Bufsize argument to recvfrom method was incorrectly sized. -Reimplemented maximum network slot transmission limit. Limit is enforced in the sendMsgs method of TDMAComm by limiting the total output to be less than maxTransferSize config parameter. Once the limit is reached, pending messages in meshQueueIn will have to wait until the next frame for transmission. For admin period transmission, the maximum output is already limited by the admin bytes limitation since only one message will be sent.

Commit:f22951d
Author:Chris Becker

Added block transmit parameters to NodeConfig.

Commit:724ded5
Author:Chris Becker

-Implemented TDMA admin period. Admin period control is rotated in sequence to each node. Admin period is used to send large mesh administration messages, so that slot bandwidth is not used up by network adminstration. Admin period is also used for block transmit. -Added TDMA admin configuration and poll timeout parameters to NodeConfig. -Initial implementation of block transmit functionality. Host sends a block request to its node. The node then issues a block transmit request to the network. If the request is accepted, the sending node breaks the block into packets which are received by the other nodes. Packet receipts are sent back to the sending node for all received packets. If a receipt is not received, the sending node will resend the packet. Once the entire block is received, the receiving nodes will reassemble the block from the individual packets and pass to their hosts if they are the intended destination. Currently block transmits are single hop only, meaning the destination must be within a single hop from the sender to receive the block. Multi-hop functionality is forward work. -Modified getMsgs method of MeshController to facilite returning different message types. It now returns a list with entries of type MeshMsg. MeshMsgs can be data blocks, standard mesh received bytes, or mesh status messages. -Removed capability to detect and end mesh reads early. Functionality was implemented by adding a specific end byte and scanning all read bytes for that byte. Implementation was inefficient and has limited value for mesh configurations with short slots. Could potentially be useful if slots were longer. Will explore a better implementation if functionality is requested in the future.

Commit:8df5209
Author:Chris Becker

-Renamed existing sendMsg method in TDMAComm to sendMsgs so that it wasn't overrding method of same name in parent class SerialComm. -Created MeshController to act as higher level interface for controlling mesh network actions and user interaction to TDMAComm. -Implemented network polling functionality to allow the network to make decisions on whether to perform commanded options. Currently all polling must be unanimous for the action to be implemented. ConfigUpdate and NetworkRestart commands are the commands currently subject to network poll. Poll answers are sent via the CmdResponse command. -Updated NodeConfig with methods to allow for configuration updates. Configuration updates are transmitted as serial data using Protocol Buffers. -Refactored message processors moving some of the initial parsing into SerialComm. This allows the message processors to be used without having to have fully serialized command data. -Refactored deserialize methods to handle command data that has raw bytes elements, like the ConfigUpdate command. deserialize can now return parsed and raw portions of the command. -Modified config update methods of NodeParams to return new config instead of storing it. This was part of the network polling implementation. Also added network restart fields to implement mesh network restart functionality. -Added command response queue in NodeParams to store received polling responses before processing by MeshController.

Commit:6e56de5
Author:Chris Becker

-Updated NodeThreadMsg protocol buffer message definition to interface with updated TDMAComm messaging interface. -Added DemoController class to demonstrate use of new TDMAComm messaging interface.

Commit:89d32a0
Author:Chris Becker

Adding C++ mesh network implementation. Also moved protocol buffer interface code up out of the python directory.

Commit:4207642
Author:Chris Becker

Moving Python code into separate directory.

Commit:cab6879
Author:Chris Becker

Adding python generic mesh code and unittests.