Basic_Frame_TypeC_2023_Omni
Loading...
Searching...
No Matches
message_center.hpp
1#ifndef __MESSAGE_CENTER_H
2#define __MESSAGE_CENTER_H
3
4#include "subsystems_interfaces.h"
5#include "subsystems_types.h"
6
7// TODO: Add timestamp or something for users to differentiate messages.
9 private:
10 // TODO: replace with std::array. Hard? cannot use template deduction??
11 Topic_Handle_t topic_handles[19] = {
12 Topic_Handle_t {MOTOR_SET, sizeof(MotorSetMessage_t), 5, NULL},
13 Topic_Handle_t {MOTOR_READ, sizeof(MotorReadMessage_t), 1, NULL},
14 Topic_Handle_t {RC_INFO, sizeof(RCInfoMessage_t), 1, NULL},
15 Topic_Handle_t {COMM_OUT, sizeof(CANCommMessage_t), 5, NULL},
16 Topic_Handle_t {COMM_IN, sizeof(CANCommMessage_t), 5, NULL},
17 Topic_Handle_t {IMU_READINGS, sizeof(float) * 2, 1, NULL},
18
19 // [yaw, pitch]
20 Topic_Handle_t {GIMBAL_REL_ANGLES, sizeof(float) * 2, 1, NULL},
21 // TODO: Make struct with necessary info from ref system.
22 Topic_Handle_t {UI_SEND, 0, 1, NULL},
23 // TODO: Make struct with necessary info for commands from player inputs.
24 Topic_Handle_t {PLAYER_COMMANDS, 0, 1, NULL},
25
26 Topic_Handle_t {PLAYER_COMMANDS, 0, 1, NULL},
27 Topic_Handle_t {REFEREE_IN, sizeof(uint8_t) * 41, 1, NULL},
28 Topic_Handle_t {RC_RAW, sizeof(uint8_t) * 18, 5, NULL},
29
30 Topic_Handle_t {UC_PACK_IN, sizeof(uint8_t) * 64, 1, NULL},
31 Topic_Handle_t {UC_PACK_OUT, sizeof(uint8_t) * 196, 10, NULL},
32 Topic_Handle_t {AUTO_AIM, sizeof(float) * 2, 1, NULL},
33
34 Topic_Handle_t {COMMAND_CHASSIS, sizeof(ChassisCommandMessage_t), 1,
35 NULL},
36 Topic_Handle_t {COMMAND_GIMBAL, sizeof(GimbalCommandMessage_t), 1,
37 NULL},
38 Topic_Handle_t {COMMAND_SHOOT, sizeof(ShootCommandMessage_t), 1, NULL},
39 Topic_Handle_t {REFEREE_OUT, sizeof(RefereeInfoMessage_t), 1, NULL},
40 };
41 bool initialized = false;
42
43 public:
44 static MessageCenter& get_instance();
45
46 void init() override;
47
48 // TODO: Replace return values with bools?
49 uint8_t get_message(Topic_Name_t topic, void* data_ptr,
50 int ticks_to_wait) override;
51 uint8_t peek_message(Topic_Name_t topic, void* data_ptr,
52 int ticks_to_wait) override;
53 uint8_t pub_message(Topic_Name_t topic, void* data_ptr) override;
54 uint8_t pub_message_from_isr(Topic_Name_t topic, void* data_ptr,
55 uint8_t* will_context_switch) override;
56 Topic_Handle_t& get_topic_handle(Topic_Name_t name) override;
57};
58
59#endif
Definition subsystems_interfaces.h:6
Definition message_center.hpp:8
Definition subsystems_types.h:152
Definition subsystems_types.h:184
Definition subsystems_types.h:191
Definition subsystems_types.h:179
Definition subsystems_types.h:174
Definition subsystems_types.h:157
Definition subsystems_types.h:202
Definition subsystems_types.h:197
Definition subsystems_types.h:145