aboutsummaryrefslogtreecommitdiff
path: root/sem4/embedded/m1/router
diff options
context:
space:
mode:
Diffstat (limited to 'sem4/embedded/m1/router')
-rw-r--r--sem4/embedded/m1/router/router.ino47
1 files changed, 47 insertions, 0 deletions
diff --git a/sem4/embedded/m1/router/router.ino b/sem4/embedded/m1/router/router.ino
new file mode 100644
index 0000000..ba0b375
--- /dev/null
+++ b/sem4/embedded/m1/router/router.ino
@@ -0,0 +1,47 @@
+#define LEDPIN 13
+
+int task1(void) {
+ static bool state = 0;
+
+ digitalWrite(LEDPIN, state);
+ state = !state;
+ return 0;
+}
+
+int task2(void) {
+ Serial.print("l");
+ return 0;
+}
+int task3(void) {
+ Serial.print("h");
+ return 0;
+}
+
+int runevery(int (*f)(), unsigned long *last, unsigned long period) {
+ unsigned long now = millis();
+ if (*last + period > now) {
+ return -1;
+ }
+
+ *last = now;
+ return (*f)();
+}
+
+
+#define TASKS 3
+unsigned long lasts[TASKS];
+
+void setup() {
+ Serial.begin(115200);
+ pinMode(LEDPIN, OUTPUT);
+ for (int i = 0; i < TASKS; i++) {
+ lasts[i] = 0;
+ }
+}
+
+void loop() {
+ unsigned i = 0;
+ runevery(task1, &lasts[i++], 1000);
+ runevery(task2, &lasts[i++], 100);
+ runevery(task3, &lasts[i++], 10);
+}