canlib

struct can_msg_t

Public Members

can_sid_t sid
uint8_t data_len
uint8_t data[8]
struct can_timing_t

Public Members

uint8_t brp
uint8_t sjw
uint8_t sam
uint8_t seg1ph
uint8_t seg2ph
uint8_t prseg
bool btlmode
file can.h
#include <stdbool.h>
#include <stdint.h>

Defines

CANLIB_BIT_TIME_US

Typedefs

typedef uint32_t can_sid_t
file msg_actuator.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Functions

bool build_actuator_cmd_msg(can_msg_prio_t prio, uint16_t timestamp, can_actuator_id_t actuator_id, can_actuator_state_t actuator_cmd, can_msg_t *output)
bool build_actuator_analog_cmd_msg(can_msg_prio_t prio, uint32_t timestamp, can_actuator_id_t actuator_id, uint16_t actuator_cmd, can_msg_t *output)
bool build_actuator_status_msg(can_msg_prio_t prio, uint16_t timestamp, can_actuator_id_t actuator_id, can_actuator_state_t actuator_curr_state, can_actuator_id_t actuator_cmd_state, can_msg_t *output)
int get_actuator_id(const can_msg_t *msg)
int get_curr_actuator_state(const can_msg_t *msg)
int get_cmd_actuator_state(const can_msg_t *msg)
uint16_t get_cmd_actuator_state_analog(const can_msg_t *msg)
file msg_common.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Defines

BOARD_TYPE_UNIQUE_ID
BOARD_INST_UNIQUE_ID
SID(prio, msg)

Functions

void write_timestamp_2bytes(uint16_t timestamp, can_msg_t *output)
can_msg_type_t get_message_type(const can_msg_t *msg)
uint8_t get_board_type_unique_id(const can_msg_t *msg)
uint8_t get_board_inst_unique_id(const can_msg_t *msg)
uint16_t get_timestamp(const can_msg_t *msg)
file msg_general.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Functions

bool build_general_board_status_msg(can_msg_prio_t prio, uint16_t timestamp, uint32_t general_error_bitfield, uint16_t board_specific_error_bitfield, can_msg_t *output)
bool build_reset_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t board_type_id, uint8_t board_inst_id, can_msg_t *output)
bool build_debug_raw_msg(can_msg_prio_t prio, uint16_t timestamp, const uint8_t *data, can_msg_t *output)
bool build_config_set_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t board_type_id, uint8_t board_inst_id, uint16_t config_id, uint16_t config_value, can_msg_t *output)
bool build_config_status_msg(can_msg_prio_t prio, uint16_t timestamp, uint16_t config_id, uint16_t config_value, can_msg_t *output)
bool get_general_board_status(const can_msg_t *msg, uint32_t *general_error_bitfield, uint16_t *board_specific_error_bitfield)
bool get_reset_board_id(const can_msg_t *msg, uint8_t *board_type_id, uint8_t *board_inst_id)
bool check_board_need_reset(const can_msg_t *msg)
bool get_debug_raw_data(const can_msg_t *msg, uint8_t *data)
bool get_config_set_target_board(const can_msg_t *msg, uint8_t *board_type_id, uint8_t *board_inst_id)
bool get_config_id_value(const can_msg_t *msg, uint16_t *config_id, uint16_t *config_value)
file msg_gps.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Functions

bool build_gps_time_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t utc_hours, uint8_t utc_mins, uint8_t utc_secs, uint8_t utc_dsecs, can_msg_t *output)
bool build_gps_lat_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t degrees, uint8_t minutes, uint16_t dminutes, uint8_t direction, can_msg_t *output)
bool build_gps_lon_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t degrees, uint8_t minutes, uint16_t dminutes, uint8_t direction, can_msg_t *output)
bool build_gps_alt_msg(can_msg_prio_t prio, uint16_t timestamp, uint16_t altitude, uint8_t daltitude, uint8_t units, can_msg_t *output)
bool build_gps_info_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t num_sat, uint8_t quality, can_msg_t *output)
bool get_gps_time(const can_msg_t *msg, uint8_t *utc_hours, uint8_t *utc_mins, uint8_t *utc_secs, uint8_t *utc_dsecs)
bool get_gps_lat(const can_msg_t *msg, uint8_t *degrees, uint8_t *minutes, uint16_t *dminutes, uint8_t *direction)
bool get_gps_lon(const can_msg_t *msg, uint8_t *degrees, uint8_t *minutes, uint16_t *dminutes, uint8_t *direction)
bool get_gps_alt(const can_msg_t *msg, uint16_t *altitude, uint8_t *daltitude, uint8_t *units)
bool get_gps_info(const can_msg_t *msg, uint8_t *num_sat, uint8_t *quality)
file msg_recovery.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Functions

