blob: d9d928c05f075fb83539798730dd89f85d4e185c [file] [log] [blame]
James Kuszmaul314f1672020-01-03 20:02:08 -08001#include <iostream>
2
Philipp Schrader790cb542023-07-05 21:06:52 -07003#include "gflags/gflags.h"
4
James Kuszmaul314f1672020-01-03 20:02:08 -08005#include "aos/configuration.h"
Austin Schuhb06f03b2021-02-17 22:00:37 -08006#include "aos/events/logging/log_reader.h"
Philipp Schrader790cb542023-07-05 21:06:52 -07007#include "aos/events/logging/log_writer.h"
James Kuszmaul314f1672020-01-03 20:02:08 -08008#include "aos/events/simulated_event_loop.h"
9#include "aos/init.h"
10#include "aos/json_to_flatbuffer.h"
11#include "aos/network/team_number.h"
12#include "frc971/control_loops/drivetrain/drivetrain.h"
James Kuszmaul314f1672020-01-03 20:02:08 -080013#include "y2019/control_loops/drivetrain/drivetrain_base.h"
14#include "y2019/control_loops/drivetrain/event_loop_localizer.h"
15
16DEFINE_string(logfile, "/tmp/logfile.bfbs",
17 "Name of the logfile to read from.");
Austin Schuhc5fa6d92022-02-25 14:36:28 -080018DEFINE_string(config, "y2019/aos_config.json",
James Kuszmaul314f1672020-01-03 20:02:08 -080019 "Name of the config file to replay using.");
Austin Schuh2f8fd752020-09-01 22:38:28 -070020DEFINE_string(output_file, "/tmp/replayed",
James Kuszmaul314f1672020-01-03 20:02:08 -080021 "Name of the logfile to write replayed data to.");
22DEFINE_int32(team, 971, "Team number to use for logfile replay.");
23int main(int argc, char **argv) {
24 aos::InitGoogle(&argc, &argv);
25
26 aos::network::OverrideTeamNumber(FLAGS_team);
27
James Kuszmaul314f1672020-01-03 20:02:08 -080028 const aos::FlatbufferDetachedBuffer<aos::Configuration> config =
29 aos::configuration::ReadConfig(FLAGS_config);
30
31 aos::logger::LogReader reader(FLAGS_logfile, &config.message());
32 // TODO(james): Actually enforce not sending on the same buses as the logfile
33 // spews out.
34 reader.RemapLoggedChannel("/drivetrain",
35 "frc971.control_loops.drivetrain.Status");
36 reader.RemapLoggedChannel("/drivetrain",
37 "frc971.control_loops.drivetrain.Output");
38 reader.Register();
39
James Kuszmaul314f1672020-01-03 20:02:08 -080040 std::unique_ptr<aos::EventLoop> log_writer_event_loop =
41 reader.event_loop_factory()->MakeEventLoop("log_writer");
42 log_writer_event_loop->SkipTimingReport();
Tyler Chatow67ddb032020-01-12 14:30:04 -080043 log_writer_event_loop->SkipAosLog();
James Kuszmaul314f1672020-01-03 20:02:08 -080044 CHECK(nullptr == log_writer_event_loop->node());
Brian Silverman1f345222020-09-24 21:14:48 -070045 aos::logger::Logger writer(log_writer_event_loop.get());
Austin Schuh11717692022-10-16 17:11:28 -070046 writer.StartLoggingOnRun(FLAGS_output_file);
James Kuszmaul314f1672020-01-03 20:02:08 -080047
48 std::unique_ptr<aos::EventLoop> drivetrain_event_loop =
49 reader.event_loop_factory()->MakeEventLoop("drivetrain");
50 drivetrain_event_loop->SkipTimingReport();
51
52 y2019::control_loops::drivetrain::EventLoopLocalizer localizer(
53 drivetrain_event_loop.get(),
54 y2019::control_loops::drivetrain::GetDrivetrainConfig());
55 frc971::control_loops::drivetrain::DrivetrainLoop drivetrain(
56 y2019::control_loops::drivetrain::GetDrivetrainConfig(),
57 drivetrain_event_loop.get(), &localizer);
58
59 reader.event_loop_factory()->Run();
60
James Kuszmaul314f1672020-01-03 20:02:08 -080061 return 0;
62}