Commit | Line | Data |
---|---|---|
4a679a75 MM |
1 | #include "PlayLed.h" |
2 | ||
3 | /* | |
4 | * LED indicator: | |
5 | * off = not paused, nothing to do | |
f1afd661 | 6 | * fast flash = halted |
4a679a75 MM |
7 | * on = a block is being executed |
8 | */ | |
9 | ||
68d16168 | 10 | #include "modules/robot/Conveyor.h" |
61134a65 JM |
11 | #include "SlowTicker.h" |
12 | #include "Config.h" | |
7af0714f | 13 | #include "checksumm.h" |
8d54c34c | 14 | #include "ConfigValue.h" |
44e34b21 | 15 | #include "Gcode.h" |
4e722c00 JM |
16 | |
17 | #define pause_led_pin_checksum CHECKSUM("pause_led_pin") | |
18 | #define play_led_pin_checksum CHECKSUM("play_led_pin") | |
19 | #define play_led_disable_checksum CHECKSUM("play_led_disable") | |
20 | ||
f1afd661 | 21 | PlayLed::PlayLed() { |
f1afd661 JM |
22 | cnt= 0; |
23 | } | |
4a679a75 MM |
24 | |
25 | void PlayLed::on_module_loaded() | |
26 | { | |
4e722c00 JM |
27 | if(THEKERNEL->config->value( play_led_disable_checksum )->by_default(false)->as_bool()) { |
28 | delete this; | |
29 | return; | |
30 | } | |
31 | ||
4a679a75 | 32 | on_config_reload(this); |
73706276 | 33 | |
f1afd661 | 34 | THEKERNEL->slow_ticker->attach(12, this, &PlayLed::led_tick); |
4a679a75 MM |
35 | } |
36 | ||
4e722c00 | 37 | void PlayLed::on_config_reload(void *argument) |
4a679a75 MM |
38 | { |
39 | string ledpin = "4.28!"; | |
40 | ||
347854ff MM |
41 | ledpin = THEKERNEL->config->value( pause_led_pin_checksum )->by_default(ledpin)->as_string(); // check for pause_led_pin first |
42 | ledpin = THEKERNEL->config->value( play_led_pin_checksum )->by_default(ledpin)->as_string(); // override with play_led_pin if it's found | |
4a679a75 | 43 | |
34bd2443 | 44 | led.from_string(ledpin)->as_output()->set(false); |
4a679a75 MM |
45 | } |
46 | ||
f1afd661 | 47 | uint32_t PlayLed::led_tick(uint32_t) |
4a679a75 | 48 | { |
73706276 | 49 | if(THEKERNEL->is_halted()) { |
f1afd661 JM |
50 | led.set(!led.get()); |
51 | return 0; | |
52 | } | |
4a679a75 | 53 | |
373d0bf1 | 54 | if(++cnt >= 6) { // 6 ticks ~ 500ms |
f1afd661 | 55 | cnt= 0; |
35e7b158 | 56 | led.set(!THEKERNEL->conveyor->is_queue_empty()); |
f1afd661 JM |
57 | } |
58 | ||
59 | return 0; | |
4a679a75 | 60 | } |