Difference between revisions of "MansOS Alarm"
Line 2: | Line 2: | ||
NOTE: This feature is not implemented as described currently. Older interface version exists. |
NOTE: This feature is not implemented as described currently. Older interface version exists. |
||
''' |
'''Declared in:''' |
||
#include "alarm.h" |
#include "alarm.h" |
||
Alarms are used to execute some code after a certain time period, possibly repeatedly. |
|||
Note, that the number of timers is limited. |
|||
Initially there are ALARM_COUNT timers available. |
|||
The more timers you run, the less precise they may be due to the possibility for several of them to fire at the same time. Only one callback function will be executed immediately, the rest of them will wait for the previous callback to finish and thus will be delayed. |
|||
== Data types == |
== Data types == |
||
Line 12: | Line 18: | ||
'''AlarmCb_t''' |
'''AlarmCb_t''' |
||
Alarm callback function pointer. Points to a function that will be called when the alarm event occurs. |
Alarm callback function pointer. Points to a function that will be called when the alarm event occurs. |
||
'''AlarmType_t''' |
|||
Alarm types. These may be combined by "or"-ing or adding. |
|||
Line 17: | Line 26: | ||
typedef enum { |
typedef enum { |
||
ALARM_ONESHOOT = 0x01, // Fires the alarm once |
|||
ALARM_REPEAT = 0x02, // Fires the alarm repeatedly until stopped |
|||
ALARM_START = 0x04, // Starts the timer now. |
|||
} '''AlarmType_t'''; |
} '''AlarmType_t'''; |
||
const '''AlarmId_t''' ALARM_FAIL = -1; // Alarm operation failed |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
AlarmId_t '''alarmNew'''( AlarmCb_t callbackFunction ); |
|||
⚫ | |||
Set the callback function. |
|||
⚫ | |||
⚫ | |||
Set the callback function, unless NULL. When NULL, leave the old callback function. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
Stop the alarm if it is already running. |
Stop the alarm if it is already running. |
||
Line 47: | Line 57: | ||
void '''alarmFree'''( AlarmId_t id ); |
void '''alarmFree'''( AlarmId_t id ); |
||
Stops and releases the alarm with this ID. |
Stops and releases the alarm with this ID. |
||
== Advanced Functions == |
|||
int alarmUnused(); |
|||
Returns the number of unused (free) alarms. |
|||
This number is limited, especially on the platforms with very limited memory. |
|||
Initially there are ALARM_COUNT alarms available. |
|||
== Example == |
|||
#include "alarm.h" |
|||
bool myStartAlarm() |
|||
{ |
|||
⚫ | |||
if( id == ALARM_FAIL ) return false; |
|||
alarmSet( id, ALARM_REPEAT+ALARM_START, 1000); // Starts the timer now and fires every second |
|||
return true; |
|||
} |
|||
AlarmCb_t myAlarm() |
|||
{ |
|||
LedsToggleRed(); // Blink the red LED |
|||
} |
Revision as of 21:58, 28 August 2010
NOTE: This feature is not implemented as described currently. Older interface version exists.
Declared in:
#include "alarm.h"
Alarms are used to execute some code after a certain time period, possibly repeatedly. Note, that the number of timers is limited. Initially there are ALARM_COUNT timers available.
The more timers you run, the less precise they may be due to the possibility for several of them to fire at the same time. Only one callback function will be executed immediately, the rest of them will wait for the previous callback to finish and thus will be delayed.
Data types
AlarmId_t
Handle (ID) for identifying the alarm when calling the alarm procedures.
AlarmCb_t
Alarm callback function pointer. Points to a function that will be called when the alarm event occurs.
AlarmType_t Alarm types. These may be combined by "or"-ing or adding.
Constants
typedef enum { ALARM_ONESHOOT = 0x01, // Fires the alarm once ALARM_REPEAT = 0x02, // Fires the alarm repeatedly until stopped ALARM_START = 0x04, // Starts the timer now. } AlarmType_t;
const AlarmId_t ALARM_FAIL = -1; // Alarm operation failed
Functions
AlarmId_t alarmNew( AlarmCb_t callbackFunction );
Create a new alarm. Returns the ID for the new alarm. Returns ALARM_FAIL when no alarms are available. Set the callback function.
void alarmSet( AlarmId_t id, AlarmType_t type, uint delayInMs )
Set the alarm type and time period in milliseconds. Do not start the alarm unless ALARM_START is added to the type. Stop the alarm if it is already running.
void alarmStart( AlarmId_t id );
Start the alarm. Resets the alarm if it was already running.
void alarmStop( AlarmId_t id );
Stop the alarm. You may start this alarm later again.
void alarmFree( AlarmId_t id );
Stops and releases the alarm with this ID.
Advanced Functions
int alarmUnused();
Returns the number of unused (free) alarms. This number is limited, especially on the platforms with very limited memory. Initially there are ALARM_COUNT alarms available.
Example
#include "alarm.h" bool myStartAlarm() { AlarmId_t id = alarmNew( myAlarm ); if( id == ALARM_FAIL ) return false; alarmSet( id, ALARM_REPEAT+ALARM_START, 1000); // Starts the timer now and fires every second return true; } AlarmCb_t myAlarm() { LedsToggleRed(); // Blink the red LED }