6#include <unordered_map>
8#include <condition_variable>
10#include <units/angle.h>
11#include <units/angular_velocity.h>
12#include <units/time.h>
13#include <units/temperature.h>
14#include "redux/canand/CanandDevice.h"
15#include "redux/canand/CanandEventLoop.h"
16#include "redux/canand/CanandSettingsManager.h"
17#include "redux/canand/CooldownWarning.h"
18#include "redux/canand/MessageBus.h"
19#include "redux/frames/Frame.h"
21#include "redux/sensors/canandmag/CanandmagDetails.h"
22#include "redux/sensors/canandmag/CanandmagFaults.h"
23#include "redux/sensors/canandmag/CanandmagSettings.h"
24#include "redux/sensors/canandmag/CanandmagStatus.h"
134 bool SetPosition(units::turn_t newPosition, units::second_t timeout = 20_ms);
144 bool SetAbsPosition(units::turn_t newPosition, units::second_t timeout = 20_ms,
bool ephemeral =
false);
152 bool ZeroAll(units::second_t timeout = 20_ms);
263 return stg.GetSettings(timeout, missingTimeout, attempts);
349 return stg.SetSettings(settings, timeout, attempts);
364 return stg.SendReceiveSettingCommand(val, timeout,
true);
437 bool dataRecvOnce{
false};
438 units::second_t lastMessageTime{0_s};
Definition CanandAddress.h:62
Definition CanandDevice.h:35
Definition CanandMessage.h:26
Definition CanandSettingsManager.h:82
Definition CooldownWarning.h:15
Definition CanandmagFaults.h:13
Definition CanandmagSettings.h:54
Definition Canandmag.h:92
bool SetPosition(units::turn_t newPosition, units::second_t timeout=20_ms)
redux::canand::CanandSettingsManager< CanandmagSettings > stg
Definition Canandmag.h:434
static constexpr double kCountsPerRotation
Definition Canandmag.h:414
CanandmagSettings ResetFactoryDefaults(bool clearZero=false, units::second_t timeout=350_ms)
Definition Canandmag.h:361
bool ZeroAll(units::second_t timeout=20_ms)
CanandmagFaults GetActiveFaults()
redux::canand::CanandSettingsManager< CanandmagSettings > & GetInternalSettingsManager()
Definition Canandmag.h:375
units::turn_t GetPosition()
redux::frames::Frame< CanandmagStatus > status
Definition Canandmag.h:431
CanandmagSettings SetSettings(CanandmagSettings &settings, units::second_t timeout=20_ms, uint32_t attempts=3)
Definition Canandmag.h:348
CanandmagSettings GetSettings(units::second_t timeout=350_ms, units::second_t missingTimeout=20_ms, uint32_t attempts=3)
Definition Canandmag.h:262
redux::frames::Frame< CanandmagStatus > & GetStatusFrame()
Definition Canandmag.h:402
void HandleMessage(redux::canand::CanandMessage &msg) override
redux::frames::Frame< units::turn_t > & GetAbsPositionFrame()
Definition Canandmag.h:390
units::celsius_t GetTemperature()
CanandmagFaults GetStickyFaults()
redux::canand::CanandFirmwareVersion GetMinimumFirmwareVersion() override
Definition Canandmag.h:409
CanandmagStatus GetStatus()
Definition Canandmag.h:197
redux::frames::Frame< units::turn_t > position
Definition Canandmag.h:422
static constexpr double kCountsPerRotationPerSecond
Definition Canandmag.h:417
redux::frames::Frame< units::turn_t > absPosition
Definition Canandmag.h:425
std::string GetDeviceClassName() override
Definition Canandmag.h:408
Canandmag(int canID, std::string bus="halcan")
void StartFetchSettings()
Definition Canandmag.h:270
redux::frames::Frame< units::turns_per_second_t > & GetVelocityFrame()
Definition Canandmag.h:396
void SetPartyMode(uint8_t level)
units::turns_per_second_t GetVelocity()
CanandmagSettings GetSettingsAsync()
Definition Canandmag.h:323
units::turn_t GetAbsPosition()
redux::frames::Frame< units::turns_per_second_t > velocity
Definition Canandmag.h:428
bool SetAbsPosition(units::turn_t newPosition, units::second_t timeout=20_ms, bool ephemeral=false)
redux::canand::CanandAddress & GetAddress() override
redux::frames::Frame< units::turn_t > & GetPositionFrame()
Definition Canandmag.h:384
@ kResetFactoryDefaultKeepZero
Definition CanandmagDetails.h:76
@ kResetFactoryDefault
Definition CanandmagDetails.h:72
void RemoveCANListener(CanandDevice *device)
Definition Canandmag.h:29
Definition CanandFirmwareVersion.h:17
Definition CanandmagStatus.h:13