Add dumpsys::ticks_to_milliseconds

Bug: 259118978
Test: gd/cert/run
Tag: #refactor
BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines

Change-Id: I2b4d6bd596cf975de3565d5ebaa6889a8dad40e2
diff --git a/system/main/shim/dumpsys.h b/system/main/shim/dumpsys.h
index 818e4f8..e1cc7cc 100644
--- a/system/main/shim/dumpsys.h
+++ b/system/main/shim/dumpsys.h
@@ -48,6 +48,10 @@
   return (static_cast<double>(ticks) * 0.625 * 0.001);
 }
 
+inline double ticks_to_milliseconds(uint16_t ticks) {
+  return (static_cast<double>(ticks) * 0.625);
+}
+
 inline double supervision_timeout_to_seconds(uint16_t timeout) {
   return (static_cast<double>(timeout) * 0.01);
 }
diff --git a/system/main/test/main_shim_test.cc b/system/main/test/main_shim_test.cc
index 71ee878..0d57c90 100644
--- a/system/main/test/main_shim_test.cc
+++ b/system/main/test/main_shim_test.cc
@@ -88,6 +88,11 @@
     : public bluetooth::hci::LeAddressManagerCallback {};
 
 namespace {
+constexpr double kMaxAbsoluteError = .0000001;
+constexpr double kTicksInMs = 20479.375;
+constexpr double kTicksInSec = 20.479375;
+constexpr uint16_t kTicks = 32767;
+
 std::map<std::string, std::promise<uint16_t>> mock_function_handle_promise_map;
 
 // Utility to provide a file descriptor for /dev/null when possible, but
@@ -754,3 +759,13 @@
 TEST_F(MainShimTest, acl_dumpsys) {
   MakeAcl()->Dump(std::make_unique<DevNullOrStdErr>()->Fd());
 }
+
+TEST_F(MainShimTest, ticks_to_milliseconds) {
+  ASSERT_THAT(kTicksInMs,
+              DoubleNear(ticks_to_milliseconds(kTicks), kMaxAbsoluteError));
+}
+
+TEST_F(MainShimTest, ticks_to_seconds) {
+  ASSERT_THAT(kTicksInSec,
+              DoubleNear(ticks_to_seconds(kTicks), kMaxAbsoluteError));
+}