Dataflow
Current version

Sensor node
- Goes through deep sleep cycles
- Header content:
- Measurement ID: Random number / guid / use watchdog timer time
- Measurement type
- Sample period
- Seq ID: custom packet id (assigned by us)
Root node
- Organizes the packets received from different nodes into a array of structures
- Once a complete measurement is received from a node, that data is sent to the socket server and data is cleared from the memory
- If server connection is
IP SOCKET:- Keeps a socket connection open and send every complete measurement it received
- If server connection is
USB:- Keeps a USB connection open and sends measurements as they are received.
- Header contains:
- uint8_t MESH_ID[6];
- uint8_t mac_addr[6];
- uint8_t measurement_type;
- Timeout for measurement packets from a node
Deep_Vibe Server
- Keeps a
USBorIP SOCKETconenction open for receiving data. - Reads the data and parse the data to reconstruct the measurement information
Version 1
Idea behind current implementation was reducing the processing overhead in the root node. It just passes on the packetes received from leaf nodes to the socket server.

Leaf Node
- Sampling rate: 1KHz
- Send 12 packets of 1024 byte datapackets per each measurement
- Samples sent every 1 minute
Root Node
- If socket connection is not responding, open a new socket client.
- Reads packets received from Mesh and passes that to socket server.
- No any other processing
Socket Server
- Reads in data till 12288 bytes are recieved.
- Continue to process data.
- Closes and open a new socket connection.
Issues:
- Can not handle multiple nodes
- Packet losses due to timing conflicts in the root node as data is not queued.
Version 2
Root node keeps a list of actively communicating nodes at the moment and sends data to socket server once a complete measurement is recieved.

Leaf node
Header content:
- Measurement ID: Random number / guid / use watchdog timer time
I'm using a random number - Seq ID: custom packet id (assigned by us)
- Measurement ID: Random number / guid / use watchdog timer time
Root node
- Organizes the packets received from different nodes into a array of structures
- Once a complete measurement is received from a node, that data is sent to the socket server and data is cleared from the memory
- Opens a socket connection
- Sends the whole measurement including the new header in to the connection
- Closes the connection
- Mac-ID of the origin node is sent as a header with each socket payload.
- Timeout for measurement packets from a node
Socket Server
- Waits for new socket connection
- Reads the data and parse to rebuild the MAC-ID and measurement.
- Closes the connection
- Associate time information