MCU
Loading...
Searching...
No Matches
SteeringSystem.cpp
Go to the documentation of this file.
1#include "SteeringSystem.h"
2#include <cmath>
3
5{
6 // System works at 100hz
7 // 1. Polls upper steering sensor
8 // 2. Computes internal state
9 if (intake.tick.triggers.trigger100)
10 {
12 primaryConversion_.status = SteeringEncoderStatus_e::STEERING_ENCODER_ERROR;
13 steeringData_.status = SteeringSystemStatus_e::STEERING_SYSTEM_NOMINAL;
16 .status = SteeringSystemStatus_e::STEERING_SYSTEM_DEGRADED};
17 }
18
19 // Report at 50Hz
20 if (intake.tick.triggers.trigger50)
21 {
24 0,
26 static_cast<uint8_t>(steeringData_.status),
27 static_cast<uint8_t>(primaryConversion_.status),
28 static_cast<uint8_t>(intake.secondaryConversion.status));
29 }
30}
31
33 const float filteredAngleEncoder,
34 const float filteredAngleAnalog,
35 const uint8_t systemStatus,
36 const uint8_t encoderStatus,
37 const uint8_t analogSensorStatus)
38{
40 angle,
41 filteredAngleEncoder,
42 filteredAngleAnalog,
43 systemStatus,
44 encoderStatus,
45 analogSensorStatus);
46}
dataType filtered_result(dataType new_val)
Definition: Filter_IIR.h:50
void reportSteeringStatus(const float angle, const float filteredAngleEncoder, const float filteredAngleAnalog, const uint8_t systemStatus, const uint8_t encoderStatus, const uint8_t analogSensorStatus)
TelemetryInterface * telemHandle_
void tick(const SteeringSystemTick_s &intake)
Computes steering angle and status of the steering system.
SteeringEncoderConversion_s primaryConversion_
float filteredAngleSecondary_
SteeringSystemData_s steeringData_
Filter_IIR< float > steeringFilters_[NUM_SENSORS]
void update_steering_status_CAN_msg(const float steering_system_angle, const float filtered_angle_encoder, const float filtered_angle_analog, const uint8_t steering_system_status, const uint8_t steering_encoder_status, const uint8_t steering_analog_status)
SteeringSystemStatus_e status
const AnalogConversion_s & secondaryConversion
const SysTick_s & tick