split to functions

pull/34863/head
deanlee 1 month ago
parent 997df1694e
commit 1eb4098c96
  1. 2
      tools/cabana/cabana.cc
  2. 41
      tools/replay/route.cc
  3. 2
      tools/replay/route.h

@ -23,7 +23,7 @@ int main(int argc, char *argv[]) {
cmd_parser.addHelpOption();
cmd_parser.addPositionalArgument("route", "the drive to replay. find your drives at connect.comma.ai");
cmd_parser.addOption({"demo", "use a demo route instead of providing your own"});
cmd_parser.addOption({"auto", "auto load a route from the most suitable source"});
cmd_parser.addOption({"auto", "auto load the route from the most appropriate available source"});
cmd_parser.addOption({"qcam", "load qcamera"});
cmd_parser.addOption({"ecam", "load wide road camera"});
cmd_parser.addOption({"dcam", "load driver camera"});

@ -11,11 +11,7 @@
#include "tools/replay/util.h"
Route::Route(const std::string &route, const std::string &data_dir, bool auto_source)
: route_string_(route), data_dir_(data_dir), auto_source_(auto_source) {
if (!auto_source) {
route_ = parseRoute(route);
}
}
: route_string_(route), data_dir_(data_dir), auto_source_(auto_source) {}
RouteIdentifier Route::parseRoute(const std::string &str) {
RouteIdentifier identifier = {};
@ -47,23 +43,11 @@ RouteIdentifier Route::parseRoute(const std::string &str) {
}
bool Route::load() {
err_ = RouteLoadError::None;
if (auto_source_) {
auto cmd = util::string_format("python ../lib/logreader.py \"%s\" --identifiers-only", route_string_.c_str());
auto output = util::check_output(cmd);
auto log_files = split(output, '\n');
for (int i = 0; i < log_files.size(); ++i) {
addFileToSegment(i, log_files[i]);
}
route_.begin_segment = 0;
route_.end_segment = log_files.size() - 1;
route_.dongle_id = route_string_;
route_.str = route_string_;
route_.timestamp = "";
return !segments_.empty();
}
return auto_source_ ? loadFromAutoSource() : loadFromCommaApi();
}
bool Route::loadFromCommaApi() {
route_ = parseRoute(route_string_);
if (route_.str.empty() || (data_dir_.empty() && route_.dongle_id.empty())) {
rInfo("invalid route format");
return false;
@ -88,6 +72,21 @@ bool Route::load() {
return !segments_.empty();
}
bool Route::loadFromAutoSource() {
auto cmd = util::string_format("python ../lib/logreader.py \"%s\" --identifiers-only", route_string_.c_str());
auto output = util::check_output(cmd);
auto log_files = split(output, '\n');
for (int i = 0; i < log_files.size(); ++i) {
addFileToSegment(i, log_files[i]);
}
route_.begin_segment = 0;
route_.end_segment = log_files.size() - 1;
route_.dongle_id = route_string_;
route_.str = route_string_;
route_.timestamp = "";
return !segments_.empty();
}
bool Route::loadFromServer(int retries) {
const std::string url = CommaApi2::BASE_URL + "/v1/route/" + route_.str + "/files";
for (int i = 1; i <= retries; ++i) {

@ -52,6 +52,8 @@ public:
static RouteIdentifier parseRoute(const std::string &str);
protected:
bool loadFromAutoSource();
bool loadFromCommaApi();
bool loadFromLocal();
bool loadFromServer(int retries = 3);
bool loadFromJson(const std::string &json);

Loading…
Cancel
Save