Return to Unit Reference
Description
Ultibo Real Time Clock Device Interface unit
The RTC unit provides the device interface for real time clock modules to be registered with Ultibo core. Each RTC module requires a driver that communicates with the specific hardware to implement the device interface although many devices may use the same chip and will be covered by a single driver.
This unit registers the RTCGetTime
and RTCSetTime
functions with the Platform unit to enable hardware independent access to a real time clock module.
Constants
[Expand]
RTC specific constants RTC_*
RTC_NAME_PREFIX = 'RTC';
|
Name prefix for RTC Devices
|
[Expand]
RTC device type RTC_TYPE_*
RTC_TYPE_NONE = 0;
|
|
|
RTC_TYPE_MAX = 0;
|
|
|
RTC_TYPE_NAMES:array[RTC_TYPE_NONE..RTC_TYPE_MAX] of String = ('RTC_TYPE_NONE');
|
|
[Expand]
RTC device state RTC_STATE_*
RTC_STATE_DISABLED = 0;
|
|
RTC_STATE_ENABLED = 1;
|
|
|
RTC_STATE_MAX = 1;
|
|
|
RTC_STATE_NAMES:array[RTC_STATE_DISABLED..RTC_STATE_MAX] of String = ('RTC_STATE_DISABLED', 'RTC_STATE_ENABLED');
|
|
[Expand]
RTC device flag RTC_FLAG_*
RTC_FLAG_NONE = $00000000;
|
|
RTC_FLAG_ALARM = $00000001;
|
Device supports one or more alarms
|
RTC_FLAG_WATCHDOG = $00000002;
|
Device has a watchdog timer function
|
[Expand]
RTC logging RTC_LOG_*
RTC_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
RTC debugging messages
|
RTC_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
RTC informational messages, such as a device being attached or detached
|
RTC_LOG_LEVEL_WARN = LOG_LEVEL_WARN;
|
RTC warning messages
|
RTC_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
RTC error messages
|
RTC_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No RTC messages
|
Type definitions
RTC properties
[Expand]
PRTCProperties = ^TRTCProperties;
TRTCProperties = record
Flags:LongWord;
|
Device flags (eg RTC_FLAG_ALARM)
|
MinTime:Int64;
|
Minimum time value represented by the device (Normally the power on reset value)
|
MaxTime:Int64;
|
Maximum time value represented by the device (Time when a rollover will occur)
|
AlarmCount:LongWord;
|
Number of alarms supported by the device (0 if not supported)
|
RTC enumeration callback
TRTCEnumerate = function(RTC:PRTCDevice; Data:Pointer):LongWord;
|
|
RTC notification callback
TRTCNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
|
|
RTC device start
TRTCDeviceStart = function(RTC:PRTCDevice):LongWord;
|
|
RTC device stop
TRTCDeviceStop = function(RTC:PRTCDevice):LongWord;
|
|
RTC device get time
TRTCDeviceGetTime = function(RTC:PRTCDevice):Int64;
|
|
RTC device set time
TRTCDeviceSetTime = function(RTC:PRTCDevice; const Time:Int64):Int64;
|
|
RTC device get properties
TRTCDeviceGetProperties = function(RTC:PRTCDevice; Properties:PRTCProperties):LongWord;
|
|
RTC device
[Expand]
PRTCDevice = ^TRTCDevice;
TRTCDevice = record
Device Properties
|
Device:TDevice;
|
The Device entry for this RTC
|
RTC Properties
|
RTCId:LongWord;
|
Unique Id of this RTC in the RTC table
|
RTCState:LongWord;
|
RTC state (eg RTC_STATE_ENABLED)
|
DeviceStart:TRTCDeviceStart;
|
A Device specific DeviceStart method implementing the standard RTC device interface
|
DeviceStop:TRTCDeviceStop;
|
A Device specific DeviceStop method implementing the standard RTC device interface
|
DeviceGetTime:TRTCDeviceGetTime;
|
A Device specific DeviceGetTime method implementing the standard RTC device interface
|
DeviceSetTime:TRTCDeviceSetTime;
|
A Device specific DeviceSetTime method implementing the standard RTC device interface
|
DeviceGetProperties:TRTCDeviceGetProperties;
|
A Device specific DeviceGetProperties method implementing the standard RTC device interface
|
Statistics Properties
|
GetCount:LongWord;
|
|
SetCount:LongWord;
|
|
Driver Properties
|
Lock:TMutexHandle;
|
Device lock
|
Properties:TRTCProperties;
|
Device properties
|
Internal Properties
|
Prev:PRTCDevice;
|
Previous entry in RTC table
|
Next:PRTCDevice;
|
Next entry in RTC table
|
Public variables
RTC logging
RTC_DEFAULT_LOG_LEVEL:LongWord = RTC_LOG_LEVEL_DEBUG;
|
Minimum level for RTC messages. Only messages with level greater than or equal to this will be printed.
|
Function declarations
Initialization functions
[Expand]
procedure RTCInit;
Description: To be documented
RTC functions
[Expand]
function RTCDeviceStart(RTC:PRTCDevice):LongWord;
Description: To be documented
[Expand]
function RTCDeviceStop(RTC:PRTCDevice):LongWord;
Description: To be documented
[Expand]
function RTCDeviceGetTime(RTC:PRTCDevice):Int64;
Description: To be documented
[Expand]
function RTCDeviceSetTime(RTC:PRTCDevice; const Time:Int64):Int64;
Description: To be documented
[Expand]
function RTCDeviceProperties(RTC:PRTCDevice; Properties:PRTCProperties):LongWord; inline;
Description: Get the properties for the specified RTC device
RTC
|
The RTC device to get properties from
|
Properties
|
Pointer to a PRTCProperties structure to fill in
|
Return
|
ERROR_SUCCESS if completed or another error code on failure
|
Note
|
Replaced by RTCDeviceGetProperties for consistency
|
[Expand]
function RTCDeviceGetProperties(RTC:PRTCDevice;Properties:PRTCProperties):LongWord;
Description: Get the properties for the specified RTC device
RTC
|
The RTC device to get properties from
|
Properties
|
Pointer to a PRTCProperties structure to fill in
|
Return
|
ERROR_SUCCESS if completed or another error code on failure
|
[Expand]
function RTCDeviceCreate:PRTCDevice;
Description: Create a new RTC entry
Return
|
Pointer to new RTC entry or nil if RTC could not be created
|
[Expand]
function RTCDeviceCreateEx(Size:LongWord):PRTCDevice;
Description: Create a new RTC entry
Size
|
Size in bytes to allocate for new RTC (Including the RTC entry)
|
Return
|
Pointer to new RTC entry or nil if RTC could not be created
|
[Expand]
function RTCDeviceDestroy(RTC:PRTCDevice):LongWord;
Description: Destroy an existing RTC entry
[Expand]
function RTCDeviceRegister(RTC:PRTCDevice):LongWord;
Description: Register a new RTC in the RTC table
[Expand]
function RTCDeviceDeregister(RTC:PRTCDevice):LongWord;
Description: Deregister a RTC from the RTC table
[Expand]
function RTCDeviceFind(RTCId:LongWord):PRTCDevice;
Description: To be documented
[Expand]
function RTCDeviceFindByName(const Name:String):PRTCDevice; inline;
Description: To be documented
[Expand]
function RTCDeviceFindByDescription(const Description:String):PRTCDevice; inline;
Description: To be documented
[Expand]
function RTCDeviceEnumerate(Callback:TRTCEnumerate; Data:Pointer):LongWord;
Description: To be documented
[Expand]
function RTCDeviceNotification(RTC:PRTCDevice; Callback:TRTCNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
RTL RTC functions
[Expand]
function SysRTCAvailable:Boolean;
Description: Check if an RTC device is available
[Expand]
function SysRTCGetTime:Int64;
Description: Get the current time from a RTC device
Note
|
Returned time is 100 nanosecond ticks since 1 January 1601
|
[Expand]
function SysRTCSetTime(const Time:Int64):Int64;
Description: Set the current time for a RTC device
Time
|
The time to be set
|
Return
|
The device time after setting (or 0 on failure)
|
Note
|
Time and returned time is 100 nanosecond ticks since 1 January 1601
|
RTC helper functions
[Expand]
function RTCGetCount:LongWord;
Description: Get the current RTC count
[Expand]
function RTCDeviceGetDefault:PRTCDevice;
Description: Get the current default RTC device
[Expand]
function RTCDeviceSetDefault(RTC:PRTCDevice):LongWord;
Description: Set the current default RTC device
[Expand]
function RTCDeviceCheck(RTC:PRTCDevice):PRTCDevice;
Description: Check if the supplied RTC is in the RTC table
[Expand]
function RTCDeviceTypeToString(RTCType:LongWord):String;
Description: To be documented
[Expand]
function RTCDeviceStateToString(RTCState:LongWord):String;
Description: To be documented
[Expand]
function RTCTimeIsValid(const Time:TSystemTime):Boolean;
Description: To be documented
[Expand]
function RTCSystemTimeToFileTime(const SystemTime:TSystemTime; var FileTime:Int64):Boolean;
Description: System time is assumed to be UTC and returned file time is UTC
[Expand]
function RTCFileTimeToSystemTime(const FileTime:Int64; var SystemTime:TSystemTime):Boolean;
Description: File time is assumed to be UTC and returned system time is UTC
[Expand]
procedure RTCLog(Level:LongWord; RTC:PRTCDevice; const AText:String);
Description: To be documented
[Expand]
procedure RTCLogInfo(RTC:PRTCDevice; const AText:String); inline;
Description: To be documented
[Expand]
procedure RTCLogWarn(RTC:PRTCDevice; const AText:String); inline;
Description: To be documented
[Expand]
procedure RTCLogError(RTC:PRTCDevice; const AText:String); inline;
Description: To be documented
[Expand]
procedure RTCLogDebug(RTC:PRTCDevice; const AText:String); inline;
Description: To be documented
Return to Unit Reference