Quick Details
| Property | Value |
|---|---|
| Class | Device |
| Namespace | cubesat |
| Files | Device.h |
| DeviceDetail.h | |
| Device.cpp |
Note: this wiki page only includes important features of the Device class. For the full documentation, see Doxygen Documentation.
Description
The Device class is a base (i.e. parent or super) class of various types. The devices have various properties which can be posted, meaning that they can be viewed externally (e.g. through a terminal or [[COSMOS Web]]). If a device doesn't have the properties necessary, custom properties can be used instead, although they cannot be posted. And if there isn't a supported device you need, you can always use the CustomDevice device type to hold custom properties (again, these cannot be posted).
Functions
Declaration:
template <typename T> void Post(T property);
Posts the given property, making it viewable externally. This must be one of the properties that is predefined by the device.
Declaration:
template <typename T> void SetCustomProperty(string name, T value);
Stores a custom property with the given name and value. The template parameter T corresponds to the storage type.
Declaration:
template <typename T> T& GetCustomProperty(string name);
Retrieves a previously-set custom variable with the given name and type T. If the type T does not match the one used to set the property, or the property was not previously set, an exception will be thrown.
Supported Device Types
Below are the supported device types. Note that in the last column of each table, the XXX indicates the COSMOS device number.
All of these devices below can accept custom properties, although these properties cannot be posted (i.e. viewed externally).
TemperatureSensor
The TemperatureSensor device corresponds to a temperature sensor. In the Artemis CubeSat, the ADT7311 is used.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_tsen_utc_XXX |
| Temperature | temperature |
float |
device_tsen_temp_XXX |
| Voltage | voltage |
float |
device_tsen_volt_XXX |
| Current | current |
float |
device_tsen_amp_XXX |
| Power | power |
float |
device_tsen_power_XXX |
| Enabled | enabled |
bool |
device_tsen_enabled_XXX |
SunSensor
The SunSensor device corresponds to a sun sensor. In the Artemis CubeSat, the OPT3001 is used.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_ssen_utc_XXX |
| Temperature | temperature |
float |
device_ssen_temp_XXX |
| Voltage | voltage |
float |
device_ssen_volt_XXX |
| Current | current |
float |
device_ssen_amp_XXX |
| Power | power |
float |
device_ssen_power_XXX |
| Enabled | enabled |
bool |
device_ssen_enabled_XXX |
Heater
The Heater device corresponds to a heater.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_htr_utc_XXX |
| Temperature | temperature |
float |
device_htr_temp_XXX |
| Voltage | voltage |
float |
device_htr_volt_XXX |
| Current | current |
float |
device_htr_amp_XXX |
| Power | power |
float |
device_htr_power_XXX |
| Enabled | enabled |
bool |
device_htr_enabled_XXX |
IMU
The IMU device corresponds to an IMU (inertial measurement unit). In the Artemis CubeSat, the BMX160 is used.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_imu_utc_XXX |
| Temperature | temperature |
float |
device_imu_temp_XXX |
| Voltage | voltage |
float |
device_imu_volt_XXX |
| Current | current |
float |
device_imu_amp_XXX |
| Power | power |
float |
device_imu_power_XXX |
| Enabled | enabled |
bool |
device_imu_enabled_XXX |
| Magnetic Field | magnetic_field |
Vec3 |
device_imu_mag_XXX |
| Linear Acceleration | acceleration |
Vec3 |
device_imu_accel_XXX |
| Angular Acceleration | angular_acceleration |
Vec3 |
device_imu_omega_XXX |
GPS
The GPS device corresponds to a GPS (global positioning system).
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_gps_utc_XXX |
| Temperature | temperature |
float |
device_gps_temp_XXX |
| Voltage | voltage |
float |
device_gps_volt_XXX |
| Current | current |
float |
device_gps_amp_XXX |
| Power | power |
float |
device_gps_power_XXX |
| Enabled | enabled |
bool |
device_gps_enabled_XXX |
| Satellites Used | satellites_used |
int |
device_gps_sats_used_XXX |
| Latitude/Longitude/Altitude | location |
Location |
device_gps_geods_XXX |
| Velocity | velocity |
Vec3 |
device_gps_geocv_XXX |
Battery
The Battery device corresponds to a battery. In the Artemis CubeSat, the LG MJ1 18650 is used.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_batt_utc_XXX |
| Temperature | temperature |
float |
device_batt_temp_XXX |
| Voltage | voltage |
float |
device_batt_volt_XXX |
| Current | current |
float |
device_batt_amp_XXX |
| Power | power |
float |
device_batt_power_XXX |
| Enabled | enabled |
bool |
device_batt_enabled_XXX |
| Percentage | percentage |
float |
device_batt_percentage_XXX |
| Capacity | capacity |
float |
device_batt_cap_XXX |
| Efficiency | efficiency |
float |
device_batt_efficiency_XXX |
| Time Remaining | time_remaining |
float |
device_batt_time_remaining_XXX |
RadioTransceiver
The RadioTransceiver device corresponds to a radio transceiver. In the Artemis Cubesat, the RFM98PW is used.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_tcv_utc_XXX |
| Temperature | temperature |
float |
device_tcv_temp_XXX |
| Voltage | voltage |
float |
device_tcv_volt_XXX |
| Current | current |
float |
device_tcv_amp_XXX |
| Power | power |
float |
device_tcv_power_XXX |
| Enabled | enabled |
bool |
device_tcv_enabled_XXX |
| Frequency | frequency |
float |
device_tcv_freq_XXX |
| Maximum Frequency | max_frequency |
float |
device_tcv_maxfreq_XXX |
| Minimum Frequency | min_frequency |
float |
device_tcv_minfreq_XXX |
| Power In | power_in |
float |
device_tcv_powerin_XXX |
| Power Out | power_out |
float |
device_tcv_powerout_XXX |
| Max Power | max_power |
float |
device_tcv_maxpower_XXX |
| Good Packet Count | good_packet_count |
int |
device_tcv_goodcnt_XXX |
| Bad Packet Count | bad_packet_count |
float |
device_tcv_badcnt_XXX |
CPU
The CPU device corresponds to a CPU (central processing unit).
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_cpu_utc_XXX |
| Temperature | temperature |
float |
device_cpu_temp_XXX |
| Voltage | voltage |
float |
device_cpu_volt_XXX |
| Current | current |
float |
device_cpu_amp_XXX |
| Power | power |
float |
device_cpu_power_XXX |
| Enabled | enabled |
bool |
device_cpu_enabled_XXX |
| Up Time | up_time |
int |
device_cpu_uptime_XXX |
| Boot Count | boot_count |
int |
device_cpu_boot_count_XXX |
| Load | load |
float |
device_cpu_load_XXX |
| Maximum Load | max_load |
float |
device_cpu_maxload_XXX |
| Memory Use | memory_usage |
float |
device_cpu_gib_XXX |
| Maximum Memory Use | max_memory |
float |
device_cpu_maxgib_XXX |
Camera
The Camera device corresponds to a camera. In the Artemis Cubesat, the Raspberry Pi Camera Module V2 is used.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_cam_utc_XXX |
| Temperature | temperature |
float |
device_cam_temp_XXX |
| Voltage | voltage |
float |
device_cam_volt_XXX |
| Current | current |
float |
device_cam_amp_XXX |
| Power | power |
float |
device_cam_power_XXX |
| Enabled | enabled |
bool |
device_cam_enabled_XXX |
| Pixel Width | pixel_width |
int |
device_cam_pwidth_XXX |
| Pixel Height | pixel_height |
int |
device_cam_pheight_XXX |
| Width | width |
float |
device_cam_width_XXX |
| Height | height |
float |
device_cam_height_XXX |
| Focal Length | focal_length |
float |
device_cam_flength_XXX |
Switch
The Switch device corresponds to an electrical switch.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_swch_utc_XXX |
| Temperature | temperature |
float |
device_swch_temp_XXX |
| Voltage | voltage |
float |
device_swch_volt_XXX |
| Current | current |
float |
device_swch_amp_XXX |
| Power | power |
float |
device_swch_power_XXX |
| Enabled | enabled |
bool |
device_swch_enabled_XXX |
CustomDevice
The CustomDevice device can correspond to any device that does not fit into the COSMOS namespace.
| Supported Properties | Member Name | Storage Type | COSMOS Name |
|---|---|---|---|
| UTC Timestamp | utc |
double or Time |
device_pload_utc_XXX |
| Temperature | temperature |
float |
device_pload_temp_XXX |
| Voltage | voltage |
float |
device_pload_volt_XXX |
| Current | current |
float |
device_pload_amp_XXX |
| Power | power |
float |
device_pload_power_XXX |
| Enabled | enabled |
bool |
device_pload_enabled_XXX |