|
- /*!
- * \file rtc-board.h
- *
- * \brief Target board RTC timer and low power modes management
- *
- * \copyright Revised BSD License, see section \ref LICENSE.
- *
- * \code
- * ______ _
- * / _____) _ | |
- * ( (____ _____ ____ _| |_ _____ ____| |__
- * \____ \| ___ | (_ _) ___ |/ ___) _ \
- * _____) ) ____| | | || |_| ____( (___| | | |
- * (______/|_____)_|_|_| \__)_____)\____)_| |_|
- * (C)2013-2017 Semtech
- *
- * \endcode
- *
- * \author Miguel Luis ( Semtech )
- *
- * \author Gregory Cristian ( Semtech )
- */
- #ifndef __RTC_BOARD_H__
- #define __RTC_BOARD_H__
-
- #ifdef __cplusplus
- extern "C"
- {
- #endif
-
- #include <stdint.h>
- #include <stdbool.h>
- #include "timer.h"
-
- /*!
- * \brief Temperature coefficient of the clock source
- */
- #define RTC_TEMP_COEFFICIENT ( -0.035f )
-
- /*!
- * \brief Temperature coefficient deviation of the clock source
- */
- #define RTC_TEMP_DEV_COEFFICIENT ( 0.0035f )
-
- /*!
- * \brief Turnover temperature of the clock source
- */
- #define RTC_TEMP_TURNOVER ( 25.0f )
-
- /*!
- * \brief Turnover temperature deviation of the clock source
- */
- #define RTC_TEMP_DEV_TURNOVER ( 5.0f )
-
- /*!
- * \brief Initializes the RTC timer
- *
- * \remark The timer is based on the RTC
- */
- void RtcInit( void );
-
- /*!
- * \brief Returns the minimum timeout value
- *
- * \retval minTimeout Minimum timeout value in in ticks
- */
- uint32_t RtcGetMinimumTimeout( void );
-
- /*!
- * \brief converts time in ms to time in ticks
- *
- * \param[IN] milliseconds Time in milliseconds
- * \retval returns time in timer ticks
- */
- uint32_t RtcMs2Tick( TimerTime_t milliseconds );
-
- /*!
- * \brief converts time in ticks to time in ms
- *
- * \param[IN] time in timer ticks
- * \retval returns time in milliseconds
- */
- TimerTime_t RtcTick2Ms( uint32_t tick );
-
- /*!
- * \brief Performs a delay of milliseconds by polling RTC
- *
- * \param[IN] milliseconds Delay in ms
- */
- void RtcDelayMs( TimerTime_t milliseconds );
-
- /*!
- * \brief Sets the alarm
- *
- * \note The alarm is set at now (read in this funtion) + timeout
- *
- * \param timeout [IN] Duration of the Timer ticks
- */
- void RtcSetAlarm( uint32_t timeout );
-
- /*!
- * \brief Stops the Alarm
- */
- void RtcStopAlarm( void );
-
- /*!
- * \brief Starts wake up alarm
- *
- * \note Alarm in RtcTimerContext.Time + timeout
- *
- * \param [IN] timeout Timeout value in ticks
- */
- void RtcStartAlarm( uint32_t timeout );
-
- /*!
- * \brief Sets the RTC timer reference
- *
- * \retval value Timer reference value in ticks
- */
- uint32_t RtcSetTimerContext( void );
-
- /*!
- * \brief Gets the RTC timer reference
- *
- * \retval value Timer value in ticks
- */
- uint32_t RtcGetTimerContext( void );
-
- /*!
- * \brief Gets the system time with the number of seconds elapsed since epoch
- *
- * \param [OUT] milliseconds Number of milliseconds elapsed since epoch
- * \retval seconds Number of seconds elapsed since epoch
- */
- uint32_t RtcGetCalendarTime( uint16_t *milliseconds );
-
- /*!
- * \brief Get the RTC timer value
- *
- * \retval RTC Timer value
- */
- uint32_t RtcGetTimerValue( void );
-
- /*!
- * \brief Get the RTC timer elapsed time since the last Alarm was set
- *
- * \retval RTC Elapsed time since the last alarm in ticks.
- */
- uint32_t RtcGetTimerElapsedTime( void );
-
- /*!
- * \brief Writes data0 and data1 to the RTC backup registers
- *
- * \param [IN] data0 1st Data to be written
- * \param [IN] data1 2nd Data to be written
- */
- void RtcBkupWrite( uint32_t data0, uint32_t data1 );
-
- /*!
- * \brief Reads data0 and data1 from the RTC backup registers
- *
- * \param [OUT] data0 1st Data to be read
- * \param [OUT] data1 2nd Data to be read
- */
- void RtcBkupRead( uint32_t* data0, uint32_t* data1 );
-
- /*!
- * \brief Processes pending timer events
- */
- void RtcProcess( void );
-
- /*!
- * \brief Computes the temperature compensation for a period of time on a
- * specific temperature.
- *
- * \param [IN] period Time period to compensate in milliseconds
- * \param [IN] temperature Current temperature
- *
- * \retval Compensated time period
- */
- TimerTime_t RtcTempCompensation( TimerTime_t period, float temperature );
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif // __RTC_BOARD_H__
|