Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89843c25 authored by John Grossman's avatar John Grossman Committed by Android (Google) Code Review
Browse files

Merge "Implement new common_time service functionality." into ics-aah

parents 134e6c93 354edbc8
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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
+9 −0
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#define __CLOCK_RECOVERY_H__

#include <stdint.h>
#include <common_time/ICommonClock.h>
#include <utils/LinearTransform.h>
#include <utils/threads.h>

@@ -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 {
+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.
@@ -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) {
@@ -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;
}
@@ -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_);

+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.
@@ -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);
@@ -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