blob: fd05d67565eb8aaa76694be3615a3434c31142f9 [file] [log] [blame]
Brian Silverman425492b2015-12-30 15:23:55 -08001#ifndef FRC971_WPILIB_PDP_FETCHER_H_
2#define FRC971_WPILIB_PDP_FETCHER_H_
3
Brian Silverman425492b2015-12-30 15:23:55 -08004#include <atomic>
Parker Schuhd3b7a8872018-02-19 16:42:27 -08005#include <memory>
Brian Silverman425492b2015-12-30 15:23:55 -08006
Austin Schuh0b545432019-05-12 15:46:12 -07007#include "aos/events/event-loop.h"
8#include "frc971/wpilib/pdp_values.q.h"
9
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070010namespace frc {
11class PowerDistributionPanel;
12} // namespace frc
13
Brian Silverman425492b2015-12-30 15:23:55 -080014namespace frc971 {
15namespace wpilib {
16
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070017// Handles fetching values from the PDP.
Brian Silverman425492b2015-12-30 15:23:55 -080018class PDPFetcher {
19 public:
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070020 PDPFetcher(::aos::EventLoop *event_loop);
Austin Schuh0b545432019-05-12 15:46:12 -070021
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070022 ~PDPFetcher();
Brian Silverman425492b2015-12-30 15:23:55 -080023
24 private:
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070025 void Loop(int iterations);
26
Austin Schuh0b545432019-05-12 15:46:12 -070027 ::aos::EventLoop *event_loop_;
28
29 ::aos::Sender<::frc971::PDPValues> pdp_values_sender_;
30
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070031 ::std::unique_ptr<::frc::PowerDistributionPanel> pdp_;
Brian Silverman425492b2015-12-30 15:23:55 -080032};
33
34} // namespace wpilib
35} // namespace frc971
36
37#endif // FRC971_WPILIB_PDP_FETCHER_H_