1 /** 2 **************************************************************************************** 3 * 4 * @file gr55xx_hal_calendar.h 5 * @author BLE Driver Team 6 * @brief Header file containing functions prototypes of CALENDAR HAL library. 7 * 8 **************************************************************************************** 9 * @attention 10 #####Copyright (c) 2019 GOODIX 11 All rights reserved. 12 13 Redistribution and use in source and binary forms, with or without 14 modification, are permitted provided that the following conditions are met: 15 * Redistributions of source code must retain the above copyright 16 notice, this list of conditions and the following disclaimer. 17 * Redistributions in binary form must reproduce the above copyright 18 notice, this list of conditions and the following disclaimer in the 19 documentation and/or other materials provided with the distribution. 20 * Neither the name of GOODIX nor the names of its contributors may be used 21 to endorse or promote products derived from this software without 22 specific prior written permission. 23 24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 28 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 POSSIBILITY OF SUCH DAMAGE. 35 **************************************************************************************** 36 */ 37 38 /** @addtogroup PERIPHERAL Peripheral Driver 39 * @{ 40 */ 41 42 /** @addtogroup HAL_DRIVER HAL Driver 43 * @{ 44 */ 45 46 /** @defgroup HAL_CALENDAR CALENDAR 47 * @brief CALENDAR HAL module driver. 48 * @{ 49 */ 50 51 /* Define to prevent recursive inclusion -------------------------------------*/ 52 #ifndef __GR55xx_HAL_CALENDAR_H__ 53 #define __GR55xx_HAL_CALENDAR_H__ 54 55 /* Includes ------------------------------------------------------------------*/ 56 #include "gr55xx_ll_calendar.h" 57 #include "gr55xx_hal_def.h" 58 59 #ifdef __cplusplus 60 extern "C" { 61 #endif 62 63 /* Exported types ------------------------------------------------------------*/ 64 /** @addtogroup HAL_CALENDAR_ENUMERATIONS Enumerations 65 * @{ 66 */ 67 68 /** @defgroup HAL_CALENDAR_STATE HAL CALENDAR state 69 * @{ 70 */ 71 /** 72 * @brief HAL CALENDAR State Enumerations definition 73 */ 74 typedef enum { 75 HAL_CALENDAR_STATE_RESET = 0x00, /**< Peripheral not initialized */ 76 HAL_CALENDAR_STATE_READY = 0x01, /**< Peripheral initialized and ready for use */ 77 HAL_CALENDAR_STATE_ERROR = 0x04 /**< Peripheral in error */ 78 } hal_calender_state_t; 79 80 /** @} */ 81 /** @} */ 82 83 84 /** @addtogroup HAL_CALENDAR_STRUCTURES Structures 85 * @{ 86 */ 87 /** @defgroup CALENDAR_Time CALENDAR Time 88 * @{ 89 */ 90 91 /** 92 * @brief CALENDAR_Time calendar time structure definition 93 */ 94 typedef struct _calendar_time { 95 uint8_t sec; /**< Specifies the Calendar time seconds. 96 This parameter must be a number between min_value = 0 and max_value = 59. */ 97 98 uint8_t min; /**< Specifies the Calendar time minutes. 99 This parameter must be a number between min_value = 0 and max_value = 59. */ 100 101 uint8_t hour; /**< Specifies the Calendar time hour. 102 This parameter must be a number between min_value = 0 and max_value = 23. */ 103 104 uint8_t date; /**< Specifies the Calendar date. 105 This parameter must be a number between min_value = 1 and max_value = 31. */ 106 107 uint8_t mon; /**< Specifies the Calendar month. 108 This parameter must be a number between min_value = 1 and max_value = 12. */ 109 110 uint8_t year; /**< Specifies the Calendar year which stars from 2010. 111 This parameter must be a number between min_value = 10 and max_value = 99. */ 112 113 uint8_t week; /**< Specifies the Calendar weekday. 114 This parameter must be a number between min_value = 0 and max_value = 6. */ 115 116 uint16_t ms; /**< Specifies the Calendar time milliseconds. 117 This parameter must be a number between min_value = 0 and max_value = 999. */ 118 } calendar_time_t; 119 120 /** 121 * @brief CALENDAR_Alarm calendar alarm structure definition 122 */ 123 typedef struct _calendar_alarm { 124 uint8_t min; /**< Specifies the alarm time minutes. 125 This parameter must be a number between min_value = 0 and max_value = 59. */ 126 127 uint8_t hour; /**< Specifies the alarm time hour. 128 This parameter must be a number between min_value = 0 and max_value = 23. */ 129 130 uint8_t alarm_sel; /**< Specifies the alarm is on date or weekday. 131 This parameter can be a value of @ref CALENDAR_ALARM_SEL. */ 132 133 uint8_t alarm_date_week_mask; /**< Specifies the alarm date/weekday. 134 If the alarm date is selected, this parameter must be set to a value 135 in the 1 ~ 31 range. 136 If the alarm weekday is selected, this parameter must be a value of 137 @ref CALENDAR_ALARM_WEEKDAY. */ 138 } calendar_alarm_t; 139 140 /** @} */ 141 142 /** @defgroup CALENDAR_handle CALENDAR handle 143 * @{ 144 */ 145 146 /** 147 * @brief CALENDAR handle Structure definition 148 */ 149 typedef struct _calendar_handle { 150 calendar_time_t time_init; /**< Specifies the Calendar inital time. */ 151 152 calendar_alarm_t alarm; /**< Specifies the Calendar date alarm. */ 153 154 hal_lock_t lock; /**< Specifies the Calendar locking object. */ 155 156 uint32_t prev_ms; /**< Accumulated millisecond count .*/ 157 158 uint32_t interval; /**< Specifies the Calendar milliseconds alarm. */ 159 160 uint8_t mode; /**< Specifies the Calendar alarm mode. */ 161 162 uint8_t sec; /**< The seconds for the date alarm. */ 163 164 uint16_t ms; /**< The milliseconds for the date alarm. */ 165 166 hal_calender_state_t state; /**< Calendar state */ 167 } calendar_handle_t; 168 169 /** @} */ 170 171 /** @} */ 172 173 /** @addtogroup HAL_CALENDAR_CALLBACK_STRUCTURES Callback Structures 174 * @{ 175 */ 176 177 /** @defgroup HAL_CALENDAR_Callback Callback 178 * @{ 179 */ 180 181 /** 182 * @brief HAL_CALENDAR Callback function definition 183 */ 184 185 typedef struct _hal_calendar_callback { 186 void (*calendar_alarm_callback)(calendar_handle_t *p_calendar); /**< CALENDAR date count complete callback */ 187 void (*calendar_tick_callback)(calendar_handle_t *p_calendar); /**< CALENDAR tick count complete callback */ 188 void (*calendar_overflow_callback)(calendar_handle_t *p_calendar); /**< CALENDAR count overflow callback */ 189 } hal_calendar_callback_t; 190 191 /** @} */ 192 193 /** @} */ 194 195 /** 196 * @defgroup HAL_CALENDAR_MACRO Defines 197 * @{ 198 */ 199 200 /* Exported constants --------------------------------------------------------*/ 201 /** @defgroup CALENDAR_Exported_Constants CALENDAR Exported Constants 202 * @{ 203 */ 204 205 /** @defgroup CALENDAR_Interrupts CALENDAR Interrupts 206 * @{ 207 */ 208 #define CALENDAR_IT_ALARM AON_CALENDAR_TIMER_CTL_ALARM_INT_EN /**< Alarm interrupt */ 209 #define CALENDAR_IT_WARP AON_CALENDAR_TIMER_CTL_WRAP_INT_EN /**< Warp interrupt */ 210 /** @} */ 211 212 /** @defgroup CALENDAR_Flags CALENDAR Flags 213 * @{ 214 */ 215 #define CALENDAR_FLAG_ALARM AON_SLP_EVENT_CALENDAR_TIMER_ALARM /**< Alarm interrupt flag */ 216 #define CALENDAR_FLAG_WARP AON_SLP_EVENT_CALENDAR_TIMER_WRAP /**< Warp interrupt flag */ 217 /** @} */ 218 219 /** @defgroup CALENDAR_ALARM_SEL CALENDAR Alarm type select 220 * @{ 221 */ 222 #define CALENDAR_ALARM_SEL_DATE (0UL) /**< Alarm in date */ 223 #define CALENDAR_ALARM_SEL_WEEKDAY (1UL) /**< Alarm in weekday */ 224 /** @} */ 225 226 /** @defgroup CALENDAR_ALARM_WEEKDAY CALENDAR Alarm weekday 227 * @{ 228 */ 229 #define CALENDAR_ALARM_WEEKDAY_SUN (0x01ul) /**< Alarm weekday mask Sunday */ 230 #define CALENDAR_ALARM_WEEKDAY_MON (0x02ul) /**< Alarm weekday mask Monday */ 231 #define CALENDAR_ALARM_WEEKDAY_TUE (0x04ul) /**< Alarm weekday mask Tuesday */ 232 #define CALENDAR_ALARM_WEEKDAY_WED (0x08ul) /**< Alarm weekday mask Wednesday */ 233 #define CALENDAR_ALARM_WEEKDAY_THU (0x10ul) /**< Alarm weekday mask Thursday */ 234 #define CALENDAR_ALARM_WEEKDAY_FRI (0x20ul) /**< Alarm weekday mask Friday */ 235 #define CALENDAR_ALARM_WEEKDAY_SAT (0x40ul) /**< Alarm weekday mask Saturday */ 236 /** @} */ 237 238 /** @defgroup CALENDAR_ALARM_DISABLE CALENDAR Alarm mdoe 239 * @{ 240 */ 241 #define CALENDAR_ALARM_DISABLE_DATE (1UL) /**< Disable date alarm */ 242 #define CALENDAR_ALARM_DISABLE_TICK (2UL) /**< Disable tick alarm */ 243 #define CALENDAR_ALARM_DISABLE_ALL ((CALENDAR_ALARM_DISABLE_DATE) | \ 244 CALENDAR_ALARM_DISABLE_TICK) /**< Disable all alarm */ 245 /** @} */ 246 247 /** @} */ 248 249 /* Exported macro ------------------------------------------------------------*/ 250 /** @defgroup CALENDAR_Exported_Macros CALENDAR Exported Macros 251 * @{ 252 */ 253 254 /** @brief Enable the specified CALENDAR peripheral. 255 * @retval None 256 */ 257 #define __HAL_CALENDAR_ENABLE() SET_BITS(AON->CALENDAR_TIMER_CTL, AON_CALENDAR_TIMER_CTL_EN) 258 259 /** @brief Disable the specified CALENDAR peripheral. 260 * @retval None 261 */ 262 #define __HAL_CALENDAR_DISABLE() CLEAR_BITS(AON->CALENDAR_TIMER_CTL, AON_CALENDAR_TIMER_CTL_EN) 263 264 /** @brief Enable the specified CALENDAR interrupts. 265 * @param __INTERRUPT__ Specifies the interrupt source to enable. 266 * This parameter can be one of the following values: 267 * @arg @ref CALENDAR_IT_ALARM Alarm Interrupt 268 * @arg @ref CALENDAR_IT_WARP Warp Interrupt 269 * @retval None 270 */ 271 #define __HAL_CALENDAR_ENABLE_IT(__INTERRUPT__) SET_BITS(AON->CALENDAR_TIMER_CTL, (__INTERRUPT__)) 272 273 /** @brief Disable the specified CALENDAR interrupts. 274 * @param __INTERRUPT__ Specifies the interrupt source to disable. 275 * This parameter can be one of the following values: 276 * @arg @ref CALENDAR_IT_ALARM Alarm Interrupt 277 * @arg @ref CALENDAR_IT_WARP Warp Interrupt 278 * @retval None 279 */ 280 #define __HAL_CALENDAR_DISABLE_IT(__INTERRUPT__) CLEAR_BITS(AON->CALENDAR_TIMER_CTL, (__INTERRUPT__)) 281 282 /** @brief Check whether the specified CALENDAR interrupt flag is set or not. 283 * @param __FLAG__ Specifies the interrupt source to check. 284 * This parameter can be one of the following values: 285 * @arg @ref CALENDAR_FLAG_ALARM Alarm Interrupt event 286 * @arg @ref CALENDAR_FLAG_WARP Warp Interrupt event 287 * @retval The new state of __IT__ (TRUE or FALSE). 288 */ 289 #define __HAL_CALENDAR_GET_IT_SOURCE(__FLAG__) (READ_BITS(AON->SLP_EVENT, (__FLAG__)) == (__FLAG__)) 290 291 /** @brief Clear the specified CALENDAR flag. 292 * @param __FLAG__ Specifies the flag to clear. 293 * This parameter can be one of the following values: 294 * @arg @ref CALENDAR_FLAG_ALARM Alarm Interrupt event 295 * @arg @ref CALENDAR_FLAG_WARP Warp Interrupt event 296 * @retval None 297 */ 298 #define __HAL_CALENDAR_CLEAR_FLAG(__FLAG__) WRITE_REG(AON->SLP_EVENT, ~(__FLAG__)) 299 300 /** @} */ 301 302 /* Private macros ------------------------------------------------------------*/ 303 /** @defgroup CALENDAR_Private_Macro CALENDAR Private Macros 304 * @{ 305 */ 306 307 /** @brief Check if CALENDAR Alarm Type is valid. 308 * @param __TYPE__ CALENDAR Alarm Type. 309 * @retval SET (__TYPE__ is valid) or RESET (__TYPE__ is invalid) 310 */ 311 #define IS_CALENDAR_ALARM_TYPE(__TYPE__) (((__TYPE__) == CALENDAR_ALARM_SEL_DATE) || \ 312 ((__TYPE__) == CALENDAR_ALARM_SEL_WEEKDAY)) 313 314 /** @brief Check if CALENDAR Date is valid. 315 * @param __DATE__ CALENDAR Date. 316 * @retval SET (__DATE__ is valid) or RESET (__DATE__ is invalid) 317 */ 318 #define IS_CALENDAR_DATE(__DATE__) (((__DATE__) > 0) && ((__DATE__) <= 31)) 319 320 /** @brief Check if CALENDAR Weekday is valid. 321 * @param __WEEKDAY__ CALENDAR Weekday. 322 * @retval SET (__WEEKDAY__ is valid) or RESET (__WEEKDAY__ is invalid) 323 */ 324 #define IS_CALENDAR_WEEKDAY(__WEEKDAY__) (((__WEEKDAY__) >= 0) && ((__WEEKDAY__) <= 6)) 325 326 /** @brief Check if CALENDAR year is leap year. 327 * @param __YEAR__ CALENDAR Year. 328 * @retval SET (__YEAR__ is leap year) or RESET (__YEAR__ is nonleap year) 329 */ 330 #define IS_CALENDAR_LEAP_YEAR(__YEAR__) ((((__YEAR__) % 4) == 0 && ((__YEAR__) % 100) != 0) || \ 331 ((__YEAR__) % 400) == 0) 332 333 /** @} */ 334 335 /** @} */ 336 337 /* Exported functions --------------------------------------------------------*/ 338 /** @addtogroup HAL_CALENDAR_DRIVER_FUNCTIONS Functions 339 * @{ 340 */ 341 342 /** @addtogroup CALENDAR_Exported_Functions_Group1 Initialization and de-initialization functions 343 * @brief Initialization and Configuration functions. 344 * 345 @verbatim 346 ============================================================================== 347 ##### Initialization and Configuration functions ##### 348 ============================================================================== 349 [..] 350 This section provides functions allowing to: 351 (+) Initialize and start the CALENDAR according to the specified parameters 352 in the cslendar_init_t of associated handle. 353 (+) Initialize the CALENDAR MSP. 354 355 @endverbatim 356 * @{ 357 */ 358 359 /** 360 **************************************************************************************** 361 * @brief Initialize the CALENDAR according to the specified parameters in the 362 * calendar_init_t of associated handle. 363 * 364 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 365 * information for the specified CALENDAR module. 366 * 367 * @retval ::HAL_OK: Operation is OK. 368 * @retval ::HAL_ERROR: Parameter error or operation not supported. 369 * @retval ::HAL_BUSY: Driver is busy. 370 * @retval ::HAL_TIMEOUT: Timeout occurred. 371 **************************************************************************************** 372 */ 373 hal_status_t hal_calendar_init(calendar_handle_t *p_calendar); 374 375 /** 376 **************************************************************************************** 377 * @brief De-initialize the CALENDAR peripheral. 378 * 379 * @param[in] p_calendar: CALENDAR handle. 380 * 381 * @retval ::HAL_OK: Operation is OK. 382 * @retval ::HAL_ERROR: Parameter error or operation not supported. 383 * @retval ::HAL_BUSY: Driver is busy. 384 * @retval ::HAL_TIMEOUT: Timeout occurred. 385 **************************************************************************************** 386 */ 387 hal_status_t hal_calendar_deinit(calendar_handle_t *p_calendar); 388 389 /** @} */ 390 391 /** @addtogroup CALENDAR_Exported_Functions_Group2 IO operation functions 392 * @brief IO operation functions 393 * 394 @verbatim 395 ============================================================================== 396 ##### IO operation functions ##### 397 ============================================================================== 398 [..] 399 This section provides functions allowing to: 400 (+) Init the CALENDAR time. 401 (+) Get the CALENDAR time. 402 (+) Set the CALENDAR alarm. 403 (+) Disable the CALENDAR alarm. 404 (+) Handle CALENDAR interrupt request and associated function callback. 405 406 @endverbatim 407 * @{ 408 */ 409 410 /** 411 **************************************************************************************** 412 * @brief Initialize the CALENDAR time. 413 * 414 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 415 * information for the specified CALENDAR module. 416 * @param[in] p_time: Pointer to a CALENDAR time struction. 417 * 418 * @retval ::HAL_OK: Operation is OK. 419 * @retval ::HAL_ERROR: Parameter error or operation not supported. 420 * @retval ::HAL_BUSY: Driver is busy. 421 * @retval ::HAL_TIMEOUT: Timeout occurred. 422 **************************************************************************************** 423 */ 424 hal_status_t hal_calendar_init_time(calendar_handle_t *p_calendar, calendar_time_t *p_time); 425 426 /** 427 **************************************************************************************** 428 * @brief Get current CALENDAR time. 429 * 430 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 431 * information for the specified CALENDAR module. 432 * @param[in] p_time: Pointer to a CALENDAR time struction. 433 * 434 * @retval ::HAL_OK: Operation is OK. 435 * @retval ::HAL_ERROR: Parameter error or operation not supported. 436 * @retval ::HAL_BUSY: Driver is busy. 437 * @retval ::HAL_TIMEOUT: Timeout occurred. 438 **************************************************************************************** 439 */ 440 hal_status_t hal_calendar_get_time(calendar_handle_t *p_calendar, calendar_time_t *p_time); 441 442 /** 443 **************************************************************************************** 444 * @brief Set a CALENDAR date alarm. 445 * 446 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 447 * information for the specified CALENDAR module. 448 * @param[in] p_alarm: After seconds will generate an date alarm interrupt. 449 * 450 * @retval ::HAL_OK: Operation is OK. 451 * @retval ::HAL_ERROR: Parameter error or operation not supported. 452 * @retval ::HAL_BUSY: Driver is busy. 453 * @retval ::HAL_TIMEOUT: Timeout occurred. 454 **************************************************************************************** 455 */ 456 hal_status_t hal_calendar_set_alarm(calendar_handle_t *p_calendar, calendar_alarm_t *p_alarm); 457 458 /** 459 **************************************************************************************** 460 * @brief Set a CALENDAR tick alarm. 461 * 462 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 463 * information for the specified CALENDAR module. 464 * @param[in] interval: After milliseconds will generate an milliseconds alarm interrupt. 465 * The value of interval is greater than or equal to 5ms.(Max: 3600*1000 ms) 466 * 467 * @retval ::HAL_OK: Operation is OK. 468 * @retval ::HAL_ERROR: Parameter error or operation not supported. 469 * @retval ::HAL_BUSY: Driver is busy. 470 * @retval ::HAL_TIMEOUT: Timeout occurred. 471 **************************************************************************************** 472 */ 473 hal_status_t hal_calendar_set_tick(calendar_handle_t *p_calendar, uint32_t interval); 474 475 /** 476 **************************************************************************************** 477 * @brief Disable CALENDAR alarm event. 478 * 479 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 480 * information for the specified CALENDAR module. 481 * @param[in] disable_mode: Disable specified CALENDAR alarm mode. 482 * This parameter can be the following values: 483 * @arg @ref CALENDAR_ALARM_DISABLE_DATE 484 * @arg @ref CALENDAR_ALARM_DISABLE_TICK 485 * @arg @ref CALENDAR_ALARM_DISABLE_ALL 486 * 487 * @retval ::HAL_OK: Operation is OK. 488 * @retval ::HAL_ERROR: Parameter error or operation not supported. 489 * @retval ::HAL_BUSY: Driver is busy. 490 * @retval ::HAL_TIMEOUT: Timeout occurred. 491 **************************************************************************************** 492 */ 493 hal_status_t hal_calendar_disable_event(calendar_handle_t *p_calendar, uint32_t disable_mode); 494 495 /** @} */ 496 497 498 /** @addtogroup CALENDAR_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks 499 * @brief IRQ Handler and Callbacks functions 500 * @{ 501 */ 502 503 /** 504 **************************************************************************************** 505 * @brief Handle CALENDAR interrupt request. 506 * 507 * @note When alarm is enabled, CALENDAR will generate an interrupt on conter match alarm value. 508 * 509 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 510 * information for the specified CALENDAR module. 511 **************************************************************************************** 512 */ 513 void calendar_irq_handler(calendar_handle_t *p_calendar); 514 515 /** 516 **************************************************************************************** 517 * @brief CALENDAR date count complete callback. 518 * 519 * @note This function should not be modified. when the callback is needed, 520 * the hal_calendar_alarm_callback can be implemented in the user file. 521 * 522 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 523 * information for the specified CALENDAR module. 524 **************************************************************************************** 525 */ 526 void hal_calendar_alarm_callback(calendar_handle_t *p_calendar); 527 528 /** 529 **************************************************************************************** 530 * @brief CALENDAR milliseconds count complete callback. 531 * 532 * @note This function should not be modified. when the callback is needed, 533 * the hal_calendar_tick_callback can be implemented in the user file. 534 * 535 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 536 * information for the specified CALENDAR module. 537 **************************************************************************************** 538 */ 539 void hal_calendar_tick_callback(calendar_handle_t *p_calendar); 540 541 /** 542 **************************************************************************************** 543 * @brief CALENDAR overflow callback. 544 * 545 * @note This function should not be modified. when the callback is needed, 546 * the hal_calendar_overflow_callback can be implemented in the user file. 547 * 548 * @note The overflow time is about 36 hours. 549 * 550 * @param[in] p_calendar: Pointer to a CALENDAR handle which contains the configuration 551 * information for the specified CALENDAR module. 552 **************************************************************************************** 553 */ 554 void hal_calendar_overflow_callback(calendar_handle_t *p_calendar); 555 556 /** @} */ 557 558 /** @} */ 559 560 #ifdef __cplusplus 561 } 562 #endif 563 564 #endif /* __GR55xx_HAL_CALENDAR_H__ */ 565 566 /** @} */ 567 568 /** @} */ 569 570 /** @} */ 571