Important: |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
Support is provided for receiving Network Identity and Time Zone information. Your radio module must be able to receive NITZ information from the network. The RIL driver for your radio module must be implemented, or extended, to include the +CTZR (Time Zone Reporting) commands parameter (see 3GPP TS27.007 version 6.8.0 Release 6) and to do the following:
- At device boot-up, RIL driver must enable the time zone update
feature (for example, send AT+CTZU=1) and enable time zone
reporting (for example, send AT+CTZR=1).
- In response to a call to
RIL_GetDevCaps, where the
RIL_CAPSTYPE_NITZNOTIFICATIONparameter value is passed, the
RIL driver must return
RIL_CAPS_NITZ_ENABLEDor
RIL_CAPS_NITZ_DISABLED.
- When the radio sends a time zone change notification (for
example, CTZR: <timezone>) the RIL driver must send a RIL
notification of
RIL_NOTIFY_NITZand transmit the change information through a
RILNITZINFOstructure. For more information about
RIL_NOTIFY_NITZ, see
Notification
Miscellaneous Constants.
Note: |
---|
Your code must not call SetSystemTimeor SetLocalTimebetween the time that the RIL driver sends a RIL_NOTIFY_NITZnotification and the Windows Mobile operating system (OS) processes the notification. This could cause a race condition between the time requests and the RIL driver's NITZ information might not be processed. |
Example
In the following example the local time is the 23rd of July 2004 13:39:20 (which is UTC (23rd of July 2004 20:39:20) -7 hours). The local time zone would be -8 (UTC-7 hours - 1 hour daylight adjustment)
The network sends the nitz indicator: +CIEV: nitz,"04/07/23,13:39:20",-28,1. The RIL driver will send a notification. The associated RILNITZINFOstructure will contain the following data:
Copy Code | |
---|---|
typedef struct rilnitzinfo_tag { DWORD cbSize; = size DWORD dwParams; = 7 (0x00000001|0x00000002|0x00000004) DWORD dwNotificationCode; = 0x00000012 | RIL_NCLASS_MISC Int TimeZoneOffsetMinutes; = -420 (28 quarters * 15 Minutes) SYSTEMTIME SysTime; = 2004/07/23 13:39:20:00:000 (as SYSTEMTIME) Int DaylightSavingOffestMinutes; = 60 (1 hour * 60 Minutes) } RILNITZINFO, *LP RILNITZINFO; |
The dwparamsfield indicates that the dwNotificationCode, TimeZoneOffsetMinutesand SysTimemembers contain valid data.
NITZ and Real Time Clock Synchronization at First Boot
When you first boot your device, the Kernel Loader will load the default date of 01/01/03 and start the device's internal clock, activating its tick counter. The real-time clock updates the time according to the logic implemented by the driver. Typically, the time is set to a date that is later and more recent than the default by several years, at least.
If the RIL in your device posts a NITZ that is time-stamped with the initial date of 01/01/03, and is processed after the real-time clock had updated system time to year 2007 or later, then that NITZ will be considered obsolete and will be ignored. To allow the use of this NITZ value, its posting must be delayed after the first boot until the Home Screen is loaded. Three methods for doing this are described below, and will work on both the first and any subsequent boot.
- Implement a one-time application to request a fresh NITZ
acquisition. Some networks may not support this method.
- Preserve the NITZ packet in temporary or persistent storage,
with an incremental time stamp, such as
GetTickCount. When it is entered into the registry, its value
is kept current by the added tick count between its reception and
posting.
- Start the driver for the real-time clock before starting the
RIL driver. This is the recommended approach, because the system
clock will be updated with a current and persistent value early in
the boot process and the clock itself only requires the BUS driver
to function.
Note: |
---|
You must not wait for an external event directly in the RIL layer, such as waiting for the Home Screen to load completely. This might cause the system to hang at boot time and never load the Home Screen. |