FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/rtc/rtc_i.h @ 268:f2e52cab0a73
abb_inth.c: check all interrupt causes, not just one
The original code used if - else if - else if etc constructs, thus
the first detected interrupt was the only one handled. However,
Iota ITSTATREG is a clear-on-read register, thus if we only handle
the first detected interrupt and skip checking the others, then the
other interrupts will be lost, if more than one interrupt happened
to occur in one ABB interrupt handling cycle - a form of rare race
condition. Change the code to check all interrupts that were read
in this cycle.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 13 Jun 2021 18:17:53 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/********************************************************************************/ /* */ /* File Name: rtc_i.h */ /* */ /* Purpose: This file contains the structures, constants and prototypes */ /* dedicated to RTC. */ /* */ /* Note: None. */ /* */ /* Revision History: */ /* 03/20/01 Laurent Sollier Create. */ /* */ /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved */ /* */ /********************************************************************************/ #ifndef _RTC_I_H_ #define _RTC_I_H_ #include "rvm/rvm_gen.h" #include "rvf/rvf_api.h" /********************************************************************************/ /* */ /* Define a structure used to store all the informations related to RTC's task*/ /* & MBs identifiers. */ /* */ /********************************************************************************/ typedef struct { T_RVF_MB_ID prim_id; T_RVF_ADDR_ID addr_id; void* msg_alarm_event; } T_RTC_ENV_CTRL_BLK; /******************************************************************************* * * RTC_Initialize * * Purpose : Initializes the RTC driver. * * Arguments: In : none * Out: none * * Returns: RVF_OK if initialisation is ok * RVF_INTERNAL_ERROR else * ******************************************************************************/ T_RVF_RET RTC_Initialize(void); /******************************************************************************* * * RTC_ProcessAlarmEvent * * Purpose : Call MMI when SW RTC module receive alarm event * * Arguments: In : none * Out: none * * Returns: none * * ******************************************************************************/ void RTC_ProcessAlarmEvent(void); /******************************************************************************* * * RTC_ItTimerHandle * * Purpose : Compute an average value for compensation register * * Arguments: In : none * Out: none * * Returns: none * * ******************************************************************************/ void RTC_ItTimerHandle(void); /******************************************************************************* * * RTC_ItAlarmHandle * * Purpose : Activate HISR which will send a message in the RTC mailbox to * inform that time alarm is reached * * Arguments: In : none * Out: none * * Returns: none * * ******************************************************************************/ void RTC_ItAlarmHandle(void); /******************************************************************************* * * RTC_GaugingHandler * * Purpose : This function is called when a gauging is finished (started by * layer1). It save clock counter for average value computation * ( done by RTC_ItTimerHandle) * * Arguments: In : none * Out: none * * Returns: none * * ******************************************************************************/ void RTC_GaugingHandler(void); #endif /* #ifndef _RTC_I_H_ */