All Projects → gioblu → Agenda

gioblu / Agenda

Licence: other
Scheduler library for Arduino

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to Agenda

synchly
Automate database backups with customizable recurring schedules.
Stars: ✭ 27 (-12.9%)
Mutual labels:  scheduler
yii2-fullcalendar-scheduler
Yii 2 component for easy fullcalendar scheduler integration
Stars: ✭ 24 (-22.58%)
Mutual labels:  scheduler
sched
In-process Go Job Scheduler. Supports Fixed, Timely, and Cron Expression Intervals. Instrument and Expose Scheduler's Job Metrics.
Stars: ✭ 57 (+83.87%)
Mutual labels:  scheduler
exq-scheduler
Job scheduler for Exq
Stars: ✭ 24 (-22.58%)
Mutual labels:  scheduler
sched
⏳ a high performance reliable task scheduling package in Go.
Stars: ✭ 46 (+48.39%)
Mutual labels:  scheduler
joobq
JoobQ is a fast, efficient asynchronous reliable job queue and job scheduler library processing. Jobs are submitted to a job queue, where they reside until they are able to be scheduled to run in a computing environment.
Stars: ✭ 26 (-16.13%)
Mutual labels:  scheduler
scheduler-component
A Web Component wrapper for FullCalendar library that uses Polymer version 2.0 and ES6.
Stars: ✭ 24 (-22.58%)
Mutual labels:  scheduler
Automation-using-Shell-Scripts
Development Automation using Shell Scripting.
Stars: ✭ 41 (+32.26%)
Mutual labels:  scheduler
rhythm
Time-based job scheduler for Apache Mesos
Stars: ✭ 30 (-3.23%)
Mutual labels:  scheduler
haxe-concurrent
A haxelib for basic platform-agnostic concurrency support
Stars: ✭ 69 (+122.58%)
Mutual labels:  scheduler
RxSchedulerSuppress
RxSchedulerSuppress 是用于抑制 RxJava 在同一个线程池内重复调度的工具
Stars: ✭ 30 (-3.23%)
Mutual labels:  scheduler
chronus
Chronus是360数科技术团队基于阿里开源项目TBSchedule重写的分布式调度。
Stars: ✭ 174 (+461.29%)
Mutual labels:  scheduler
adamwr
Implements https://arxiv.org/abs/1711.05101 AdamW optimizer, cosine learning rate scheduler and "Cyclical Learning Rates for Training Neural Networks" https://arxiv.org/abs/1506.01186 for PyTorch framework
Stars: ✭ 130 (+319.35%)
Mutual labels:  scheduler
celery-beatx
Modern fail-safety scheduler for Celery
Stars: ✭ 46 (+48.39%)
Mutual labels:  scheduler
go-xxl-job-client
xxl-job go client
Stars: ✭ 36 (+16.13%)
Mutual labels:  scheduler
angular-gantt-schedule-timeline-calendar-example
Angular gantt-schedule-timeline-calendar usage example
Stars: ✭ 15 (-51.61%)
Mutual labels:  scheduler
cronnit.com
A free tool for scheduling posts to Reddit.
Stars: ✭ 3 (-90.32%)
Mutual labels:  scheduler
krolib
Magic library and DSL to handle complex schedules
Stars: ✭ 19 (-38.71%)
Mutual labels:  scheduler
coo
Schedule Twitter updates with easy
Stars: ✭ 44 (+41.94%)
Mutual labels:  scheduler
scheduler.simple
A simple scheduler for Integrant
Stars: ✭ 19 (-38.71%)
Mutual labels:  scheduler

Agenda 1.0 Stable

There are a lot of scheduler implementations for Arduino on github, I have developed Agenda because I needed an overflow proof implementation non interrupt-driven I could trust for HAB (High Altitude Balloon) launches and home automation experiments. Agenda is immune to micros() overflow and it is designed to work rock solid. The big PROs are the high resilience, compatibility with any sort of library and configurable memory consumption. Consider that Agenda, not using interrupts, can likely overshoot requested delays and scheduled executions with long duration tasks.

I have developed the strong belief, after a lot of experience with Arduino compatible embedded systems, that is better to handle a possible delay in task execution (using a non interrupt-driven system like Agenda), than having always chances to get an interruption in the middle of an execution (using interrupt-driven software), that generally leads to execution corruption and unexpected bugs, for example in a strict timed scenario like bit-banging or sensor reading.

First you have to instantiate the Agenda object:

Agenda scheduler;

Call update method at least one per loop cycle:

scheduler.update();

To add a function execution to the list of scheduled tasks:

// Function definition
void blink() {
  Serial.println("Blink!");
}

int blink = scheduler.insert(blink, 1000000); // Blink every second 

If you want to execute the task only once pass true as third parameter:

int blink = scheduler.insert(blink, 1000000, true);

If you want to deactivate the task you added:

scheduler.deactivate(blink);

If you want to activate the task:

scheduler.activate(blink);

If you want to completely remove it:

scheduler.remove(blink);

If you need a delay in your code use these functions:

// Delay of 1 second while executing tasks when necessary
scheduler.delay(1000); 

// Delay of 100 microseconds while executing tasks when necessary
scheduler.delay_microseconds(100); 

##License

/* ___   ___   ___        __   ___
  |   | | __  |___ |\  | |  \ |   |
  |___| |   | |    | \ | |   ||___|
  |   | |___| |___ |  \| |__/ |   | version: 1.0
  Scheduler library for Arduino
  Copyright (c) 2013-2016, Giovanni Blu Mitolo
  [email protected] - www.gioblu.com
  All rights reserved.
  
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].