ClockBase

@interface ClockBase : NSObject <ClockProtocol>

A base class for all clock objects. New clock classes must subclass the ClockBase class.

  • A parent clock for this clock.

    Declaration

    Objective-C

    @property (readwrite, strong, nonatomic) ClockBase *parent;

    Swift

    var parent: ClockBase! { get set }
  • this clock’s tickrate in number of ticks per second (required)

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) uint64_t tickRate;

    Swift

    var tickRate: UInt64 { get set }
  • this clock’s speed. Specifies how time is mapped to child time space from the parent time space. (required) For example, if speed is 2.0 local time progresses twice as fast as parent time. Defaults to 1.0.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) float speed;

    Swift

    var speed: Float { get set }
  • Sets or provides the availability of this clock.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) BOOL available;

    Swift

    var available: Bool { get set }
  • A clock error’s static error component in nano seconds. In the simplest of cases, e.g. for a system clock this is the system clock’s precision. In other clocks, this will include other non-time-varying sources of error e.g. for WallClock, the RTT

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) int64_t staticError;

    Swift

    var staticError: Int64 { get set }
  • this clock’s time-varying error. This is the rate at which the error for this clock grows. Specified in ppm (parts per million). A clock’s errorRate is the sum of its errorRate and the errorRate of its parent clock. For a SystemClock, this is equal to the frequency error.

    Declaration

    Objective-C

    @property (getter=errorRate, assign, readwrite, nonatomic) uint32_t errorRate;

    Swift

    var errorRate: UInt32 { get set }
  • Time in ticks on clock’s timeline from which staticError and errorRate applies. In clocks where there are offset readjustments, the error parameters (staticError and errorRate) are updated at the time of adjustment and only apply from that time onwards.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) int64_t errorTicksFrom;

    Swift

    var errorTicksFrom: Int64 { get set }
  • Returns the ‘effective speed’ of this clock. This is equal to multiplying together the speed properties of this clock and all of the parents up to the root clock

    Declaration

    Objective-C

    - (float)getEffectiveSpeed;

    Swift

    func getEffectiveSpeed() -> Float

    Return Value

    Returns the ‘effective speed’ of this clock

  • Compute time in seconds from the tick value and this clock’s tick rate

    Declaration

    Objective-C

    - (Float64)computeTime:(int64_t)ticks;

    Swift

    func computeTime(_ ticks: Int64) -> Float64

    Parameters

    ticks

    time in ticks

    Return Value

    time in seconds

  • Compute time in nanoseconds from the tick value and this clock’s tick rate

    Declaration

    Objective-C

    - (Float64)computeTimeNanos:(int64_t)ticks;

    Swift

    func computeTimeNanos(_ ticks: Int64) -> Float64

    Parameters

    ticks

    time in ticks

    Return Value

    time in nano secs

  • Method to convert from a tick value for this clock to the equivalent tick value (representing the same point in time) for the parent clock.

    Implementations should use the parent clock’s tickRate and speed properties when performing the conversion

    Declaration

    Objective-C

    - (int64_t)toParentTicks:(int64_t)ticks;

    Swift

    func toParentTicks(_ ticks: Int64) -> Int64

    Parameters

    ticks

    a tick value for this clock

    Return Value

    The specified tick value of this clock converted to the timescale of the parent clock

    • Method to convert from a tick value for this clock’s parent to the equivalent tick value (representing the same point in time) for this clock. Implementations should use this clock’s tickRate and speed properties when performing the conversion. *
    • - parameter: ticks a tick value for this clock *
    • - returns: The specified tick value for the parent clock converted to the timescale of this clock.

    Declaration

    Objective-C

    - (int64_t)fromParentTicks:(int64_t)ticks;

    Swift

    func fromParentTicks(_ ticks: Int64) -> Int64

    Parameters

    ticks

    a tick value for this clock

    Return Value

    The specified tick value for the parent clock converted to the timescale of this clock.

  • Converts a tick value for this clock into a tick value corresponding to the timescale of another clock.

    Declaration

    Objective-C

    - (int64_t)toOtherClock:(ClockBase *)otherClock
                      Ticks:(int64_t)ticks
                  WithError:(NSError **)error;

    Swift

    func toOtherClock(_ otherClock: ClockBase!, ticks: Int64, withError error: NSErrorPointer) -> Int64

    Parameters

    otherClock

    A ClockBase object representing another clock.

    ticks

    A time (tick value) for this clock

    error

    A pointer to an NSError pointer parameter

    Return Value

    The tick value of the otherClock that represents the same moment in time. Users should check the value returned in error. Error codes are specified in ClockErrors.h.

  • measure this clock’s precision

    Declaration

    Objective-C

    - (double)estimatePrecision:(NSUInteger)sampleSize;

    Swift

    func estimatePrecision(_ sampleSize: UInt) -> Double

    Parameters

    sampleSize

    number of samples for calculation

    Return Value

    measured precision

  • Get the error of the clock reading at specified time. A clock reading’s error value has a static error component and another error component which grows over time.

    Declaration

    Objective-C

    - (int64_t)dispersionAtTime:(int64_t)timeInNanos;

    Swift

    func dispersion(atTime timeInNanos: Int64) -> Int64

    Parameters

    time

    time value in nanoseconds

    Return Value

    error of this clock at time ‘timeInNanos’

  • Add an observer for clock state changes. Uses IOS’s Key-Value-Coding mechanism.

    Declaration

    Objective-C

    - (void)addObserver:(id)observer context:(void *)context;

    Swift

    func addObserver(_ observer: Any!, context: UnsafeMutableRawPointer!)

    Parameters

    observer

    the observer object to be notified

    context

    A context to differentiate between observed clock objects

  • Remove observer from this clock object

    Declaration

    Objective-C

    - (void)removeObserver:(id)observer Context:(void *)context;

    Swift

    func removeObserver(_ observer: Any!, context: UnsafeMutableRawPointer!)

    Parameters

    observer

    observer to unregister

    context

    context to differentiate between clock objects