/* |------------------+-------------------------------------------------------------| */
StatusType CancelAlarm ( AlarmType xAlarmID )
{
	StatusType ercd = E_OK;
	if(xAlarmID >= cfgOSEK_ALARM_NUM)
	{
		ercd = E_OS_ID;
		goto Error_Exit;
	}
	if(OsekAlarmIdTable[xAlarmID] == ALARM_NOT_IN_USE)
	{
		ercd = E_OS_NOFUNC;
		goto Error_Exit;
	}
	if(OsekAlarmTypeTable[xAlarmID] == ALARM_CYC)
	{
		ercd = tk_del_cyc(OsekAlarmTypeTable[xAlarmID]);
	}
	else if(OsekAlarmTypeTable[xAlarmID] == ALARM_ALM)
	{
		ercd = tk_del_alm(OsekAlarmTypeTable[xAlarmID]);
	}
	else
	{
		ercd = E_OS_ID;
	}
	Error_Exit:
		return ercd;
}
Beispiel #2
0
/*
 * release alarm handler
 */
LOCAL ER finishAlarm( AlarmState *alm )
{
	ER	ercd;

	if ( alm->almno != InvalidHNO ) {

                /* cancel alarm handler */
		ercd  = tk_stp_alm(alm->almno);
		ercd |= tk_del_alm(alm->almno);
		if ( ercd != E_OK ) {
			DEBUG_PRINT(("finishAlarm, err = %d\n", ercd));
			return ercd;
		}
	}

	return E_OK;
}