Difference between revisions of "Unit RTC"

From Ultibo.org
Jump to: navigation, search
 
(4 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
'''Ultibo Real Time Clock device interface unit'''
+
'''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.
 
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.
Line 33: Line 33:
 
| <code>RTC_TYPE_NONE = 0;</code>
 
| <code>RTC_TYPE_NONE = 0;</code>
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RTC_TYPE_MAX = 0;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RTC_TYPE_NAMES:array[RTC_TYPE_NONE..RTC_TYPE_MAX] of String = ('RTC_TYPE_NONE');</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
Line 46: Line 56:
 
|-
 
|-
 
| <code>RTC_STATE_ENABLED = 1;</code>
 
| <code>RTC_STATE_ENABLED = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RTC_STATE_MAX = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RTC_STATE_NAMES:array[RTC_STATE_DISABLED..RTC_STATE_MAX] of String = ('RTC_STATE_DISABLED', 'RTC_STATE_ENABLED');</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 280: Line 300:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 295: Line 315:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 307: Line 327:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 319: Line 339:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 331: Line 351:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 343: Line 363:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''RTC'''
+
! RTC
 
| The RTC device to get properties from
 
| The RTC device to get properties from
 
|-
 
|-
! '''Properties'''
+
! Properties
 
| Pointer to a PRTCProperties structure to fill in
 
| Pointer to a PRTCProperties structure to fill in
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
! '''Note'''
+
! Note
 
| Replaced by RTCDeviceGetProperties for consistency
 
| Replaced by RTCDeviceGetProperties for consistency
 
|-
 
|-
Line 364: Line 384:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''RTC'''
+
! RTC
 
| The RTC device to get properties from
 
| The RTC device to get properties from
 
|-
 
|-
! '''Properties'''
+
! Properties
 
| Pointer to a PRTCProperties structure to fill in
 
| Pointer to a PRTCProperties structure to fill in
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 382: Line 402:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! Return
 
| Pointer to new RTC entry or nil if RTC could not be created
 
| Pointer to new RTC entry or nil if RTC could not be created
 
|-
 
|-
Line 394: Line 414:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Size'''
+
! Size
 
| Size in bytes to allocate for new RTC (Including the RTC entry)
 
| Size in bytes to allocate for new RTC (Including the RTC entry)
 
|-
 
|-
! '''Return'''
+
! Return
 
| Pointer to new RTC entry or nil if RTC could not be created
 
| Pointer to new RTC entry or nil if RTC could not be created
 
|-
 
|-
Line 409: Line 429:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 421: Line 441:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 433: Line 453:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 445: Line 465:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 457: Line 477:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 469: Line 489:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 481: Line 501:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 493: Line 513:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 508: Line 528:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 520: Line 540:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Returned time is 100 nanosecond ticks since 1 January 1601
 
| Returned time is 100 nanosecond ticks since 1 January 1601
 
|-
 
|-
Line 532: Line 552:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Time'''
+
! Time
 
| The time to be set
 
| The time to be set
 
|-
 
|-
! '''Return'''
+
! Return
 
| The device time after setting (or 0 on failure)
 
| The device time after setting (or 0 on failure)
 
|-
 
|-
! '''Note'''
+
! Note
 
| Time and returned time is 100 nanosecond ticks since 1 January 1601
 
| Time and returned time is 100 nanosecond ticks since 1 January 1601
 
|-
 
|-
Line 548: Line 568:
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
<pre style="border: 0; padding-bottom:0px;">function RTCGetCount:LongWord; inline;</pre>
+
<pre style="border: 0; padding-bottom:0px;">function RTCGetCount:LongWord;</pre>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current RTC count</div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current RTC count</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 560: Line 580:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
<pre style="border: 0; padding-bottom:0px;">function RTCDeviceGetDefault:PRTCDevice; inline;</pre>
+
<pre style="border: 0; padding-bottom:0px;">function RTCDeviceGetDefault:PRTCDevice;</pre>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default RTC device</div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default RTC device</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 577: Line 597:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 589: Line 609:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function RTCDeviceTypeToString(RTCType:LongWord):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function RTCDeviceStateToString(RTCState:LongWord):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 601: Line 645:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 613: Line 657:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 625: Line 669:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 637: Line 681:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 649: Line 693:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 661: Line 705:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 673: Line 717:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 685: Line 729:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Latest revision as of 03:36, 15 December 2022

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_*


[Expand]
RTC device type RTC_TYPE_*


[Expand]
RTC device state RTC_STATE_*


[Expand]
RTC device flag RTC_FLAG_*


[Expand]
RTC logging RTC_LOG_*


Type definitions



RTC properties

[Expand]

PRTCProperties = ^TRTCProperties;

TRTCProperties = record

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


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.
RTC_LOG_ENABLED:Boolean;


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


[Expand]
function RTCDeviceGetProperties(RTC:PRTCDevice;Properties:PRTCProperties):LongWord;
Description: Get the properties for the specified RTC device


[Expand]
function RTCDeviceCreate:PRTCDevice;
Description: Create a new RTC entry


[Expand]
function RTCDeviceCreateEx(Size:LongWord):PRTCDevice;
Description: Create a new RTC entry


[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


[Expand]
function SysRTCSetTime(const Time:Int64):Int64;
Description: Set the current time for a RTC device


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