Basic_Frame_TypeC_2023_Omni
Loading...
Searching...
No Matches
subsystems_interfaces.h
1#ifndef __SUBSYSTEMS_INTERFACES_H
2#define __SUBSYSTEMS_INTERFACES_H
3
4#include "subsystems_types.h"
5
7 public:
8 virtual void init() = 0;
9 virtual uint8_t get_message(Topic_Name_t topic, void* data_ptr,
10 int ticks_to_wait) = 0;
11 virtual uint8_t peek_message(Topic_Name_t topic, void* data_ptr,
12 int ticks_to_wait) = 0;
13 virtual uint8_t pub_message(Topic_Name_t topic, void* data_ptr) = 0;
14 virtual uint8_t pub_message_from_isr(Topic_Name_t topic, void* data_ptr,
15 uint8_t* will_context_switch) = 0;
16 virtual Topic_Handle_t& get_topic_handle(Topic_Name_t name) = 0;
17};
18
19class IMotors {
20 public:
21 virtual void init(Motor_Config_t config) = 0;
22 virtual bool is_valid_output(size_t motor_index, int32_t new_output) = 0;
23 virtual void set_motor_voltage(uint32_t can_id, int32_t output) = 0;
24 virtual void send_motor_voltage() = 0;
25 virtual void request_feedback(Motor_CAN_ID_t can_id) = 0;
26 virtual void get_raw_feedback(uint32_t stdid, uint8_t data[8],
27 void* feedback) = 0;
28 virtual Motor_Brand_t get_motor_brand(uint32_t stdid) = 0;
29};
30
31class IImu {
32 public:
33 virtual void init() = 0;
34 virtual float get_temp() = 0;
35 virtual void get_attitude(Attitude_t& attitude) = 0;
36 virtual void get_sensor_data(AhrsSensor_t& sensor) = 0;
37 virtual void set_heat_pwm(uint16_t duty_cycle) = 0;
38 virtual void gather_sensor_data(AhrsSensor_t& sensor, bool read_mag) = 0;
39};
40
41class IRefUI {
42 public:
43 virtual void init() = 0;
44 virtual void set_ui_data(referee_ui_type_t ui_type, uint8_t robot_id,
45 ref_ui_info_t ref_ui_info) = 0;
46 virtual void send_ui_data(uint16_t cmd_id, uint16_t len,
47 referee_ui_type_t ui_type) = 0;
48 virtual void draw_marks() = 0;
49 virtual void draw_vaild_info(uint32_t act_mode, uint32_t level) = 0;
50};
51
53 public:
54 virtual void init() = 0;
55 virtual UARM_Events_t wait_events(UARM_Events_t wait_events,
56 uint32_t timeout) = 0;
57 virtual void emit_events(UARM_Events_t new_events) = 0;
58 virtual void clear_events(UARM_Events_t clear_events) = 0;
59 virtual bool sync_tasks(Sync_Event_t sync_event, UARM_Events_t set_task,
60 uint32_t timeout) = 0;
61};
62
63class IDebug {
64 public:
65 virtual BoardStatus_t get_board_status(void) = 0;
66 virtual void set_led_state(Board_LED_t led, Board_LED_State_t state) = 0;
67};
68
69class ICanComm {
70 public:
71 virtual void init() = 0;
72 virtual void can_transmit_comm_message(uint8_t send_data[8],
73 uint32_t comm_id) = 0;
74};
75
76class IAmmoLid {
77 public:
78 virtual void init() = 0;
79 virtual void set_lid_status(EAmmoLidStatus new_status) = 0;
80};
81
82class IRCComm {
83 public:
84 virtual ~IRCComm() = default; // Virtual destructor
85 virtual void buffer_init(Buffer& buffer) = 0;
86 virtual void key_object_init(KeyObject& key) = 0;
87 virtual void keyboard_init(Keyboard& keyboard) = 0;
88 virtual void mouse_init(Mouse& mouse) = 0;
89 virtual void pc_init(PC& pc) = 0;
90 virtual void controller_init(Controller& controller) = 0;
91 virtual void parse_switches(Buffer& buffer, ESwitchState& s1,
92 ESwitchState& s2) = 0;
93 virtual void parse_controller(Buffer& buffer, Controller& controller) = 0;
94 virtual void parse_pc(Buffer& buffer, PC& pc) = 0;
95 virtual void key_scan(KeyObject& key, uint16_t key_buffer,
96 EKeyBitIndex key_bit_index) = 0;
97};
98
99class IPCComm {
100 public:
101 virtual uint8_t uc_check_pack_integrity(uint8_t* pack_bytes,
102 uint8_t pack_size);
103 virtual void send_bytes(uint8_t* bytes, uint32_t size);
104 virtual uint8_t get_data_size(uint8_t header_id);
105 virtual void start_receive(uint8_t* pack_buffer);
106 virtual void restart_receive(uint8_t* pack_buffer);
107 virtual UC_Checksum_t calc_checksum(void* buffer_ptr, size_t buffer_size);
108 virtual uint8_t is_valid_header(uint8_t* input_buffer);
109};
110
111#endif
Definition subsystems_interfaces.h:76
Definition subsystems_interfaces.h:69
Definition subsystems_interfaces.h:63
Definition subsystems_interfaces.h:52
Definition subsystems_interfaces.h:31
Definition subsystems_interfaces.h:6
Definition subsystems_interfaces.h:19
Definition subsystems_interfaces.h:99
Definition subsystems_interfaces.h:82
Definition subsystems_interfaces.h:41
Definition attitude_types.h:9
Definition attitude_types.h:28
Definition subsystems_types.h:503
Definition subsystems_types.h:514
Definition subsystems_types.h:520
Definition subsystems_types.h:539
Definition subsystems_types.h:549
Definition subsystems_types.h:145
Definition subsystems_types.h:435