Difference between revisions of "MansOS Alarm"
(→Functions) |
|||
Line 16: | Line 16: | ||
== Basic == |
== Basic == |
||
=== Data types === |
=== Data types === |
||
* '''Time_ms_t''' - Time in milliseconds |
|||
* '''AlarmId_t''' - Handle (ID) for identifying the alarm when calling the alarm procedures. |
* '''AlarmId_t''' - Handle (ID) for identifying the alarm when calling the alarm procedures. |
||
Line 23: | Line 25: | ||
=== Constants === |
=== Constants === |
||
* const AlarmId_t '''ALARM_FAIL''' - Alarm operation failed. Returned by ''alarmNew()'' |
|||
⚫ | |||
==== Constructors ==== |
|||
AlarmId_t '''alarmNew'''( AlarmCb_t callbackFunction ); |
AlarmId_t '''alarmNew'''( AlarmCb_t callbackFunction ); |
||
Creates a new, virtual alarm clock. Returns the ID for the new alarm. Returns ALARM_FAIL when no alarms are available. |
Creates a new, virtual alarm clock. Returns the ID for the new alarm. Returns ALARM_FAIL when no alarms are available. |
||
Line 32: | Line 33: | ||
AlarmId_t id '''alarmStartOneShotNew'''( Time_ms_t time_ms, AlarmCb_t callbackFunction ); |
|||
⚫ | |||
Creates a new alarm clock and returns the created alarm Id. |
|||
Starts the alarm in one-shot mode. |
Starts the alarm in one-shot mode. |
||
Resets the alarm if it was already running. |
Resets the alarm if it was already running. |
||
Line 39: | Line 41: | ||
AlarmId_t id '''alarmStartPeriodicNew'''( Time_ms_t time_ms, AlarmCb_t callbackFunction ); |
|||
⚫ | |||
Creates a new alarm clock and returns the created alarm Id. |
|||
Starts the alarm in periodic mode. |
Starts the alarm in periodic mode. |
||
Resets the alarm if it was already running. |
Resets the alarm if it was already running. |
||
The alarm calls the callback function after the time_ms is expired. |
The alarm calls the callback function after the time_ms is expired. |
||
Then it automatically restarts. |
Then it automatically restarts. |
||
⚫ | |||
⚫ | |||
Starts the alarm in one-shot mode. |
|||
⚫ | |||
The alarm calls the callback function after the time in time_ms milliseconds is expired. |
|||
Then it stops. |
|||
⚫ | |||
Starts the alarm in periodic mode. |
|||
Resets the alarm if it was already running. |
|||
The alarm calls the callback function after the time_ms is expired. |
|||
Then it automatically restarts. |
|||
⚫ | |||
Start the alarm. Resets the alarm if it was already running. |
|||
void '''alarmStop'''( AlarmId_t id ); |
void '''alarmStop'''( AlarmId_t id ); |
||
Stops the alarm. |
Stops the alarm. |
||
⚫ | |||
⚫ | |||
You can not use this alarm id after this call. |
|||
== Advanced == |
== Advanced == |
||
Line 70: | Line 98: | ||
void '''alarmSet'''( AlarmId_t id, AlarmType_t type, |
void '''alarmSet'''( AlarmId_t id, AlarmType_t type, Time_ms_t time_ms ) |
||
Sets the alarm type and time delay in milliseconds. |
Sets the alarm type and time delay in milliseconds. |
||
Do not start the alarm unless ALARM_START is added to the type. |
Do not start the alarm unless ALARM_START is added to the type. |
||
Stop the alarm if it is already running. |
Stop the alarm if it is already running. |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
== Example == |
== Example == |
Revision as of 01:54, 4 September 2010
MansOS | --> | Reference | --> | Alarm | :: | #Basic | :: | #Advanced | :: | #Example |
NOTE: This feature is not implemented as described currently. Older interface version exists.
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.
Declared in:
#include "alarm.h"
Basic
Data types
- Time_ms_t - Time in milliseconds
- 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.
Constants
- const AlarmId_t ALARM_FAIL - Alarm operation failed. Returned by alarmNew()
Constructors
AlarmId_t alarmNew( AlarmCb_t callbackFunction );
Creates a new, virtual alarm clock. Returns the ID for the new alarm. Returns ALARM_FAIL when no alarms are available. Sets the callback function. Note, that the number of concurrent alarms might be limited by the OS and platform.
AlarmId_t id alarmStartOneShotNew( Time_ms_t time_ms, AlarmCb_t callbackFunction );
Creates a new alarm clock and returns the created alarm Id. Starts the alarm in one-shot mode. Resets the alarm if it was already running. The alarm calls the callback function after the time in time_ms milliseconds is expired. Then it stops.
AlarmId_t id alarmStartPeriodicNew( Time_ms_t time_ms, AlarmCb_t callbackFunction );
Creates a new alarm clock and returns the created alarm Id. Starts the alarm in periodic mode. Resets the alarm if it was already running. The alarm calls the callback function after the time_ms is expired. Then it automatically restarts.
Functions
void alarmStartOneShot( AlarmId_t id, Time_ms_t time_ms );
Starts the alarm in one-shot mode. Resets the alarm if it was already running. The alarm calls the callback function after the time in time_ms milliseconds is expired. Then it stops.
void alarmStartPeriodic( AlarmId_t id, Time_ms_t time_ms );
Starts the alarm in periodic mode. Resets the alarm if it was already running. The alarm calls the callback function after the time_ms is expired. Then it automatically restarts.
void alarmStart( AlarmId_t id );
Start the alarm. Resets the alarm if it was already running.
void alarmStop( AlarmId_t id );
Stops the alarm.
void alarmFree( AlarmId_t id );
Stops and releases the system resources associated with the alarm of this ID. You can not use this alarm id after this call.
Advanced
Data types
- 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;
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.
void alarmSet( AlarmId_t id, AlarmType_t type, Time_ms_t time_ms )
Sets the alarm type and time delay in milliseconds. Do not start the alarm unless ALARM_START is added to the type. Stop the alarm if it is already running.
Example
#include "alarm.h" bool myStartAlarm() { AlarmId_t id = alarmNew( myAlarm ); if( id == ALARM_FAIL ) return false; alarmStartPeriodic( id, 1000); // Starts the timer now and fires every second return true; } AlarmCb_t myAlarm() { LedsToggleRed(); // Blink the red LED }
MansOS | --> | Reference | --> | Alarm | :: | #Basic | :: | #Advanced | :: | #Example |