Moving calibration file naming to a centralized call, for consistency

Moving to format of:
calibration_NODE_NAME-TEAM#-CAMERA#_cam-24-XX_TIMESTAMP.json

Change-Id: Iece87428a9428cbdd70496f7335f5ec977357200
Signed-off-by: Jim Ostrowski <yimmy13@gmail.com>
diff --git a/frc971/vision/BUILD b/frc971/vision/BUILD
index d96822b..46b7cea 100644
--- a/frc971/vision/BUILD
+++ b/frc971/vision/BUILD
@@ -373,6 +373,7 @@
         "//frc971/vision:calibration_fbs",
         "//third_party:opencv",
         "@com_github_google_glog//:glog",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
diff --git a/frc971/vision/intrinsics_calibration_lib.cc b/frc971/vision/intrinsics_calibration_lib.cc
index c48c12d..59a45ac 100644
--- a/frc971/vision/intrinsics_calibration_lib.cc
+++ b/frc971/vision/intrinsics_calibration_lib.cc
@@ -249,18 +249,12 @@
     std::stringstream time_ss;
     time_ss << realtime_now;
 
-    std::string camera_number_optional = "";
     std::optional<uint16_t> camera_number =
         frc971::vision::CameraNumberFromChannel(camera_channel_);
-    if (camera_number != std::nullopt) {
-      camera_number_optional = "-" + std::to_string(camera_number.value());
-    }
-    const std::string calibration_filename =
-        calibration_folder_ +
-        absl::StrFormat("/calibration_%s-%d-%d%s_cam-%s_%s.json",
-                        cpu_type_.value(), team_number.value(),
-                        cpu_number_.value(), camera_number_optional, camera_id_,
-                        time_ss.str());
+    CHECK(camera_number.has_value());
+    std::string calibration_filename =
+        CalibrationFilename(calibration_folder_, hostname_, team_number.value(),
+                            camera_number.value(), camera_id_, time_ss.str());
 
     LOG(INFO) << calibration_filename << " -> "
               << aos::FlatbufferToJson(camera_calibration,
diff --git a/frc971/vision/vision_util_lib.cc b/frc971/vision/vision_util_lib.cc
index bfd6209..45aa199 100644
--- a/frc971/vision/vision_util_lib.cc
+++ b/frc971/vision/vision_util_lib.cc
@@ -1,5 +1,6 @@
 #include "frc971/vision/vision_util_lib.h"
 
+#include "absl/strings/str_format.h"
 #include "glog/logging.h"
 
 namespace frc971::vision {
@@ -58,4 +59,19 @@
   return camera_number;
 }
 
+std::string CalibrationFilename(std::string calibration_folder,
+                                std::string node_name, int team_number,
+                                int camera_number, std::string camera_id,
+                                std::string timestamp) {
+  // Get rid of any fractional seconds-- we shouldn't need those and it makes
+  // the string unnecessarily longer
+  timestamp = timestamp.substr(0, timestamp.find("."));
+  std::string calibration_filename =
+      calibration_folder +
+      absl::StrFormat("/calibration_%s-%d-%d_cam-%s_%s.json", node_name.c_str(),
+                      team_number, camera_number, camera_id.c_str(),
+                      timestamp.c_str());
+  return calibration_filename;
+}
+
 }  // namespace frc971::vision
diff --git a/frc971/vision/vision_util_lib.h b/frc971/vision/vision_util_lib.h
index 8ce651c..a26af3b 100644
--- a/frc971/vision/vision_util_lib.h
+++ b/frc971/vision/vision_util_lib.h
@@ -25,6 +25,12 @@
 // not have a number
 std::optional<uint16_t> CameraNumberFromChannel(std::string camera_channel);
 
+// Return a calibration filename to save to based on the given data
+std::string CalibrationFilename(std::string calibration_folder,
+                                std::string node_name, int team_number,
+                                int camera_number, std::string camera_id,
+                                std::string timestamp);
+
 }  // namespace frc971::vision
 
 #endif  // FRC971_VISION_VISION_UTIL_LIB_H_