bool build_alt_arm_cmd_msg(can_msg_prio_t prio, uint16_t timestamp, can_altimeter_id_t alt_id, can_alt_arm_state_t arm_cmd, can_msg_t *output)
bool build_alt_arm_status_msg(can_msg_prio_t prio, uint16_t timestamp, can_altimeter_id_t alt_id, can_alt_arm_state_t arm_state, uint16_t v_drogue, uint16_t v_main, can_msg_t *output)
bool get_alt_arm_state(const can_msg_t *msg, can_altimeter_id_t *alt_id, can_alt_arm_state_t *arm_state)
bool get_pyro_voltage_data(const can_msg_t *msg, uint16_t *v_drogue, uint16_t *v_main)
file msg_sensor.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Functions

bool build_temp_data_msg(can_msg_prio_t prio, uint16_t timestamp, uint8_t sensor_num, int32_t temp, can_msg_t *output)
bool build_altitude_data_msg(can_msg_prio_t prio, uint16_t timestamp, int32_t altitude, can_apogee_state_t apogee_state, can_msg_t *output)
bool build_imu_data_msg(can_msg_prio_t prio, uint16_t timestamp, char axis, can_imu_id_t imu_id, uint16_t linear_accel, uint16_t angular_velocity, can_msg_t *output)
bool build_mag_data_msg(can_msg_prio_t prio, uint16_t timestamp, char axis, can_imu_id_t imu_id, uint16_t mag_value, can_msg_t *output)
bool build_baro_data_msg(can_msg_prio_t prio, uint16_t timestamp, can_imu_id_t imu_id, uint32_t pressure, uint16_t temp, can_msg_t *output)
bool build_analog_data_msg(can_msg_prio_t prio, uint16_t timestamp, can_analog_sensor_id_t sensor_id, uint16_t sensor_data, can_msg_t *output)

Build an analog sensor data CAN message.

Parameters:
  • prio – Message priority

  • timestamp – 16 bits timestamp generated by millis() function

  • sensor_id – Sensor ID

  • sensor_data – 16 bits sensor data, unit is depends on sensor ID

  • output – Buffer for generated CAN message

Returns:

true is message is generated correctly

bool is_sensor_data(const can_msg_t *msg)
bool get_temp_data(const can_msg_t *msg, uint8_t *sensor_num, int32_t *temp)
bool get_altitude_data(const can_msg_t *msg, int32_t *altitude, can_apogee_state_t *apogee_state)
bool get_imu_mag_id_dimension(const can_msg_t *msg, can_imu_id_t *imu_id, char *dimension)
bool get_imu_data(const can_msg_t *msg, uint16_t *linear_accel, uint16_t *angular_velocity)
bool get_mag_data(const can_msg_t *msg, uint16_t *mag_value)
bool get_baro_data(const can_msg_t *msg, can_imu_id_t *imu_id, uint32_t *pressure, uint16_t *temp)
bool get_analog_data(const can_msg_t *msg, can_analog_sensor_id_t *sensor_id, uint16_t *output_data)
file msg_state_est.h
#include <stdbool.h>
#include <stdint.h>
#include “can.h
#include “message_types.h

Functions

bool build_state_est_data_msg(can_msg_prio_t prio, uint16_t timestamp, can_state_est_id_t state_id, const float *state_data, can_msg_t *output)
bool get_state_est_data(const can_msg_t *msg, can_state_est_id_t *state_id, float *state_data)
file message_types.h

Enums

enum can_msg_prio_t

Values:

enumerator PRIO_HIGHEST
enumerator PRIO_HIGH
enumerator PRIO_MEDIUM
enumerator PRIO_LOW
enum can_msg_type_t

Values:

enumerator MSG_GENERAL_BOARD_STATUS
enumerator MSG_RESET_CMD
enumerator MSG_DEBUG_RAW
enumerator MSG_CONFIG_SET
enumerator MSG_CONFIG_STATUS
enumerator MSG_ACTUATOR_CMD
enumerator MSG_ACTUATOR_ANALOG_CMD
enumerator MSG_ACTUATOR_STATUS
enumerator MSG_ALT_ARM_CMD
enumerator MSG_ALT_ARM_STATUS
enumerator MSG_SENSOR_TEMP
enumerator MSG_SENSOR_ALTITUDE
enumerator MSG_SENSOR_IMU_X
enumerator MSG_SENSOR_IMU_Y
enumerator MSG_SENSOR_IMU_Z
enumerator MSG_SENSOR_MAG_X
enumerator MSG_SENSOR_MAG_Y
enumerator MSG_SENSOR_MAG_Z
enumerator MSG_SENSOR_BARO
enumerator MSG_SENSOR_ANALOG
enumerator MSG_GPS_TIMESTAMP
enumerator MSG_GPS_LATITUDE
enumerator MSG_GPS_LONGITUDE
enumerator MSG_GPS_ALTITUDE
enumerator MSG_GPS_INFO
enumerator MSG_STATE_EST_DATA
enumerator MSG_LEDS_ON
enumerator MSG_LEDS_OFF
enumerator MSG_ID_ENUM_MAX
enum can_board_type_id_t

