File syn_sequencer.h¶
FileList > sched > syn_sequencer.h
Go to the source code of this file
Timed action sequencer — choreograph steps with delays. More...
#include "../port/syn_port_system.h"#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_SeqStep |
| struct | SYN_Sequencer Sequencer runtime context. |
Public Types¶
| Type | Name |
|---|---|
| typedef void(* | SYN_SeqAction |
| typedef void(* | SYN_SeqCompleteCallback Completion callback function signature. |
| enum | SYN_SeqState Action sequencer execution states. |
Public Functions¶
| Type | Name |
|---|---|
| void | syn_seq_init (SYN_Sequencer * seq, const SYN_SeqStep * steps, uint16_t count) Initialize a sequencer. |
| void | syn_seq_on_complete (SYN_Sequencer * seq, SYN_SeqCompleteCallback cb, void * ctx) Set completion callback. |
| void | syn_seq_set_loop (SYN_Sequencer * seq, bool loop) Enable looping (auto-restart on completion). |
| void | syn_seq_start (SYN_Sequencer * seq) Start the sequence from the beginning. |
| void | syn_seq_stop (SYN_Sequencer * seq) Stop the sequence. |
| bool | syn_seq_update (SYN_Sequencer * seq) Update the sequencer — call from main loop. |
Public Static Functions¶
| Type | Name |
|---|---|
| uint16_t | syn_seq_current_step (const SYN_Sequencer * seq) Get current step index. |
| bool | syn_seq_is_done (const SYN_Sequencer * seq) Check if done. |
| uint16_t | syn_seq_loops (const SYN_Sequencer * seq) Get loop iteration count. |
Detailed Description¶
Execute a sequence of actions with configurable delays between them. Non-blocking — call update() from your main loop.
** **
void relay_on(void *ctx) { syn_gpio_write(RELAY_PIN, SYN_GPIO_HIGH); }
void relay_off(void *ctx) { syn_gpio_write(RELAY_PIN, SYN_GPIO_LOW); }
void read_sensor(void *ctx) { *(int*)ctx = adc_read(); }
static const SYN_SeqStep steps[] = {
{ relay_on, NULL, 0 }, // step 0: relay on, no delay
{ NULL, NULL, 200 }, // step 1: wait 200ms
{ read_sensor, &val, 0 }, // step 2: read sensor
{ relay_off, NULL, 100 }, // step 3: relay off, then wait 100ms
};
SYN_Sequencer seq;
syn_seq_init(&seq, steps, 4);
syn_seq_start(&seq);
while (!syn_seq_is_done(&seq)) {
syn_seq_update(&seq);
}
Public Types Documentation¶
typedef SYN_SeqAction¶
Action function called for each step.
typedef SYN_SeqCompleteCallback¶
Completion callback function signature.
Parameters:
seqPointer to the completed sequencer context.ctxUser context associated with the completion handler.
enum SYN_SeqState¶
Action sequencer execution states.
Public Functions Documentation¶
function syn_seq_init¶
Initialize a sequencer.
Parameters:
seqSequencer instance.stepsArray of step descriptors (must persist).countNumber of steps.
function syn_seq_on_complete¶
Set completion callback.
Parameters:
seqSequencer instance.cbCallback function invoked on sequence end.ctxCallback context data pointer.
function syn_seq_set_loop¶
Enable looping (auto-restart on completion).
Parameters:
seqSequencer instance.loopTrue to loop sequence indefinitely, false for single run.
function syn_seq_start¶
Start the sequence from the beginning.
Parameters:
seqSequencer instance.
function syn_seq_stop¶
Stop the sequence.
Parameters:
seqSequencer instance.
function syn_seq_update¶
Update the sequencer — call from main loop.
Executes actions and manages delays non-blockingly.
Parameters:
seqSequencer instance.
Returns:
true if the sequence completed this call.
Public Static Functions Documentation¶
function syn_seq_current_step¶
Get current step index.
Parameters:
seqSequencer instance.
Returns:
Index of the currently executing/waiting step.
function syn_seq_is_done¶
Check if done.
Parameters:
seqSequencer instance.
Returns:
True if in IDLE or DONE state.
function syn_seq_loops¶
Get loop iteration count.
Parameters:
seqSequencer instance.
Returns:
Number of times the sequence has finished (if looping is enabled).
The documentation for this class was generated from the following file src/syntropic/sched/syn_sequencer.h