Loading services/common_time/Android.mk +4 −1 Original line number Diff line number Diff line Loading @@ -10,8 +10,11 @@ LOCAL_SRC_FILES := \ common_clock_service.cpp \ common_time_config_service.cpp \ common_time_server.cpp \ common_time_server_api.cpp \ common_time_server_packets.cpp \ clock_recovery.cpp \ common_clock.cpp common_clock.cpp \ main.cpp ifeq ($(TIME_SERVICE_DEBUG), true) LOCAL_SRC_FILES += diag_thread.cpp Loading services/common_time/clock_recovery.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -265,6 +265,15 @@ bool ClockRecoveryLoop::pushDisciplineEvent(int64_t local_time, return true; } int32_t ClockRecoveryLoop::getLastErrorEstimate() { Mutex::Autolock lock(&lock_); if (last_delta_valid_) return last_delta_; else return ICommonClock::kErrorEstimateUnknown; } void ClockRecoveryLoop::computePIDParams() { // TODO(johngro) : add the ability to fetch parameters from the driver/board // level in case they have a HW clock discipline solution with parameters Loading services/common_time/clock_recovery.h +2 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define __CLOCK_RECOVERY_H__ #include <stdint.h> #include <common_time/ICommonClock.h> #include <utils/LinearTransform.h> #include <utils/threads.h> Loading @@ -39,6 +40,7 @@ class ClockRecoveryLoop { bool pushDisciplineEvent(int64_t local_time, int64_t nominal_common_time, int64_t data_point_rtt); int32_t getLastErrorEstimate(); private: typedef struct { Loading services/common_time/common_clock.cpp +9 −1 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -36,6 +36,7 @@ CommonClock::CommonClock() { cur_trans_.b_zero = 0; cur_trans_.a_to_b_numer = local_to_common_freq_numer_ = 1; cur_trans_.a_to_b_denom = local_to_common_freq_denom_ = 1; duration_trans_ = cur_trans_; } bool CommonClock::init(uint64_t local_freq) { Loading @@ -58,6 +59,7 @@ bool CommonClock::init(uint64_t local_freq) { static_cast<uint32_t>(numer); cur_trans_.a_to_b_denom = local_to_common_freq_denom_ = static_cast<uint32_t>(denom); duration_trans_ = cur_trans_; return true; } Loading Loading @@ -86,6 +88,12 @@ status_t CommonClock::commonToLocal(int64_t common, int64_t *local_out) const { return OK; } int64_t CommonClock::localDurationToCommonDuration(int64_t localDur) const { int64_t ret; duration_trans_.doForwardTransform(localDur, &ret); return ret; } void CommonClock::setBasis(int64_t local, int64_t common) { Mutex::Autolock lock(&lock_); Loading services/common_time/common_clock.h +3 −1 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -33,6 +33,7 @@ class CommonClock { status_t localToCommon(int64_t local, int64_t *common_out) const; status_t commonToLocal(int64_t common, int64_t *local_out) const; int64_t localDurationToCommonDuration(int64_t localDur) const; uint64_t getCommonFreq() const { return kCommonFreq; } bool isValid() const { return cur_trans_valid_; } status_t setSlew(int64_t change_time, int32_t ppm); Loading @@ -45,6 +46,7 @@ class CommonClock { uint32_t local_to_common_freq_numer_; uint32_t local_to_common_freq_denom_; LinearTransform duration_trans_; LinearTransform cur_trans_; bool cur_trans_valid_; Loading Loading
services/common_time/Android.mk +4 −1 Original line number Diff line number Diff line Loading @@ -10,8 +10,11 @@ LOCAL_SRC_FILES := \ common_clock_service.cpp \ common_time_config_service.cpp \ common_time_server.cpp \ common_time_server_api.cpp \ common_time_server_packets.cpp \ clock_recovery.cpp \ common_clock.cpp common_clock.cpp \ main.cpp ifeq ($(TIME_SERVICE_DEBUG), true) LOCAL_SRC_FILES += diag_thread.cpp Loading
services/common_time/clock_recovery.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -265,6 +265,15 @@ bool ClockRecoveryLoop::pushDisciplineEvent(int64_t local_time, return true; } int32_t ClockRecoveryLoop::getLastErrorEstimate() { Mutex::Autolock lock(&lock_); if (last_delta_valid_) return last_delta_; else return ICommonClock::kErrorEstimateUnknown; } void ClockRecoveryLoop::computePIDParams() { // TODO(johngro) : add the ability to fetch parameters from the driver/board // level in case they have a HW clock discipline solution with parameters Loading
services/common_time/clock_recovery.h +2 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define __CLOCK_RECOVERY_H__ #include <stdint.h> #include <common_time/ICommonClock.h> #include <utils/LinearTransform.h> #include <utils/threads.h> Loading @@ -39,6 +40,7 @@ class ClockRecoveryLoop { bool pushDisciplineEvent(int64_t local_time, int64_t nominal_common_time, int64_t data_point_rtt); int32_t getLastErrorEstimate(); private: typedef struct { Loading
services/common_time/common_clock.cpp +9 −1 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -36,6 +36,7 @@ CommonClock::CommonClock() { cur_trans_.b_zero = 0; cur_trans_.a_to_b_numer = local_to_common_freq_numer_ = 1; cur_trans_.a_to_b_denom = local_to_common_freq_denom_ = 1; duration_trans_ = cur_trans_; } bool CommonClock::init(uint64_t local_freq) { Loading @@ -58,6 +59,7 @@ bool CommonClock::init(uint64_t local_freq) { static_cast<uint32_t>(numer); cur_trans_.a_to_b_denom = local_to_common_freq_denom_ = static_cast<uint32_t>(denom); duration_trans_ = cur_trans_; return true; } Loading Loading @@ -86,6 +88,12 @@ status_t CommonClock::commonToLocal(int64_t common, int64_t *local_out) const { return OK; } int64_t CommonClock::localDurationToCommonDuration(int64_t localDur) const { int64_t ret; duration_trans_.doForwardTransform(localDur, &ret); return ret; } void CommonClock::setBasis(int64_t local, int64_t common) { Mutex::Autolock lock(&lock_); Loading
services/common_time/common_clock.h +3 −1 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -33,6 +33,7 @@ class CommonClock { status_t localToCommon(int64_t local, int64_t *common_out) const; status_t commonToLocal(int64_t common, int64_t *local_out) const; int64_t localDurationToCommonDuration(int64_t localDur) const; uint64_t getCommonFreq() const { return kCommonFreq; } bool isValid() const { return cur_trans_valid_; } status_t setSlew(int64_t change_time, int32_t ppm); Loading @@ -45,6 +46,7 @@ class CommonClock { uint32_t local_to_common_freq_numer_; uint32_t local_to_common_freq_denom_; LinearTransform duration_trans_; LinearTransform cur_trans_; bool cur_trans_valid_; Loading