blob: db058b88f49c2d73e43dbadb2113bb4b8077c326 [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/controls/replay_control_loop.h"
John Park398c74a2018-10-20 21:17:39 -07002#include "aos/init.h"
Brian Silverman17f503e2015-08-02 18:17:18 -07003
Comran Morshed5323ecb2015-12-26 20:50:55 +00004#include "frc971/control_loops/drivetrain/drivetrain.q.h"
Austin Schuhd0e02df2015-11-26 12:48:51 -08005#include "frc971/queues/gyro.q.h"
Brian Silverman17f503e2015-08-02 18:17:18 -07006
7// Reads one or more log files and sends out all the queue messages (in the
8// correct order and at the correct time) to feed a "live" drivetrain process.
9
10int main(int argc, char **argv) {
11 if (argc <= 1) {
12 fprintf(stderr, "Need at least one file to replay!\n");
13 return EXIT_FAILURE;
14 }
15
16 ::aos::InitNRT();
17
Austin Schuh478dd4b2015-12-27 14:09:12 -080018 {
19 ::aos::controls::ControlLoopReplayer<
Comran Morshed5323ecb2015-12-26 20:50:55 +000020 ::frc971::control_loops::DrivetrainQueue>
21 replayer(&::frc971::control_loops::drivetrain_queue, "drivetrain");
Austin Schuhd0e02df2015-11-26 12:48:51 -080022
Austin Schuhdf6cbb12019-02-02 13:46:52 -080023 replayer.AddDirectQueueSender<::frc971::sensors::GyroReading>(
24 "wpilib_interface.Gyro", "sending", ".frc971.sensors.gyro_reading");
Austin Schuh478dd4b2015-12-27 14:09:12 -080025 for (int i = 1; i < argc; ++i) {
26 replayer.ProcessFile(argv[i]);
27 }
Brian Silverman17f503e2015-08-02 18:17:18 -070028 }
Austin Schuh478dd4b2015-12-27 14:09:12 -080029 ::frc971::sensors::gyro_reading.Clear();
Comran Morshed5323ecb2015-12-26 20:50:55 +000030 ::frc971::control_loops::drivetrain_queue.goal.Clear();
31 ::frc971::control_loops::drivetrain_queue.status.Clear();
32 ::frc971::control_loops::drivetrain_queue.position.Clear();
33 ::frc971::control_loops::drivetrain_queue.output.Clear();
Brian Silverman17f503e2015-08-02 18:17:18 -070034
35 ::aos::Cleanup();
36}