Calendar#
Introduction#
The Calendar application for requires software that manages dates, events, alarms, and reminders within hardware constraints. Here's a brief overview of how you would go about building such an application.
Configuration#
Calendar provides three types of trigger those are Alarm, Second and Millisecond.
Second trigger: Provides callback at every one second. To configure Second trigger use, sl_si91x_calendar_register_sec_trigger_callback().
MilliSecond trigger: Provides callback at every one millisecond. To configure MilliSecond trigger use, sl_si91x_calendar_register_msec_trigger_callback().
Alarm trigger: Provides callback at the alarm time configured by the user.To configure Alarm time use, sl_si91x_calendar_set_alarm(), and to configure alarm trigger use sl_si91x_calendar_register_alarm_trigger_callback().
The procedures for setting up a calendar in an si91x is sl_calendar_clock_t, after that These functions will re-initiate and configure the calender sl_si91x_calendar_set_configuration()
For more information on configuring available parameters refer to the respective peripheral example readme document.
Usage#
The common Calendar functions can be used after the calendar Structures are specified, passing an instance of sl_calendar_datetime_config_t. These functions will initiate and configure the calendar below, which is the flow for implementation.
Modules#
Typedefs#
Renaming clock type enum.
Renaming datetime structure.
Renaming month structure.
Renaming days of week structure.
Typedef for the function pointer of the callback function.
Functions#
Enumeration to represent time conversion format.
Enumeration to represent the different RC clock calibration configurations.
Enumeration to represent different ro clock calibration configurations.
Configuration and initialization of Calendar i.e., RTC clock.
Set the date and time of the Calendar RTC.
Fetch the current date and time of an existing Calendar RTC.
Calibrate the RC Clock.
Calibrate the RO Clock.
Register the callback for one milli-second trigger and enables it.
Register the callback for one second trigger and enable it.
Register the callback for alarm trigger and enable it.
Unregister the callback for one milli-second trigger and disable it.
Unregister the callback for one second trigger and disable it.
Unregister the callback for alarm trigger and disable it.
Set the date and time of new alarm in RTC.
Fetch the date and time of an existing alarm set in RTC.
Build the structure for date-time configuration.
Convert Unix timestamp to NTP timestamp.
Convert NTP timestamp to Unix timestamp.
Return the state of one milli-second trigger of RTC (enabled or disabled).
Return the state of one second trigger of RTC (enabled or disabled).
Return the state of alarm trigger of RTC (enabled or disabled).
Starts the Calendar RTC.
Stops the Calendar RTC.
Initialize the calibration for Calendar clocks.
Clear the one milli-second trigger.
Clear the one second trigger.
Clear the alarm trigger.
Initialize calendar operation.
De-initialize calendar operation.
Get the calendar version.
Macros#
Alarm IRQ Handler.
RTC IRQ Handler.
Alarm NVIQ enable.
RTC NVIQ enable.
Time Conversion format enum declaration.
Time Conversion format enum declaration.
Time Conversion format enum declaration.
Typedef Documentation#
sl_calendar_datetime_config_t#
typedef RTC_TIME_CONFIG_T sl_calendar_datetime_config_t
Renaming datetime structure.
sl_calendar_days_of_week_t#
typedef RTC_DAY_OF_WEEK_T sl_calendar_days_of_week_t
Renaming days of week structure.
calendar_callback_t#
typedef void(* calendar_callback_t) (void) )(void)
Typedef for the function pointer of the callback function.
Function Documentation#
TIME_CONVERSION_ENUM#
TIME_CONVERSION_ENUM (time_conversion_enum )
Enumeration to represent time conversion format.
Type | Direction | Argument Name | Description |
---|---|---|---|
time_conversion_enum | N/A |
RC_CLOCK_CALIBRATION_ENUM#
RC_CLOCK_CALIBRATION_ENUM (rc_clock_calibration_enum )
Enumeration to represent the different RC clock calibration configurations.
Type | Direction | Argument Name | Description |
---|---|---|---|
rc_clock_calibration_enum | N/A |
RO_CLOCK_CALIBRATION_ENUM#
RO_CLOCK_CALIBRATION_ENUM (ro_clock_calibration_enum )
Enumeration to represent different ro clock calibration configurations.
Type | Direction | Argument Name | Description |
---|---|---|---|
ro_clock_calibration_enum | N/A |
sl_si91x_calendar_set_configuration#
sl_status_t sl_si91x_calendar_set_configuration (sl_calendar_clock_t clock_type)
Configuration and initialization of Calendar i.e., RTC clock.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_calendar_clock_t | [in] | clock_type | (sl_calendar_clock_t) Enum for RTC Clock Type (RO, RC or XTAL) |
It takes input of clock type enum sl_calendar_clock_t. The clock type can be RO, RC or XTAL.It configures the clock type and after configuration, initialized the RTC clock.
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
SL_STATUS_FAIL (0x0001) - The function is failed
sl_si91x_calendar_set_date_time#
sl_status_t sl_si91x_calendar_set_date_time (sl_calendar_datetime_config_t * config)
Set the date and time of the Calendar RTC.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_calendar_datetime_config_t * | [in] | config | (sl_calendar_datetime_config_t) Pointer to the Date Configuration Structure. |
The input parameters consists of date-time structure, the members of structure are listed below:
date Pointer to the Date Configuration Structure
Century (uint8_t) Century (0-4)
Year (uint8_t) Year (1-99) + (Century * 1000)
Month (enum) Month from the sl_calendar_month_t enum
DayOfWeek (enum) Day of Week from the sl_calendar_days_of_week_t enum
Day Day (uint8_t) (1-31)
Hour Hour (uint8_t) (0-23)
Minute Minutes (uint8_t) (0-59)
Second Seconds (uint8_t) (0-59)
Milliseconds Milliseconds (uint16_t) (0-999)
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_get_date_time#
sl_status_t sl_si91x_calendar_get_date_time (sl_calendar_datetime_config_t * config)
Fetch the current date and time of an existing Calendar RTC.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_calendar_datetime_config_t * | [in] | config | (sl_calendar_datetime_config_t) Pointer to the Date Configuration Structure. |
The input parameters consists of dummy date-time structure. The structure is updated with the current date-time parameters. The members of structure are listed below:
date Pointer to the Date Configuration Structure
Century (uint8_t) Century (0-4)
Year (uint8_t) Year (1-99) + (Century * 1000)
Month (enum) Month from the sl_calendar_month_t enum
DayOfWeek (enum) Day of Week from the sl_calendar_days_of_week_t enum
Day Day (uint8_t) (1-31)
Hour Hour (uint8_t) (0-23)
Minute Minutes (uint8_t) (0-59)
Second Seconds (uint8_t) (0-59)
Milliseconds Milliseconds (uint16_t) (0-999)
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_rcclk_calibration#
sl_status_t sl_si91x_calendar_rcclk_calibration (clock_calibration_config_t * clock_calibration_config)
Calibrate the RC Clock.
Type | Direction | Argument Name | Description |
---|---|---|---|
clock_calibration_config_t * | [in] | clock_calibration_config | ( clock_calibration_config_t) pointer to the clock calibration structure |
If the RC clock is selected as the input clock to calendar, it is recommended to calibrate it after power-sequence. It expects clock calibration structure \refclock_calibration_config_t as input, the members are listed below:
rc_enable_calibration: true to enable and false to disable RC calibration
rc_enable_periodic_calibration: true to enable and false to disable RC periodic calibration
rc_trigger_time: Expected values - 5 sec, 10 sec, 15 sec, 30 sec, 1 min, 2 min RC_CLOCK_CALIBRATION_ENUM
Pre-condition:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
Note
Only RC parameters are utilized in this function.
sl_si91x_calendar_roclk_calibration#
sl_status_t sl_si91x_calendar_roclk_calibration (clock_calibration_config_t * clock_calibration_config)
Calibrate the RO Clock.
Type | Direction | Argument Name | Description |
---|---|---|---|
clock_calibration_config_t * | [in] | clock_calibration_config | ( clock_calibration_config_t) pointer to the clock calibration structure. |
If the RO clock is selected as the input clock to calendar, it is recommended to calibrate it after power-sequence. This function internally calibrates the RC clock also. It expects clock calibration structure clock_calibration_config_t as input, the members are listed below:
rc_enable_calibration: true to enable and false to disable RC calibration
rc_enable_periodic_calibration: true to enable and false to disable RC periodic calibration
rc_trigger_time: Expected values - 5 sec, 10 sec, 15 sec, 30 sec, 1 min, 2 min RC_CLOCK_CALIBRATION_ENUM
ro_enable_calibration: true to enable and false to disable RO calibration
ro_enable_periodic_calibration: true to enable and false to disable periodic calibration
ro_trigger_time: Expected values - 1 sec, 2 sec, 4 sec, 8 sec RO_CLOCK_CALIBRATION_ENUM
Pre-condition:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
Note
Both RC and RO parameters are utilized in this function, so it is compulsory to update all the parameters.
sl_si91x_calendar_register_msec_trigger_callback#
sl_status_t sl_si91x_calendar_register_msec_trigger_callback (calendar_callback_t callback)
Register the callback for one milli-second trigger and enables it.
Type | Direction | Argument Name | Description |
---|---|---|---|
calendar_callback_t | [in] | callback | (function pointer calendar_callback_t) Callback function pointer to be called when msec interrupt is triggered. |
At the time of trigger the function passed in this function as a argument is called. It expects the function pointer as input argument. Before calling this function again, it is mandatory to call sl_si91x_calendar_unregister_msec_trigger_callback, otherwise it returns SL_STATUS_BUSY error-code.
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_OK (0x0000) - Success
SL_STATUS_BUSY (0x0004) - The callback is already registered, unregister previous callback before registering new one
sl_si91x_calendar_register_sec_trigger_callback#
sl_status_t sl_si91x_calendar_register_sec_trigger_callback (calendar_callback_t callback)
Register the callback for one second trigger and enable it.
Type | Direction | Argument Name | Description |
---|---|---|---|
calendar_callback_t | [in] | callback | (function pointer calendar_callback_t) Callback function pointer to be called when sec interrupt is triggered. |
At the time of trigger the function passed in this function as a argument is called. It expects the function pointer as input argument. Before calling this function again, it is mandatory to call sl_si91x_calendar_unregister_sec_trigger_callback, otherwise it returns SL_STATUS_BUSY error-code.
Returns
status 0 if successful, else error code as follow
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_OK (0x0000) - Success
SL_STATUS_BUSY (0x0004) - The callback is already registered, unregister previous callback before registering new one
sl_si91x_calendar_register_alarm_trigger_callback#
sl_status_t sl_si91x_calendar_register_alarm_trigger_callback (calendar_callback_t callback)
Register the callback for alarm trigger and enable it.
Type | Direction | Argument Name | Description |
---|---|---|---|
calendar_callback_t | [in] | callback | (function pointer calendar_callback_t) Callback function pointer to be called when alarm interrupt is triggered. |
At the time of trigger the function passed in this function as a argument is called. It expects the function pointer as input argument. Before calling this function again, it is mandatory to call sl_si91x_calendar_unregister_alarm_trigger_callback, otherwise it returns SL_STATUS_BUSY error-code.
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_OK (0x0000) - Success
SL_STATUS_BUSY (0x0004) - The callback is already registered, unregister previous callback before registering new one
sl_si91x_calendar_unregister_msec_trigger_callback#
sl_status_t sl_si91x_calendar_unregister_msec_trigger_callback (void )
Unregister the callback for one milli-second trigger and disable it.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is mandatory to call this function before registering the callback again.
Pre-condition:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_OK (0x0000) - Success
SL_STATUS_FAIL (0x0001) - The function is failed
sl_si91x_calendar_unregister_sec_trigger_callback#
sl_status_t sl_si91x_calendar_unregister_sec_trigger_callback (void )
Unregister the callback for one second trigger and disable it.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is mandatory to call this function before registering the callback again.
Pre-condition:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_OK (0x0000) - Success
SL_STATUS_FAIL (0x0001) - The function is failed
sl_si91x_calendar_unregister_alarm_trigger_callback#
sl_status_t sl_si91x_calendar_unregister_alarm_trigger_callback (void )
Unregister the callback for alarm trigger and disable it.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is mandatory to call this function before registering the callback again.
Pre-condition:
sl_si91x_calendar_register_alarm_trigger_callback
Returns
status 0 if successful, else error code as follows:
SL_STATUS_OK (0x0000) - Success
SL_STATUS_FAIL (0x0001) - The function is failed
sl_si91x_calendar_set_alarm#
sl_status_t sl_si91x_calendar_set_alarm (sl_calendar_datetime_config_t * alarm)
Set the date and time of new alarm in RTC.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_calendar_datetime_config_t * | [in] | alarm | ( sl_calendar_datetime_config_t) Pointer to the Date Configuration Structure. |
It is a one-shot alarm, after triggering the alarm it is elapsed. The input parameters consists of date-time structure, the members of structure are listed below:
date Pointer to the Date Configuration Structure
Century (uint8_t) Century (0-4)
Year (uint8_t) Year (1-99) + (Century * 1000)
Month (enum) Month from the sl_calendar_month_t enum
DayOfWeek (enum) Day of Week from the sl_calendar_days_of_week_t enum
Day Day (uint8_t) (1-31)
Hour Hour (uint8_t) (0-23)
Minute Minutes (uint8_t) (0-59)
Second Seconds (uint8_t) (0-59)
Milliseconds Milliseconds (uint16_t) (0-999)
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_get_alarm#
sl_status_t sl_si91x_calendar_get_alarm (sl_calendar_datetime_config_t * alarm)
Fetch the date and time of an existing alarm set in RTC.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_calendar_datetime_config_t * | [in] | alarm | ( sl_calendar_datetime_config_t) Pointer to the Date Configuration Structure. |
The input parameters consists of dummy date-time structure. The structure is updated with the current date-time parameters. The members of structure are listed below:
date Pointer to the Date Configuration Structure
Century (uint8_t) Century (0-4)
Year (uint8_t) Year (1-99) + (Century * 1000)
Month (enum) Month from the sl_calendar_month_t enum
DayOfWeek (enum) Day of Week from the sl_calendar_days_of_week_t enum
Day Day (uint8_t) (1-31)
Hour Hour (uint8_t) (0-23)
Minute Minutes (uint8_t) (0-59)
Second Seconds (uint8_t) (0-59)
Milliseconds Milliseconds (uint16_t) (0-999)
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_build_datetime_struct#
sl_status_t sl_si91x_calendar_build_datetime_struct (sl_calendar_datetime_config_t * date, uint8_t Century, uint8_t Year, sl_calendar_month_t Month, sl_calendar_days_of_week_t DayOfWeek, uint8_t Day, uint8_t Hour, uint8_t Minute, uint8_t Second, uint16_t Milliseconds)
Build the structure for date-time configuration.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_calendar_datetime_config_t * | [in] | date | ( sl_calendar_datetime_config_t) Pointer to the Date Configuration Structure |
uint8_t | [in] | Century | (uint8_t) Century (0-4) |
uint8_t | [in] | Year | (uint8_t) Year (1-99) + (Century * 1000) |
sl_calendar_month_t | [in] | Month | (enum) Month from the RTC_MONTH_T enum |
sl_calendar_days_of_week_t | [in] | DayOfWeek | (enum) Day of Week from the RTC_DAY_OF_WEEK_T enum |
uint8_t | [in] | Day | Day (uint8_t) (1-31) |
uint8_t | [in] | Hour | Hour (uint8_t) (0-23) |
uint8_t | [in] | Minute | Minutes (uint8_t) (0-59) |
uint8_t | [in] | Second | Seconds (uint8_t) (0-59) |
uint16_t | [in] | Milliseconds | Milliseconds (uint16_t) (0-999) |
By providing the following parameters as input, it validates and fills the date-time configuration structure with the respective values.
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_convert_unix_time_to_ntp_time#
sl_status_t sl_si91x_calendar_convert_unix_time_to_ntp_time (uint32_t time, uint32_t * ntp_time)
Convert Unix timestamp to NTP timestamp.
Type | Direction | Argument Name | Description |
---|---|---|---|
uint32_t | [in] | time | (uint32_t) Unix timestamp |
uint32_t * | [in] | ntp_time | (uint32_t) variable to store NTP timestamp |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_convert_ntp_time_to_unix_time#
sl_status_t sl_si91x_calendar_convert_ntp_time_to_unix_time (uint32_t ntp_time, uint32_t * time)
Convert NTP timestamp to Unix timestamp.
Type | Direction | Argument Name | Description |
---|---|---|---|
uint32_t | [in] | ntp_time | (uint32_t) NTP timestamp |
uint32_t * | [in] | time | (uint32_t) variable to store Unix timestamp |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_OK (0x0000) - Success
sl_si91x_calendar_is_msec_trigger_enabled#
boolean_t sl_si91x_calendar_is_msec_trigger_enabled (void )
Return the state of one milli-second trigger of RTC (enabled or disabled).
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
If enabled, returns true. If disabled, returns false.
Pre-condition:
Returns
(boolean) true if trigger is enabled, false otherwise
sl_si91x_calendar_is_sec_trigger_enabled#
boolean_t sl_si91x_calendar_is_sec_trigger_enabled (void )
Return the state of one second trigger of RTC (enabled or disabled).
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
If enabled, returns true. If disabled, returns false.
Pre-condition:
Returns
(boolean) true if trigger is enabled, false otherwise
sl_si91x_calendar_is_alarm_trigger_enabled#
boolean_t sl_si91x_calendar_is_alarm_trigger_enabled (void )
Return the state of alarm trigger of RTC (enabled or disabled).
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
If enabled, returns true. If disabled, returns false.
Pre-condition:
sl_si91x_calendar_register_alarm_trigger_callback
Returns
(boolean) true if trigger is enabled, false otherwise
sl_si91x_calendar_rtc_start#
__STATIC_INLINE void sl_si91x_calendar_rtc_start (void )
Starts the Calendar RTC.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Pre-conditions:
Returns
none
sl_si91x_calendar_rtc_stop#
__STATIC_INLINE void sl_si91x_calendar_rtc_stop (void )
Stops the Calendar RTC.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Returns
none
sl_si91x_calendar_calibration_init#
__STATIC_INLINE void sl_si91x_calendar_calibration_init (void )
Initialize the calibration for Calendar clocks.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is mandatory to call this function before calling RO clock calibration or RC clock calibration function.
Returns
none
sl_si91x_calendar_clear_msec_trigger#
__STATIC_INLINE void sl_si91x_calendar_clear_msec_trigger (void )
Clear the one milli-second trigger.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is generally called in the IRQ handler.
Returns
none
sl_si91x_calendar_clear_sec_trigger#
__STATIC_INLINE void sl_si91x_calendar_clear_sec_trigger (void )
Clear the one second trigger.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is generally called in the IRQ handler.
Returns
none
sl_si91x_calendar_clear_alarm_trigger#
__STATIC_INLINE void sl_si91x_calendar_clear_alarm_trigger (void )
Clear the alarm trigger.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It is generally called in the IRQ handler.
Returns
none
sl_si91x_calendar_init#
__STATIC_INLINE void sl_si91x_calendar_init (void )
Initialize calendar operation.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It power ups the RTC domain and starts the calendar clock.
Pre-condition:
Returns
none
sl_si91x_calendar_deinit#
__STATIC_INLINE void sl_si91x_calendar_deinit (void )
De-initialize calendar operation.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
It power down the RTC domain and stops the calendar clock.
Pre-condition:
Returns
none
sl_si91x_calendar_get_version#
sl_calendar_version_t sl_si91x_calendar_get_version (void )
Get the calendar version.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | [in] |
It returns the API version of calendar.
Returns
sl_calendar_version_t type version