64 const uint32_t channelMask = 1UL << (uint8_t)ch;
67 const bool isChannelSet = ((regVal & channelMask) == channelMask);
87 const uint32_t channelMask = 1UL << (uint8_t)ch;
94 const bool isNotCleared = ((regVal & channelMask) == channelMask);
108 const uint8_t ioSafeMask = (uint8_t)ERRCTRL_IOSAFE_bm;
109 const bool isIoSafe = ((regVal & ioSafeMask) == ioSafeMask);
131 const uint8_t forcefloatMask = (uint8_t)ERRCTRL_FORCEFLOAT_bm;
132 const bool isNotCleared = ((regVal & forcefloatMask) == forcefloatMask);
155 const bool isTimeoutDisabled = (timeout == 0U);
156 const bool isConfigsNull = (configs == NULL);
160 const uint8_t stateMask = (uint8_t)ERRCTRL_STATE_gm;
161 const uint8_t normalStateConfig = (uint8_t)ERRCTRL_STATE_NORMAL_gc;
162 const bool isStateNormal = ((regVal & stateMask) == normalStateConfig);
164 if (isTimeoutDisabled || isConfigsNull || !isStateNormal)
172 const uint8_t gieMask = (uint8_t)CPU_I_bm;
173 const bool wasInterruptsEnabled = ((cpuStatusRegVal & gieMask) == gieMask);
179 errFlag_t configErrorFlag = ConfigAllChannels(configs);
186 if (wasInterruptsEnabled)
191 return configErrorFlag;
196 const uint8_t noErrorFlagVal = (uint8_t)
NO_ERROR;
197 uint8_t combinedFlags = noErrorFlagVal;
200 combinedFlags |= (uint8_t)ConfigVregfail(configs->
vregfail);
201 combinedFlags |= (uint8_t)ConfigBuserr(configs->
buserr);
202 combinedFlags |= (uint8_t)ConfigRam2(configs->
ram2);
203 combinedFlags |= (uint8_t)ConfigFlash2(configs->
flash2);
204 combinedFlags |= (uint8_t)ConfigOpc(configs->
opc);
205 combinedFlags |= (uint8_t)ConfigSplim(configs->
splim);
206 combinedFlags |= (uint8_t)ConfigRam1(configs->
ram1);
207 combinedFlags |= (uint8_t)ConfigFlash1(configs->
flash1);
208 combinedFlags |= (uint8_t)ConfigVregwarn(configs->
vregwarn);
209 combinedFlags |= (uint8_t)ConfigCfd0(configs->
cfd0);
210 combinedFlags |= (uint8_t)ConfigCfd1(configs->
cfd1);
211 combinedFlags |= (uint8_t)ConfigCfm0(configs->
cfm0);
212 combinedFlags |= (uint8_t)ConfigCfm1(configs->
cfm1);
213 combinedFlags |= (uint8_t)ConfigSwdt(configs->
swdt);
214 combinedFlags |= (uint8_t)ConfigEeprom(configs->
eeprom);
215 combinedFlags |= (uint8_t)ConfigEvsys0(configs->
evsys0);
216 combinedFlags |= (uint8_t)ConfigEvsys1(configs->
evsys1);
220 if (combinedFlags != noErrorFlagVal)
229 uint8_t floatIoConfig = 0U;
233 floatIoConfig = (uint8_t)ERRCTRL_FLOAT_bm;
236 uint8_t severityConfig = (uint8_t)config.
severity << ERRCTRL_ERRLVL_gp;
238 return floatIoConfig | severityConfig;
250 uint8_t channelConfig = DetermineChannelConfig(config);
266 uint8_t channelConfig = DetermineChannelConfig(config);
282 uint8_t channelConfig = DetermineChannelConfig(config);
298 uint8_t channelConfig = DetermineChannelConfig(config);
314 uint8_t channelConfig = DetermineChannelConfig(config);
330 uint8_t channelConfig = DetermineChannelConfig(config);
346 uint8_t channelConfig = DetermineChannelConfig(config);
362 uint8_t channelConfig = DetermineChannelConfig(config);
378 uint8_t channelConfig = DetermineChannelConfig(config);
394 uint8_t channelConfig = DetermineChannelConfig(config);
410 uint8_t channelConfig = DetermineChannelConfig(config);
426 uint8_t channelConfig = DetermineChannelConfig(config);
442 uint8_t channelConfig = DetermineChannelConfig(config);
458 uint8_t channelConfig = DetermineChannelConfig(config);
474 uint8_t channelConfig = DetermineChannelConfig(config);
490 uint8_t channelConfig = DetermineChannelConfig(config);
506 uint8_t channelConfig = DetermineChannelConfig(config);
errFlag_t
Defines the error flag used by Middleware services to indicate error detection.
uint8_t CPUCTRL_ReadStatusRegister(void)
Reads the SREG register value.
void CPUCTRL_ClearStatusRegister(uint8_t bitmask)
Clears specific bits in the SREG register.
void CPUCTRL_SetStatusRegister(uint8_t bitmask)
Sets specific bits in the SREG register.
uint8_t ERRCTRL_ReadControlA(void)
Reads the CTRLA register value.
void ERRCTRL_WriteConfigRam1(uint8_t value)
Overwrites the ESCRAM1 register value.
void ERRCTRL_WriteConfigSplim(uint8_t value)
Overwrites the ESCSPLIM register value.
void ERRCTRL_ClearControlA(uint8_t bitmask)
Clears specific bits in the CTRLA register.
void ERRCTRL_WriteConfigEeprom(uint8_t value)
Overwrites the ESCEEPROM register value.
void ERRCTRL_WriteConfigCfd0(uint8_t value)
Overwrites the ESCCFD0 register value.
void ERRCTRL_WriteConfigBuserr(uint8_t value)
Overwrites the ESCBUSERR register value.
void ERRCTRL_WriteConfigEvsys1(uint8_t value)
Overwrites the ESCEVSYS1 register value.
void ERRCTRL_WriteConfigCfd1(uint8_t value)
Overwrites the ESCCFD1 register value.
uint32_t ERRCTRL_ReadChannelStatus(void)
Reads the ESF register value.
void ERRCTRL_WriteConfigCfm1(uint8_t value)
Overwrites the ESCCFM1 register value.
void ERRCTRL_WriteConfigRam2(uint8_t value)
Overwrites the ESCRAM2 register value.
void ERRCTRL_WriteConfigVregfail(uint8_t value)
Overwrites the ESCVREGFAIL register value.
void ERRCTRL_WriteConfigFlash2(uint8_t value)
Overwrites the ESCFLASH2 register value.
void ERRCTRL_WriteConfigSwdt(uint8_t value)
Overwrites the ESCSWDT register value.
void ERRCTRL_WriteConfigFlash1(uint8_t value)
Overwrites the ESCFLASH1 register value.
void ERRCTRL_WriteConfigEvsys0(uint8_t value)
Overwrites the ESCEVSYS0 register value.
void ERRCTRL_WriteTimeoutValue(uint8_t value)
Overwrites the TIMEOUT register value.
void ERRCTRL_WriteConfigVregwarn(uint8_t value)
Overwrites the ESCVREGWARN register value.
uint8_t ERRCTRL_ReadStatusA(void)
Reads the STATUSA register value.
void ERRCTRL_SetControlA(uint8_t bitmask)
Sets specific bits in the CTRLA register.
void ERRCTRL_WriteConfigCfm0(uint8_t value)
Overwrites the ESCCFM0 register value.
void ERRCTRL_WriteConfigOpc(uint8_t value)
Overwrites the ESCOPC register value.
void ERRCTRL_WriteChannelStatus(uint32_t value)
Overwrites the ESF register value.
void ERRCTRL_ModifyControlA(uint8_t groupMask, uint8_t groupConfig)
Modifies specific bit field(s) in the CTRLA register.
errFlag_t MW_ClearErrorChannel(errCh_t ch)
Clears the specified error channel and confirms that the channel is cleared.
void MW_StopHeartbeat(void)
Stops the Heartbeat output signal.
errFlag_t MW_ConfigErrorChannels(const errChConfigs_t *configs, uint8_t timeout)
Sets the error controller timeout duration and configures all error channels with the provided settin...
errFlag_t MW_GetErrorChannel(errCh_t ch)
Reads the status of the specified error channel.
errFlag_t MW_DisableForceFloat(void)
Disables forced floating (tri-stating) of all I/O pins.
errCh_t
Hardware error channels found in the Error Controller.
void MW_StartHeartbeat(void)
Starts the Heartbeat output signal.
errFlag_t MW_CheckIoSafe(void)
Checks if all I/O pins are floated (tri-stated).
void MW_EnableForceFloat(void)
Enables forced floating (tri-stating) of all I/O pins.
Holds an error channel configuration for configuring the ERRCTRL.
Holds configurations for all error channels.