Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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[device_id](data).

+write(deviceId, data): Issues a send command to that device_id

+create_device(read_function, device_port): 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. Return ID.

-device_dict: Dictionary {device_id: device object}. The first one is populated by calling the create_endpoint in the constructor.

-function_dict: Dictionary{device_id: function}, a dictionary of functions that the read callback can call once it 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
languagejson
{
  "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
languagejson
// 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

Exchanged Data

USB Protocol Overview

...