Values:

enumerator BOARD_TYPE_ID_ANY
enumerator BOARD_TYPE_ID_INJ_SENSOR
enumerator BOARD_TYPE_ID_CANARD_MOTOR
enumerator BOARD_TYPE_ID_CAMERA
enumerator BOARD_TYPE_ID_POWER
enumerator BOARD_TYPE_ID_LOGGER
enumerator BOARD_TYPE_ID_PROCESSOR
enumerator BOARD_TYPE_ID_TELEMETRY
enumerator BOARD_TYPE_ID_GPS
enumerator BOARD_TYPE_ID_SRAD_GNSS
enumerator BOARD_TYPE_ID_ALTIMETER
enumerator BOARD_TYPE_ID_ARMING
enumerator BOARD_TYPE_ID_PAY_SENSOR
enumerator BOARD_TYPE_ID_PAY_MOTOR
enumerator BOARD_TYPE_ID_RLCS_GLS
enumerator BOARD_TYPE_ID_RLCS_RELAY
enumerator BOARD_TYPE_ID_DAQ
enum can_board_inst_id_t

Values:

enumerator BOARD_INST_ID_ANY
enumerator BOARD_INST_ID_GROUND
enumerator BOARD_INST_ID_ROCKET
enumerator BOARD_INST_ID_PAYLOAD
enum can_board_inst_id_canard_motor_t

Values:

enumerator BOARD_INST_ID_CANARD_MOTOR_PRIMARY
enumerator BOARD_INST_ID_CANARD_MOTOR_FAILSAFE
enum can_board_inst_id_camera_t

Values:

enumerator BOARD_INST_ID_CAMERA_CANARD_A
enumerator BOARD_INST_ID_CAMERA_CANARD_B
enumerator BOARD_INST_ID_CAMERA_RECOVERY
enum can_actuator_id_t

Values:

enumerator ACTUATOR_OX_INJECTOR_VALVE
enumerator ACTUATOR_FUEL_INJECTOR_VALVE
enumerator ACTUATOR_ROCKET_CHARGE_ENABLE
enumerator ACTUATOR_PAYLOAD_CHARGE_ENABLE
enumerator ACTUATOR_5V_RAIL_ROCKET
enumerator ACTUATOR_5V_RAIL_PAYLOAD
enumerator ACTUATOR_12V_RAIL_ROCKET
enumerator ACTUATOR_12V_RAIL_PAYLOAD
enumerator ACTUATOR_TELEMETRY
enumerator ACTUATOR_CAMERA_CANARD_A
enumerator ACTUATOR_CAMERA_CANARD_B
enumerator ACTUATOR_CAMERA_RECOVERY
enumerator ACTUATOR_CAMERA_PAYLOAD
enumerator ACTUATOR_PROC_ESTIMATOR_INIT
enumerator ACTUATOR_SRAD_ALT_ESTIMATOR_INIT
enumerator ACTUATOR_SRAD_ALT_GPS_RESET
enumerator ACTUATOR_CANARD_ENABLE
enumerator ACTUATOR_CANARD_ANGLE
enumerator ACTUATOR_PAYLOAD_MOTOR_ENABLE
enumerator ACTUATOR_PAYLOAD_LOGGING_ENABLE
enumerator ACTUATOR_ENUM_MAX
enum can_actuator_state_t

Values:

enumerator ACT_STATE_ON
enumerator ACT_STATE_OFF
enumerator ACT_STATE_UNK
enumerator ACT_STATE_ILLEGAL
enumerator ACT_STATE_ENUM_MAX
enum can_altimeter_id_t

Values:

enumerator ALTIMETER_ROCKET_RAVEN
enumerator ALTIMETER_ROCKET_STRATOLOGGER
enumerator ALTIMETER_ROCKET_SRAD
enumerator ALTIMETER_PAYLOAD_RAVEN
enumerator ALTIMETER_PAYLOAD_STRATOLOGGER
enumerator ALTIMETER_ENUM_MAX
enum can_alt_arm_state_t

Values:

