...
XBee Interface |
---|
+read_callback(): Sets up a callback that is executed when a message is recieved. self.function_dict is a dictionary of functions which are called when a message is receieved. When you get a message, decode it then call self.functionDict['main'device_id](data). +write(deviceId, data): Issues a send command to that device_id +create_device(read_function, device_dictport): This function should perform steps 2-3 from the tutorial, then call use add_data_recieved_callback, like in this tutorial to register read_callback as the callback function, then store the created xbee device in a dictionary with the ID as the key, {0: device, …}. Then it should set self.functionDict[device_id] = read_function_dict. Return ID. |
-endpointsdevice_dict: Dictionary {deviceIddevice_id: device object}. The first one is populated by calling the create_endpoint in the constructor. -functionDictfunction_dict: Dictionary{namedevice_id: function}, a dictionary of functions that the read callback can call once it recieves receives a message, mapped by device_id. The default will just be {'main': main_read(…)} where main_read is whatever function is used in the GroundConnRecieve module. |
Schema
To ensure ease of communication, we’ll define a specific schema for messages being sent out from the jetson as a request and messages being received by the jetson as a response. Therefore, any call to FltConnSend or GroundSend or FltConnReceive or FltConnSend will follow this schema.
Request/Response Schema (General):
Code Block | ||
---|---|---|
| ||
{
"type": “QR_COORDINATES” | “QR_INFO”| “TARGET_COORDINATES” | "STATE_INFO", // Limited to a specific list of types
"data": {...} // Dictionary whose schema depends on request type
} |
Valid Types:
Request: “QR_COORDINATES”, “QR_INFO”, “TARGET_COORDINATES”
Response: “STATE_INFO”
Schemas by type
Schema for QR_COORDINATES, TARGET_COORDINATES and STATE_INFO are based off encodings with flight controller found here. Schema for QR_Info is also defined in CONOPS for 2021-2022.
Code Block | ||
---|---|---|
| ||
// QR_COORDINATES and TARGET_COORDINATES
{
lattitude: double,
longtitude: double
}
// QR_INFO
{
info: string, // Encompasses the second line of the QR scan result
date: string,
time: string,
device_id: string,
sensor_id: string
}
//STATE_INFO
{
lattitude: double,
longtitude: double,
altitude: double,
yaw: double,
pitch: double,
roll: double
} |
Reference
...