blob: 55e18ad4b96963b037e34473f129997e9113f61b [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/controls/replay_control_loop.h"
Brian Silverman17f503e2015-08-02 18:17:18 -07002#include "aos/linux_code/init.h"
3
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 Schuh478dd4b2015-12-27 14:09:12 -080023 replayer.AddDirectQueueSender("wpilib_interface.Gyro", "sending",
24 ::frc971::sensors::gyro_reading);
25 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}