1296177Sjhibbits/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. 2296177Sjhibbits * All rights reserved. 3296177Sjhibbits * 4296177Sjhibbits * Redistribution and use in source and binary forms, with or without 5296177Sjhibbits * modification, are permitted provided that the following conditions are met: 6296177Sjhibbits * * Redistributions of source code must retain the above copyright 7296177Sjhibbits * notice, this list of conditions and the following disclaimer. 8296177Sjhibbits * * Redistributions in binary form must reproduce the above copyright 9296177Sjhibbits * notice, this list of conditions and the following disclaimer in the 10296177Sjhibbits * documentation and/or other materials provided with the distribution. 11296177Sjhibbits * * Neither the name of Freescale Semiconductor nor the 12296177Sjhibbits * names of its contributors may be used to endorse or promote products 13296177Sjhibbits * derived from this software without specific prior written permission. 14296177Sjhibbits * 15296177Sjhibbits * 16296177Sjhibbits * ALTERNATIVELY, this software may be distributed under the terms of the 17296177Sjhibbits * GNU General Public License ("GPL") as published by the Free Software 18296177Sjhibbits * Foundation, either version 2 of that License or (at your option) any 19296177Sjhibbits * later version. 20296177Sjhibbits * 21296177Sjhibbits * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 22296177Sjhibbits * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23296177Sjhibbits * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24296177Sjhibbits * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 25296177Sjhibbits * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26296177Sjhibbits * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27296177Sjhibbits * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28296177Sjhibbits * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29296177Sjhibbits * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30296177Sjhibbits * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31296177Sjhibbits */ 32296177Sjhibbits 33296177Sjhibbits/**************************************************************************//** 34296177Sjhibbits @File fm_rtc_ext.h 35296177Sjhibbits 36296177Sjhibbits @Description External definitions and API for FM RTC IEEE1588 Timer Module. 37296177Sjhibbits 38296177Sjhibbits @Cautions None. 39296177Sjhibbits*//***************************************************************************/ 40296177Sjhibbits 41296177Sjhibbits#ifndef __FM_RTC_EXT_H__ 42296177Sjhibbits#define __FM_RTC_EXT_H__ 43296177Sjhibbits 44296177Sjhibbits 45296177Sjhibbits#include "error_ext.h" 46296177Sjhibbits#include "std_ext.h" 47296177Sjhibbits 48296177Sjhibbits 49296177Sjhibbits/**************************************************************************//** 50296177Sjhibbits 51296177Sjhibbits @Group FM_grp Frame Manager API 52296177Sjhibbits 53296177Sjhibbits @Description FM API functions, definitions and enums 54296177Sjhibbits 55296177Sjhibbits @{ 56296177Sjhibbits*//***************************************************************************/ 57296177Sjhibbits 58296177Sjhibbits/**************************************************************************//** 59296177Sjhibbits @Group fm_rtc_grp FM RTC 60296177Sjhibbits 61296177Sjhibbits @Description FM RTC functions, definitions and enums. 62296177Sjhibbits 63296177Sjhibbits @{ 64296177Sjhibbits*//***************************************************************************/ 65296177Sjhibbits 66296177Sjhibbits/**************************************************************************//** 67296177Sjhibbits @Group fm_rtc_init_grp FM RTC Initialization Unit 68296177Sjhibbits 69296177Sjhibbits @Description FM RTC initialization API. 70296177Sjhibbits 71296177Sjhibbits @{ 72296177Sjhibbits*//***************************************************************************/ 73296177Sjhibbits 74296177Sjhibbits/**************************************************************************//** 75296177Sjhibbits @Description FM RTC Alarm Polarity Options. 76296177Sjhibbits*//***************************************************************************/ 77296177Sjhibbitstypedef enum e_FmRtcAlarmPolarity 78296177Sjhibbits{ 79296177Sjhibbits e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH, /**< Active-high output polarity */ 80296177Sjhibbits e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW /**< Active-low output polarity */ 81296177Sjhibbits} e_FmRtcAlarmPolarity; 82296177Sjhibbits 83296177Sjhibbits/**************************************************************************//** 84296177Sjhibbits @Description FM RTC Trigger Polarity Options. 85296177Sjhibbits*//***************************************************************************/ 86296177Sjhibbitstypedef enum e_FmRtcTriggerPolarity 87296177Sjhibbits{ 88296177Sjhibbits e_FM_RTC_TRIGGER_ON_RISING_EDGE, /**< Trigger on rising edge */ 89296177Sjhibbits e_FM_RTC_TRIGGER_ON_FALLING_EDGE /**< Trigger on falling edge */ 90296177Sjhibbits} e_FmRtcTriggerPolarity; 91296177Sjhibbits 92296177Sjhibbits/**************************************************************************//** 93296177Sjhibbits @Description IEEE1588 Timer Module FM RTC Optional Clock Sources. 94296177Sjhibbits*//***************************************************************************/ 95296177Sjhibbitstypedef enum e_FmSrcClock 96296177Sjhibbits{ 97296177Sjhibbits e_FM_RTC_SOURCE_CLOCK_EXTERNAL, /**< external high precision timer reference clock */ 98296177Sjhibbits e_FM_RTC_SOURCE_CLOCK_SYSTEM, /**< MAC system clock */ 99296177Sjhibbits e_FM_RTC_SOURCE_CLOCK_OSCILATOR /**< RTC clock oscilator */ 100296177Sjhibbits}e_FmSrcClk; 101296177Sjhibbits 102296177Sjhibbits/**************************************************************************//** 103296177Sjhibbits @Description FM RTC configuration parameters structure. 104296177Sjhibbits 105296177Sjhibbits This structure should be passed to FM_RTC_Config(). 106296177Sjhibbits*//***************************************************************************/ 107296177Sjhibbitstypedef struct t_FmRtcParams 108296177Sjhibbits{ 109296177Sjhibbits t_Handle h_Fm; /**< FM Handle*/ 110296177Sjhibbits uintptr_t baseAddress; /**< Base address of FM RTC registers */ 111296177Sjhibbits t_Handle h_App; /**< A handle to an application layer object; This handle will 112296177Sjhibbits be passed by the driver upon calling the above callbacks */ 113296177Sjhibbits} t_FmRtcParams; 114296177Sjhibbits 115296177Sjhibbits 116296177Sjhibbits/**************************************************************************//** 117296177Sjhibbits @Function FM_RTC_Config 118296177Sjhibbits 119296177Sjhibbits @Description Configures the FM RTC module according to user's parameters. 120296177Sjhibbits 121296177Sjhibbits The driver assigns default values to some FM RTC parameters. 122296177Sjhibbits These parameters can be overwritten using the advanced 123296177Sjhibbits configuration routines. 124296177Sjhibbits 125296177Sjhibbits @Param[in] p_FmRtcParam - FM RTC configuration parameters. 126296177Sjhibbits 127296177Sjhibbits @Return Handle to the new FM RTC object; NULL pointer on failure. 128296177Sjhibbits 129296177Sjhibbits @Cautions None 130296177Sjhibbits*//***************************************************************************/ 131296177Sjhibbitst_Handle FM_RTC_Config(t_FmRtcParams *p_FmRtcParam); 132296177Sjhibbits 133296177Sjhibbits/**************************************************************************//** 134296177Sjhibbits @Function FM_RTC_Init 135296177Sjhibbits 136296177Sjhibbits @Description Initializes the FM RTC driver and hardware. 137296177Sjhibbits 138296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 139296177Sjhibbits 140296177Sjhibbits @Return E_OK on success; Error code otherwise. 141296177Sjhibbits 142296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 143296177Sjhibbits*//***************************************************************************/ 144296177Sjhibbitst_Error FM_RTC_Init(t_Handle h_FmRtc); 145296177Sjhibbits 146296177Sjhibbits/**************************************************************************//** 147296177Sjhibbits @Function FM_RTC_Free 148296177Sjhibbits 149296177Sjhibbits @Description Frees the FM RTC object and all allocated resources. 150296177Sjhibbits 151296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 152296177Sjhibbits 153296177Sjhibbits @Return E_OK on success; Error code otherwise. 154296177Sjhibbits 155296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 156296177Sjhibbits*//***************************************************************************/ 157296177Sjhibbitst_Error FM_RTC_Free(t_Handle h_FmRtc); 158296177Sjhibbits 159296177Sjhibbits 160296177Sjhibbits/**************************************************************************//** 161296177Sjhibbits @Group fm_rtc_adv_config_grp FM RTC Advanced Configuration Unit 162296177Sjhibbits 163296177Sjhibbits @Description FM RTC advanced configuration functions. 164296177Sjhibbits 165296177Sjhibbits @{ 166296177Sjhibbits*//***************************************************************************/ 167296177Sjhibbits 168296177Sjhibbits/**************************************************************************//** 169296177Sjhibbits @Function FM_RTC_ConfigPeriod 170296177Sjhibbits 171296177Sjhibbits @Description Configures the period of the timestamp if different than 172296177Sjhibbits default [1000]. 173296177Sjhibbits 174296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 175296177Sjhibbits @Param[in] period - Period in nano-seconds. 176296177Sjhibbits 177296177Sjhibbits @Return E_OK on success; Error code otherwise. 178296177Sjhibbits 179296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 180296177Sjhibbits*//***************************************************************************/ 181296177Sjhibbitst_Error FM_RTC_ConfigPeriod(t_Handle h_FmRtc, uint32_t period); 182296177Sjhibbits 183296177Sjhibbits/**************************************************************************//** 184296177Sjhibbits @Function FM_RTC_ConfigSourceClock 185296177Sjhibbits 186296177Sjhibbits @Description Configures the source clock of the RTC. 187296177Sjhibbits 188296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 189296177Sjhibbits @Param[in] srcClk - Source clock selection. 190296177Sjhibbits @Param[in] freqInMhz - the source-clock frequency (in MHz). 191296177Sjhibbits 192296177Sjhibbits @Return E_OK on success; Error code otherwise. 193296177Sjhibbits 194296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 195296177Sjhibbits*//***************************************************************************/ 196296177Sjhibbitst_Error FM_RTC_ConfigSourceClock(t_Handle h_FmRtc, 197296177Sjhibbits e_FmSrcClk srcClk, 198296177Sjhibbits uint32_t freqInMhz); 199296177Sjhibbits 200296177Sjhibbits/**************************************************************************//** 201296177Sjhibbits @Function FM_RTC_ConfigPulseRealignment 202296177Sjhibbits 203296177Sjhibbits @Description Configures the RTC to automatic FIPER pulse realignment in 204296177Sjhibbits response to timer adjustments [FALSE] 205296177Sjhibbits 206296177Sjhibbits In this mode, the RTC clock is identical to the source clock. 207296177Sjhibbits This feature can be useful when the system contains an external 208296177Sjhibbits RTC with inherent frequency compensation. 209296177Sjhibbits 210296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 211296177Sjhibbits @Param[in] enable - TRUE to enable automatic realignment. 212296177Sjhibbits 213296177Sjhibbits @Return E_OK on success; Error code otherwise. 214296177Sjhibbits 215296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 216296177Sjhibbits*//***************************************************************************/ 217296177Sjhibbitst_Error FM_RTC_ConfigPulseRealignment(t_Handle h_FmRtc, bool enable); 218296177Sjhibbits 219296177Sjhibbits/**************************************************************************//** 220296177Sjhibbits @Function FM_RTC_ConfigFrequencyBypass 221296177Sjhibbits 222296177Sjhibbits @Description Configures the RTC to bypass the frequency compensation 223296177Sjhibbits mechanism. [FALSE] 224296177Sjhibbits 225296177Sjhibbits In this mode, the RTC clock is identical to the source clock. 226296177Sjhibbits This feature can be useful when the system contains an external 227296177Sjhibbits RTC with inherent frequency compensation. 228296177Sjhibbits 229296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 230296177Sjhibbits @Param[in] enabled - TRUE to bypass frequency compensation; 231296177Sjhibbits FALSE otherwise. 232296177Sjhibbits 233296177Sjhibbits @Return E_OK on success; Error code otherwise. 234296177Sjhibbits 235296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 236296177Sjhibbits*//***************************************************************************/ 237296177Sjhibbitst_Error FM_RTC_ConfigFrequencyBypass(t_Handle h_FmRtc, bool enabled); 238296177Sjhibbits 239296177Sjhibbits/**************************************************************************//** 240296177Sjhibbits @Function FM_RTC_ConfigInvertedInputClockPhase 241296177Sjhibbits 242296177Sjhibbits @Description Configures the RTC to invert the source clock phase on input. 243296177Sjhibbits [FALSE] 244296177Sjhibbits 245296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 246296177Sjhibbits @Param[in] inverted - TRUE to invert the source clock phase on input. 247296177Sjhibbits FALSE otherwise. 248296177Sjhibbits 249296177Sjhibbits @Return E_OK on success; Error code otherwise. 250296177Sjhibbits 251296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 252296177Sjhibbits*//***************************************************************************/ 253296177Sjhibbitst_Error FM_RTC_ConfigInvertedInputClockPhase(t_Handle h_FmRtc, bool inverted); 254296177Sjhibbits 255296177Sjhibbits/**************************************************************************//** 256296177Sjhibbits @Function FM_RTC_ConfigInvertedOutputClockPhase 257296177Sjhibbits 258296177Sjhibbits @Description Configures the RTC to invert the output clock phase. 259296177Sjhibbits [FALSE] 260296177Sjhibbits 261296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 262296177Sjhibbits @Param[in] inverted - TRUE to invert the output clock phase. 263296177Sjhibbits FALSE otherwise. 264296177Sjhibbits 265296177Sjhibbits @Return E_OK on success; Error code otherwise. 266296177Sjhibbits 267296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 268296177Sjhibbits*//***************************************************************************/ 269296177Sjhibbitst_Error FM_RTC_ConfigInvertedOutputClockPhase(t_Handle h_FmRtc, bool inverted); 270296177Sjhibbits 271296177Sjhibbits/**************************************************************************//** 272296177Sjhibbits @Function FM_RTC_ConfigOutputClockDivisor 273296177Sjhibbits 274296177Sjhibbits @Description Configures the divisor for generating the output clock from 275296177Sjhibbits the RTC clock. [0x00000002] 276296177Sjhibbits 277296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 278296177Sjhibbits @Param[in] divisor - Divisor for generation of the output clock. 279296177Sjhibbits 280296177Sjhibbits @Return E_OK on success; Error code otherwise. 281296177Sjhibbits 282296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 283296177Sjhibbits*//***************************************************************************/ 284296177Sjhibbitst_Error FM_RTC_ConfigOutputClockDivisor(t_Handle h_FmRtc, uint16_t divisor); 285296177Sjhibbits 286296177Sjhibbits/**************************************************************************//** 287296177Sjhibbits @Function FM_RTC_ConfigAlarmPolarity 288296177Sjhibbits 289296177Sjhibbits @Description Configures the polarity (active-high/active-low) of a specific 290296177Sjhibbits alarm signal. [e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH] 291296177Sjhibbits 292296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 293296177Sjhibbits @Param[in] alarmId - Alarm ID. 294296177Sjhibbits @Param[in] alarmPolarity - Alarm polarity. 295296177Sjhibbits 296296177Sjhibbits @Return E_OK on success; Error code otherwise. 297296177Sjhibbits 298296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 299296177Sjhibbits*//***************************************************************************/ 300296177Sjhibbitst_Error FM_RTC_ConfigAlarmPolarity(t_Handle h_FmRtc, 301296177Sjhibbits uint8_t alarmId, 302296177Sjhibbits e_FmRtcAlarmPolarity alarmPolarity); 303296177Sjhibbits 304296177Sjhibbits/**************************************************************************//** 305296177Sjhibbits @Function FM_RTC_ConfigExternalTriggerPolarity 306296177Sjhibbits 307296177Sjhibbits @Description Configures the polarity (rising/falling edge) of a specific 308296177Sjhibbits external trigger signal. [e_FM_RTC_TRIGGER_ON_FALLING_EDGE] 309296177Sjhibbits 310296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 311296177Sjhibbits @Param[in] triggerId - Trigger ID. 312296177Sjhibbits @Param[in] triggerPolarity - Trigger polarity. 313296177Sjhibbits 314296177Sjhibbits @Return E_OK on success; Error code otherwise. 315296177Sjhibbits 316296177Sjhibbits @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). 317296177Sjhibbits*//***************************************************************************/ 318296177Sjhibbitst_Error FM_RTC_ConfigExternalTriggerPolarity(t_Handle h_FmRtc, 319296177Sjhibbits uint8_t triggerId, 320296177Sjhibbits e_FmRtcTriggerPolarity triggerPolarity); 321296177Sjhibbits 322296177Sjhibbits/** @} */ /* end of fm_rtc_adv_config_grp */ 323296177Sjhibbits/** @} */ /* end of fm_rtc_init_grp */ 324296177Sjhibbits 325296177Sjhibbits 326296177Sjhibbits/**************************************************************************//** 327296177Sjhibbits @Group fm_rtc_control_grp FM RTC Control Unit 328296177Sjhibbits 329296177Sjhibbits @Description FM RTC runtime control API. 330296177Sjhibbits 331296177Sjhibbits @{ 332296177Sjhibbits*//***************************************************************************/ 333296177Sjhibbits 334296177Sjhibbits/**************************************************************************//** 335296177Sjhibbits @Function t_FmRtcExceptionsCallback 336296177Sjhibbits 337296177Sjhibbits @Description Exceptions user callback routine, used for RTC different mechanisms. 338296177Sjhibbits 339296177Sjhibbits @Param[in] h_App - User's application descriptor. 340296177Sjhibbits @Param[in] id - source id. 341296177Sjhibbits*//***************************************************************************/ 342296177Sjhibbitstypedef void (t_FmRtcExceptionsCallback) ( t_Handle h_App, uint8_t id); 343296177Sjhibbits 344296177Sjhibbits/**************************************************************************//** 345296177Sjhibbits @Description FM RTC alarm parameters. 346296177Sjhibbits*//***************************************************************************/ 347296177Sjhibbitstypedef struct t_FmRtcAlarmParams { 348296177Sjhibbits uint8_t alarmId; /**< 0 or 1 */ 349296177Sjhibbits uint64_t alarmTime; /**< In nanoseconds, the time when the alarm 350296177Sjhibbits should go off - must be a multiple of 351296177Sjhibbits the RTC period */ 352296177Sjhibbits t_FmRtcExceptionsCallback *f_AlarmCallback; /**< This routine will be called when RTC 353296177Sjhibbits reaches alarmTime */ 354296177Sjhibbits bool clearOnExpiration; /**< TRUE to turn off the alarm once expired. */ 355296177Sjhibbits} t_FmRtcAlarmParams; 356296177Sjhibbits 357296177Sjhibbits/**************************************************************************//** 358296177Sjhibbits @Description FM RTC Periodic Pulse parameters. 359296177Sjhibbits*//***************************************************************************/ 360296177Sjhibbitstypedef struct t_FmRtcPeriodicPulseParams { 361296177Sjhibbits uint8_t periodicPulseId; /**< 0 or 1 */ 362296177Sjhibbits uint64_t periodicPulsePeriod; /**< In Nanoseconds. Must be 363296177Sjhibbits a multiple of the RTC period */ 364296177Sjhibbits t_FmRtcExceptionsCallback *f_PeriodicPulseCallback; /**< This routine will be called every 365296177Sjhibbits periodicPulsePeriod. */ 366296177Sjhibbits} t_FmRtcPeriodicPulseParams; 367296177Sjhibbits 368296177Sjhibbits/**************************************************************************//** 369296177Sjhibbits @Description FM RTC Periodic Pulse parameters. 370296177Sjhibbits*//***************************************************************************/ 371296177Sjhibbitstypedef struct t_FmRtcExternalTriggerParams { 372296177Sjhibbits uint8_t externalTriggerId; /**< 0 or 1 */ 373296177Sjhibbits bool usePulseAsInput; /**< Use the pulse interrupt instead of 374296177Sjhibbits an external signal */ 375296177Sjhibbits t_FmRtcExceptionsCallback *f_ExternalTriggerCallback; /**< This routine will be called every 376296177Sjhibbits periodicPulsePeriod. */ 377296177Sjhibbits} t_FmRtcExternalTriggerParams; 378296177Sjhibbits 379296177Sjhibbits 380296177Sjhibbits/**************************************************************************//** 381296177Sjhibbits @Function FM_RTC_Enable 382296177Sjhibbits 383296177Sjhibbits @Description Enable the RTC (time count is started). 384296177Sjhibbits 385296177Sjhibbits The user can select to resume the time count from previous 386296177Sjhibbits point, or to restart the time count. 387296177Sjhibbits 388296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 389296177Sjhibbits @Param[in] resetClock - Restart the time count from zero. 390296177Sjhibbits 391296177Sjhibbits @Return E_OK on success; Error code otherwise. 392296177Sjhibbits 393296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 394296177Sjhibbits*//***************************************************************************/ 395296177Sjhibbitst_Error FM_RTC_Enable(t_Handle h_FmRtc, bool resetClock); 396296177Sjhibbits 397296177Sjhibbits/**************************************************************************//** 398296177Sjhibbits @Function FM_RTC_Disable 399296177Sjhibbits 400296177Sjhibbits @Description Disables the RTC (time count is stopped). 401296177Sjhibbits 402296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 403296177Sjhibbits 404296177Sjhibbits @Return E_OK on success; Error code otherwise. 405296177Sjhibbits 406296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 407296177Sjhibbits*//***************************************************************************/ 408296177Sjhibbitst_Error FM_RTC_Disable(t_Handle h_FmRtc); 409296177Sjhibbits 410296177Sjhibbits/**************************************************************************//** 411296177Sjhibbits @Function FM_RTC_SetClockOffset 412296177Sjhibbits 413296177Sjhibbits @Description Sets the clock offset (usually relative to another clock). 414296177Sjhibbits 415296177Sjhibbits The user can pass a negative offset value. 416296177Sjhibbits 417296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 418296177Sjhibbits @Param[in] offset - New clock offset (in nanoseconds). 419296177Sjhibbits 420296177Sjhibbits @Return E_OK on success; Error code otherwise. 421296177Sjhibbits 422296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 423296177Sjhibbits*//***************************************************************************/ 424296177Sjhibbitst_Error FM_RTC_SetClockOffset(t_Handle h_FmRtc, int64_t offset); 425296177Sjhibbits 426296177Sjhibbits/**************************************************************************//** 427296177Sjhibbits @Function FM_RTC_SetAlarm 428296177Sjhibbits 429296177Sjhibbits @Description Schedules an alarm event to a given RTC time. 430296177Sjhibbits 431296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 432296177Sjhibbits @Param[in] p_FmRtcAlarmParams - Alarm parameters. 433296177Sjhibbits 434296177Sjhibbits @Return E_OK on success; Error code otherwise. 435296177Sjhibbits 436296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 437296177Sjhibbits Must be called only prior to FM_RTC_Enable(). 438296177Sjhibbits*//***************************************************************************/ 439296177Sjhibbitst_Error FM_RTC_SetAlarm(t_Handle h_FmRtc, t_FmRtcAlarmParams *p_FmRtcAlarmParams); 440296177Sjhibbits 441296177Sjhibbits/**************************************************************************//** 442296177Sjhibbits @Function FM_RTC_SetPeriodicPulse 443296177Sjhibbits 444296177Sjhibbits @Description Sets a periodic pulse. 445296177Sjhibbits 446296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 447296177Sjhibbits @Param[in] p_FmRtcPeriodicPulseParams - Periodic pulse parameters. 448296177Sjhibbits 449296177Sjhibbits @Return E_OK on success; Error code otherwise. 450296177Sjhibbits 451296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 452296177Sjhibbits Must be called only prior to FM_RTC_Enable(). 453296177Sjhibbits*//***************************************************************************/ 454296177Sjhibbitst_Error FM_RTC_SetPeriodicPulse(t_Handle h_FmRtc, t_FmRtcPeriodicPulseParams *p_FmRtcPeriodicPulseParams); 455296177Sjhibbits 456296177Sjhibbits/**************************************************************************//** 457296177Sjhibbits @Function FM_RTC_ClearPeriodicPulse 458296177Sjhibbits 459296177Sjhibbits @Description Clears a periodic pulse. 460296177Sjhibbits 461296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 462296177Sjhibbits @Param[in] periodicPulseId - Periodic pulse id. 463296177Sjhibbits 464296177Sjhibbits @Return E_OK on success; Error code otherwise. 465296177Sjhibbits 466296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 467296177Sjhibbits*//***************************************************************************/ 468296177Sjhibbitst_Error FM_RTC_ClearPeriodicPulse(t_Handle h_FmRtc, uint8_t periodicPulseId); 469296177Sjhibbits 470296177Sjhibbits/**************************************************************************//** 471296177Sjhibbits @Function FM_RTC_SetExternalTrigger 472296177Sjhibbits 473296177Sjhibbits @Description Sets an external trigger indication and define a callback 474296177Sjhibbits routine to be called on such event. 475296177Sjhibbits 476296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 477296177Sjhibbits @Param[in] p_FmRtcExternalTriggerParams - External Trigger parameters. 478296177Sjhibbits 479296177Sjhibbits @Return E_OK on success; Error code otherwise. 480296177Sjhibbits 481296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 482296177Sjhibbits*//***************************************************************************/ 483296177Sjhibbitst_Error FM_RTC_SetExternalTrigger(t_Handle h_FmRtc, t_FmRtcExternalTriggerParams *p_FmRtcExternalTriggerParams); 484296177Sjhibbits 485296177Sjhibbits/**************************************************************************//** 486296177Sjhibbits @Function FM_RTC_ClearExternalTrigger 487296177Sjhibbits 488296177Sjhibbits @Description Clears external trigger indication. 489296177Sjhibbits 490296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 491296177Sjhibbits @Param[in] id - External Trigger id. 492296177Sjhibbits 493296177Sjhibbits @Return E_OK on success; Error code otherwise. 494296177Sjhibbits 495296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 496296177Sjhibbits*//***************************************************************************/ 497296177Sjhibbitst_Error FM_RTC_ClearExternalTrigger(t_Handle h_FmRtc, uint8_t id); 498296177Sjhibbits 499296177Sjhibbits/**************************************************************************//** 500296177Sjhibbits @Function FM_RTC_GetExternalTriggerTimeStamp 501296177Sjhibbits 502296177Sjhibbits @Description Reads the External Trigger TimeStamp. 503296177Sjhibbits 504296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 505296177Sjhibbits @Param[in] triggerId - External Trigger id. 506296177Sjhibbits @Param[out] p_TimeStamp - External Trigger timestamp (in nanoseconds). 507296177Sjhibbits 508296177Sjhibbits @Return E_OK on success; Error code otherwise. 509296177Sjhibbits 510296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 511296177Sjhibbits*//***************************************************************************/ 512296177Sjhibbitst_Error FM_RTC_GetExternalTriggerTimeStamp(t_Handle h_FmRtc, 513296177Sjhibbits uint8_t triggerId, 514296177Sjhibbits uint64_t *p_TimeStamp); 515296177Sjhibbits 516296177Sjhibbits/**************************************************************************//** 517296177Sjhibbits @Function FM_RTC_GetCurrentTime 518296177Sjhibbits 519296177Sjhibbits @Description Returns the current RTC time. 520296177Sjhibbits 521296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 522296177Sjhibbits @Param[out] p_Ts - returned time stamp (in nanoseconds). 523296177Sjhibbits 524296177Sjhibbits @Return E_OK on success; Error code otherwise. 525296177Sjhibbits 526296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 527296177Sjhibbits*//***************************************************************************/ 528296177Sjhibbitst_Error FM_RTC_GetCurrentTime(t_Handle h_FmRtc, uint64_t *p_Ts); 529296177Sjhibbits 530296177Sjhibbits/**************************************************************************//** 531296177Sjhibbits @Function FM_RTC_SetCurrentTime 532296177Sjhibbits 533296177Sjhibbits @Description Sets the current RTC time. 534296177Sjhibbits 535296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 536296177Sjhibbits @Param[in] ts - The new time stamp (in nanoseconds). 537296177Sjhibbits 538296177Sjhibbits @Return E_OK on success; Error code otherwise. 539296177Sjhibbits 540296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 541296177Sjhibbits*//***************************************************************************/ 542296177Sjhibbitst_Error FM_RTC_SetCurrentTime(t_Handle h_FmRtc, uint64_t ts); 543296177Sjhibbits 544296177Sjhibbits/**************************************************************************//** 545296177Sjhibbits @Function FM_RTC_GetFreqCompensation 546296177Sjhibbits 547296177Sjhibbits @Description TODO 548296177Sjhibbits 549296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 550296177Sjhibbits @Param[out] p_Compensation - A pointer to the returned value of compensation. 551296177Sjhibbits 552296177Sjhibbits @Return E_OK on success; Error code otherwise. 553296177Sjhibbits 554296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 555296177Sjhibbits*//***************************************************************************/ 556296177Sjhibbitst_Error FM_RTC_GetFreqCompensation(t_Handle h_FmRtc, uint32_t *p_Compensation); 557296177Sjhibbits 558296177Sjhibbits/**************************************************************************//** 559296177Sjhibbits @Function FM_RTC_SetFreqCompensation 560296177Sjhibbits 561296177Sjhibbits @Description TODO 562296177Sjhibbits 563296177Sjhibbits @Param[in] h_FmRtc - Handle to FM RTC object. 564296177Sjhibbits @Param[in] freqCompensation - the new desired compensation value to be set. 565296177Sjhibbits 566296177Sjhibbits @Return E_OK on success; Error code otherwise. 567296177Sjhibbits 568296177Sjhibbits @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). 569296177Sjhibbits*//***************************************************************************/ 570296177Sjhibbitst_Error FM_RTC_SetFreqCompensation(t_Handle h_FmRtc, uint32_t freqCompensation); 571296177Sjhibbits 572296177Sjhibbits#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) 573296177Sjhibbits/**************************************************************************//** 574296177Sjhibbits @Function FM_RTC_DumpRegs 575296177Sjhibbits 576296177Sjhibbits @Description Dumps all FM registers 577296177Sjhibbits 578296177Sjhibbits @Param[in] h_FmRtc A handle to an FM RTC Module. 579296177Sjhibbits 580296177Sjhibbits @Return E_OK on success; 581296177Sjhibbits 582296177Sjhibbits @Cautions Allowed only FM_Init(). 583296177Sjhibbits*//***************************************************************************/ 584296177Sjhibbitst_Error FM_RTC_DumpRegs(t_Handle h_FmRtc); 585296177Sjhibbits#endif /* (defined(DEBUG_ERRORS) && ... */ 586296177Sjhibbits 587296177Sjhibbits/** @} */ /* end of fm_rtc_control_grp */ 588296177Sjhibbits/** @} */ /* end of fm_rtc_grp */ 589296177Sjhibbits/** @} */ /* end of FM_grp group */ 590296177Sjhibbits 591296177Sjhibbits 592296177Sjhibbits#endif /* __FM_RTC_EXT_H__ */ 593