Help Contents


Home   Chronometer
Buy Now


Emerald Chronometer Time Synchronization

Emerald Chronometer uses a simplified version of Network Time Protocol (NTP) to synchronize its time displays with time servers on the Internet. That's the short and simple version. The longer, more technical, version follows:

Every time Emerald Chronometer starts up and the "Use NTP" option is ON or whenever that option is changed to ON, the app goes out to NTP servers on the Internet and asks for the current time. It chooses a pool of servers based on the user's country setting: first from the local country's pool, then the continent pool for that country, then the global pool, and finally time.apple.com. This progression happens each time we get a new synchronization; there are four sets of servers in each pool. Emerald Chronometer compares the time thus obtained with the time supplied by the iPhone, and stores the difference as a "skew" value. This skew is applied globally throughout the application to every watch display, with a couple of exceptions described further on. display.

The size of this skew is completely dependent on how accurate the time supplied by the telephone carrier's signal is. In the SF Bay Area where the authors live, it typically varies by up to a few seconds in either direction. In other areas it is reportedly larger. The iPod touch uses a different synchronization mechanism, synchronizing with your desktop computer, so there it will depend on the accuracy of your desktop computer. (You can see the current skew value by tapping on the upper lift indicator light on the main screen.)

When you shut down and restart Emerald Chronometer, it will start with the same skew value as it determined during the previous session, but it will also go get a new skew value in case it has changed since the last time the application was run. If the skew has changed (or if this is the first time the application has ever been run), then the hands showing the time will jump to the new correct value.

When the iPhone gets a new cell-phone time (for example, when it switches to a different tower), the iPhone OS changes its internal time base used by all applications, and sends a notification to running applications that the time has changed. When Emerald Chronometer gets this notification, it immediately changes the skew value by the amount that the internal time base has apparently shifted; it determines this shift by comparing against another internal time base that does not change with cell-tower changes (CACurrentMediaTime). Then it again goes out to the NTP servers to get the actual skew, which is typically quite close to the "educated guess". Occasionally, especially in fringe-reception areas, you will see the time indicator blink for a few seconds while it does this.

A result of this approach, including the reliance on CACurrentMediaTime while the device is unlocked, is that interval timing is continuously accurate even across time changes due to cell-tower time shifts, again so long as the device is unlocked. If the device is locked after timing starts but before the first synchronization is obtained, however, accuracy is lost because there is no way of definitively calibrating the starting time. The mechanism is a bit complex, but the end result is that hands which display interval timing will move smoothly through cell-tower time changes before and including the first synchronization, unlike other time hands. After synchronization, all hands will continue to move smoothly.

When waking up after the screen has been locked, Emerald Chronometer resynchronizes with NTP, because to save power the iPhone's internal clocks are allowed to shut down while the screen is locked. To maintain full NTP synchronization while the screen is locked, you can set an alarm on Istanbul or Thebes; if an alarm is pending, Emerald Chronometer keeps the internal clocks going so that the alarm can be sounded at the correct time. The battery will drain about 50% faster if an alarm is pending.

Notifications

Emerald Chronometer does not maintain NTP synchronization when it is running in the background. Therefore, if the iPhone's time base changes while Emerald Chronometer is not running, then alarm notifications for Istanbul and Thebes may be offset from their requested time. That can happen in a number of circumstances: To minimize these small errors when relying on alarms, bring up Emerald Chronometer occasionally (long enough for the top-left light to become solid green); this will reset the time base used for alarms.

In addition, the OS does not guarantee that local notifications are delivered at the exact time specified; there may be a few-second delay if the device is busy with other activity.




The Watches

                    
Copyright © 2010, Emerald Sequoia LLC; last updated: 2010 June 11

Help Contents

Copyright Information