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