blob: 54be05d698c8e8fcd9a14641b1bdf07d0b66876a [file] [log] [blame]
Maxwell Hendersonf29e3182023-05-25 06:51:24 -07001#include "frc971/wpilib/can_sensor_reader.h"
2
3using frc971::wpilib::CANSensorReader;
4using frc971::wpilib::kCANUpdateFreqHz;
5
6CANSensorReader::CANSensorReader(
7 aos::EventLoop *event_loop,
Maxwell Hendersonfcc0d122023-08-05 17:03:34 -07008 std::vector<ctre::phoenix6::BaseStatusSignal *> signals_registry,
Maxwell Henderson10ed5c32024-01-09 12:40:54 -08009 std::vector<std::shared_ptr<TalonFX>> talonfxs,
Maxwell Henderson6c6faaf2023-07-26 19:44:24 -070010 std::function<void(ctre::phoenix::StatusCode status)> flatbuffer_callback)
Maxwell Hendersonf29e3182023-05-25 06:51:24 -070011 : event_loop_(event_loop),
12 signals_(signals_registry.begin(), signals_registry.end()),
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080013 talonfxs_(talonfxs),
Maxwell Henderson6c6faaf2023-07-26 19:44:24 -070014 flatbuffer_callback_(flatbuffer_callback) {
Maxwell Hendersonf29e3182023-05-25 06:51:24 -070015 event_loop->SetRuntimeRealtimePriority(40);
16
17 // TODO(max): Decide if we want to keep this on this core.
18 event_loop->SetRuntimeAffinity(aos::MakeCpusetFromCpus({1}));
Maxwell Henderson6c6faaf2023-07-26 19:44:24 -070019
20 CHECK(flatbuffer_callback_);
Maxwell Hendersonf29e3182023-05-25 06:51:24 -070021 timer_handler_ = event_loop->AddTimer([this]() { Loop(); });
22 timer_handler_->set_name("CANSensorReader Loop");
23
24 event_loop->OnRun([this]() {
25 timer_handler_->Schedule(event_loop_->monotonic_now(),
26 1 / kCANUpdateFreqHz);
27 });
28}
29
30void CANSensorReader::Loop() {
31 ctre::phoenix::StatusCode status =
Maxwell Hendersonfcc0d122023-08-05 17:03:34 -070032 ctre::phoenix6::BaseStatusSignal::WaitForAll(20_ms, signals_);
Maxwell Hendersonf29e3182023-05-25 06:51:24 -070033
34 if (!status.IsOK()) {
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080035 AOS_LOG(ERROR, "Failed to read signals from talonfx motors: %s: %s",
Maxwell Hendersonf29e3182023-05-25 06:51:24 -070036 status.GetName(), status.GetDescription());
37 }
38
Maxwell Henderson6c6faaf2023-07-26 19:44:24 -070039 flatbuffer_callback_(status);
Maxwell Hendersonf29e3182023-05-25 06:51:24 -070040}