enumerator ALT_ARM_STATE_DISARMED
enumerator ALT_ARM_STATE_ARMED
enumerator ALT_ARM_STATE_ENUM_MAX
enum can_imu_id_t

Values:

enumerator IMU_PROC_ALTIMU10
enumerator IMU_PROC_MTI630
enumerator IMU_PROC_LSM6DSO32
enumerator IMU_SRAD_ALT_ALTIMU10
enumerator IMU_ENUM_MAX
enum can_analog_sensor_id_t

Values:

enumerator SENSOR_5V_VOLT
enumerator SENSOR_5V_CURR
enumerator SENSOR_12V_VOLT
enumerator SENSOR_12V_CURR
enumerator SENSOR_CHARGE_VOLT
enumerator SENSOR_CHARGE_CURR
enumerator SENSOR_BATT_VOLT
enumerator SENSOR_BATT_CURR
enumerator SENSOR_MOTOR_CURR
enumerator SENSOR_RADIO_CURR
enumerator SENSOR_GPS_CURR
enumerator SENSOR_LOCAL_CURR
enumerator SENSOR_PT_CHANNEL_0
enumerator SENSOR_PT_CHANNEL_1
enumerator SENSOR_PT_CHANNEL_2
enumerator SENSOR_PT_CHANNEL_3
enumerator SENSOR_PT_CHANNEL_4
enumerator SENSOR_HALL_CHANNEL_0
enumerator SENSOR_BARO_PRESSURE
enumerator SENSOR_BARO_TEMP
enumerator SENSOR_RA_BATT_VOLT_1
enumerator SENSOR_RA_BATT_VOLT_2
enumerator SENSOR_RA_BATT_CURR_1
enumerator SENSOR_RA_BATT_CURR_2
enumerator SENSOR_RA_MAG_VOLT_1
enumerator SENSOR_RA_MAG_VOLT_2
enumerator SENSOR_FPS
enumerator SENSOR_CANARD_ENCODER_1
enumerator SENSOR_CANARD_ENCODER_2
enumerator SENSOR_PROC_FLIGHT_PHASE_STATUS
enumerator SENSOR_PAYLOAD_LIM_1
enumerator SENSOR_PAYLOAD_LIM_2
enumerator SENSOR_PAYLOAD_SERVO_DIRECTION
enumerator SENSOR_PAYLOAD_INFRARED
enumerator SENSOR_HALL_CHANNEL_1
enumerator SENSOR_HALL_CHANNEL_2
enumerator SENSOR_ENUM_MAX
enum can_state_est_id_t

Values:

enumerator STATE_ID_ATT_Q0
enumerator STATE_ID_ATT_Q1
enumerator STATE_ID_ATT_Q2
enumerator STATE_ID_ATT_Q3
enumerator STATE_ID_RATE_WX
enumerator STATE_ID_RATE_WY
enumerator STATE_ID_RATE_WZ
enumerator STATE_ID_VEL_VX
enumerator STATE_ID_VEL_VY
enumerator STATE_ID_VEL_VZ
enumerator STATE_ID_ALT
enumerator STATE_ID_COEFF_CL
enumerator STATE_ID_CANARD_ANGLE
enumerator STATE_ID_ENUM_MAX
enum can_apogee_state_t

Values:

enumerator APOGEE_UNKNOWN
enumerator APOGEE_NOT_REACHED
enumerator APOGEE_REACHED
enumerator APOGEE_ENUM_MAX
enum can_general_board_status_offset_t

Values:

enumerator E_5V_OVER_CURRENT_OFFSET
enumerator E_5V_OVER_VOLTAGE_OFFSET
enumerator E_5V_UNDER_VOLTAGE_OFFSET
enumerator E_12V_OVER_CURRENT_OFFSET
enumerator E_12V_OVER_VOLTAGE_OFFSET
enumerator E_12V_UNDER_VOLTAGE_OFFSET
enumerator E_BATT_OVER_CURRENT_OFFSET
enumerator E_BATT_OVER_VOLTAGE_OFFSET
enumerator E_BATT_UNDER_VOLTAGE_OFFSET
enumerator E_MOTOR_OVER_CURRENT_OFFSET
enumerator E_IO_ERROR_OFFSET
enumerator E_FS_ERROR_OFFSET
enumerator E_WATCHDOG_TIMEOUT_OFFSET
enum can_board_specific_status_offset_t

Values:

enumerator E_12V_EFUSE_FAULT_OFFSET
enumerator E_5V_EFUSE_FAULT_OFFSET
enumerator E_PT_OUT_OF_RANGE_OFFSET
dir /home/jason/projects/rocketry/canlib-doxygen
dir /home/jason/projects/rocketry/canlib-doxygen/message