24#ifndef TAPROOT_REF_SERIAL_HPP_
25#define TAPROOT_REF_SERIAL_HPP_
29#include <unordered_map>
34#include "modm/container/deque.hpp"
35#include "modm/processing/protothread/semaphore.hpp"
68 static constexpr uint32_t TIME_OFFLINE_REF_DATA_MS = 1000;
75 static constexpr uint16_t DPS_TRACKER_DEQUE_SIZE = 20;
170 return transmissionSemaphore.acquire();
177 transmissionSemaphore.release();
178 transmissionDelayTimer.
restart(
179 std::ceil(sentMsgLen * 1000.0f / Tx::MAX_TRANSMIT_SPEED_BYTES_PER_S));
194 return heat != 0xffff && heatLimit != 0xffff && heatLimit != 0;
198 Rx::RobotData robotData;
199 Rx::GameData gameData;
200 modm::BoundedDeque<Rx::DamageEvent, DPS_TRACKER_DEQUE_SIZE> receivedDpsTracker;
202 std::unordered_map<uint16_t, RobotToRobotMessageHandler*> msgIdToRobotToRobotHandlerMap;
203 modm::pt::Semaphore transmissionSemaphore;
302 void updateReceivedDamage();
303 void processReceivedDamage(uint32_t timestamp, int32_t damageTaken);
Definition drivers.hpp:70
Definition timeout.hpp:44
void restart(uint32_t timeout)
Definition timeout.hpp:70
bool isExpired() const
Definition timeout.hpp:95
bool isStopped() const
Definition timeout.hpp:89
Definition dji_serial.hpp:80
Drivers * drivers
Definition dji_serial.hpp:219
SerialMessage< SERIAL_RX_BUFF_SIZE > ReceivedSerialMessage
Definition dji_serial.hpp:134
Definition ref_serial_data.hpp:76
Definition ref_serial_data.hpp:87
Definition ref_serial_data.hpp:41
RobotId
Definition ref_serial_data.hpp:48
Definition ref_serial.hpp:63
bool operatorBlinded() const
Definition ref_serial.cpp:567
mockable const Rx::RobotData & getRobotData() const
Definition ref_serial.cpp:168
static bool heatAndLimitValid(uint16_t heat, uint16_t heatLimit)
Definition ref_serial.hpp:192
mockable void attachRobotToRobotMessageHandler(uint16_t msgId, RobotToRobotMessageHandler *handler)
Definition ref_serial.cpp:554
mockable bool acquireTransmissionSemaphore()
Definition ref_serial.hpp:166
void messageReceiveCallback(const ReceivedSerialMessage &completeMessage) override
Definition ref_serial.cpp:52
mockable const Rx::GameData & getGameData() const
Definition ref_serial.cpp:170
mockable RobotId getRobotIdBasedOnCurrentRobotTeam(RobotId id)
Definition ref_serial.cpp:536
mockable bool getRefSerialReceivingData() const
Definition ref_serial.cpp:47
MessageType
Definition ref_serial.hpp:88
@ REF_MESSAGE_TYPE_ROBOT_BUFF_STATUS
Definition ref_serial.hpp:100
@ REF_MESSAGE_TYPE_BULLETS_REMAIN
Definition ref_serial.hpp:103
@ REF_MESSAGE_TYPE_DART_STATION_INFO
Definition ref_serial.hpp:105
@ REF_MESSAGE_TYPE_DART_INFO
Definition ref_serial.hpp:95
@ REF_MESSAGE_TYPE_RECEIVE_DAMAGE
Definition ref_serial.hpp:101
@ REF_MESSAGE_TYPE_GAME_STATUS
Definition ref_serial.hpp:89
@ REF_MESSAGE_TYPE_CUSTOM_DATA
Definition ref_serial.hpp:111
@ REF_MESSAGE_TYPE_RADAR_PROGRESS
Definition ref_serial.hpp:107
@ REF_MESSAGE_TYPE_POWER_AND_HEAT
Definition ref_serial.hpp:98
@ REF_MESSAGE_TYPE_GAME_RESULT
Definition ref_serial.hpp:90
@ REF_MESSAGE_TYPE_WARNING_DATA
Definition ref_serial.hpp:94
@ REF_MESSAGE_TYPE_ROBOT_POSITION
Definition ref_serial.hpp:99
@ REF_MESSAGE_TYPE_ROBOT_STATUS
Definition ref_serial.hpp:97
@ REF_MESSAGE_TYPE_GROUND_ROBOT_POSITION
Definition ref_serial.hpp:106
@ REF_MESSAGE_TYPE_PROJECTILE_LAUNCH
Definition ref_serial.hpp:102
@ REF_MESSAGE_TYPE_RFID_STATUS
Definition ref_serial.hpp:104
@ REF_MESSAGE_TYPE_RADAR_INFO
Definition ref_serial.hpp:109
@ REF_MESSAGE_TYPE_ALL_ROBOT_HP
Definition ref_serial.hpp:91
@ REF_MESSAGE_TYPE_SITE_EVENT_DATA
Definition ref_serial.hpp:93
@ REF_MESSAGE_TYPE_SENTRY_INFO
Definition ref_serial.hpp:108
mockable void releaseTransmissionSemaphore(uint32_t sentMsgLen)
Definition ref_serial.hpp:175
Definition dji_serial.cpp:41
Definition ballistics.cpp:29
tap::Drivers Drivers
Definition drivers.hpp:11
#define mockable
Wrap class functions that are not already virtual in this function if you wish to mock them.
Definition util_macros.hpp:38
#define DISALLOW_COPY_AND_ASSIGN(Typename)
Definition util_macros.hpp:27