aboutsummaryrefslogtreecommitdiff
path: root/drivers/haptic/solenoid.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/haptic/solenoid.c')
-rw-r--r--drivers/haptic/solenoid.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/haptic/solenoid.c b/drivers/haptic/solenoid.c
index 25cf34465..7a09940f7 100644
--- a/drivers/haptic/solenoid.c
+++ b/drivers/haptic/solenoid.c
@@ -19,6 +19,7 @@
19#include "solenoid.h" 19#include "solenoid.h"
20#include "haptic.h" 20#include "haptic.h"
21#include "gpio.h" 21#include "gpio.h"
22#include "usb_device_state.h"
22 23
23bool solenoid_on = false; 24bool solenoid_on = false;
24bool solenoid_buzzing = false; 25bool solenoid_buzzing = false;
@@ -36,7 +37,7 @@ void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); }
36void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; } 37void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; }
37 38
38void solenoid_stop(void) { 39void solenoid_stop(void) {
39 writePinLow(SOLENOID_PIN); 40 SOLENOID_PIN_WRITE_INACTIVE();
40 solenoid_on = false; 41 solenoid_on = false;
41 solenoid_buzzing = false; 42 solenoid_buzzing = false;
42} 43}
@@ -48,7 +49,7 @@ void solenoid_fire(void) {
48 solenoid_on = true; 49 solenoid_on = true;
49 solenoid_buzzing = true; 50 solenoid_buzzing = true;
50 solenoid_start = timer_read(); 51 solenoid_start = timer_read();
51 writePinHigh(SOLENOID_PIN); 52 SOLENOID_PIN_WRITE_ACTIVE();
52} 53}
53 54
54void solenoid_check(void) { 55void solenoid_check(void) {
@@ -69,20 +70,23 @@ void solenoid_check(void) {
69 if ((elapsed % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) { 70 if ((elapsed % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) {
70 if (!solenoid_buzzing) { 71 if (!solenoid_buzzing) {
71 solenoid_buzzing = true; 72 solenoid_buzzing = true;
72 writePinHigh(SOLENOID_PIN); 73 SOLENOID_PIN_WRITE_ACTIVE();
73 } 74 }
74 } else { 75 } else {
75 if (solenoid_buzzing) { 76 if (solenoid_buzzing) {
76 solenoid_buzzing = false; 77 solenoid_buzzing = false;
77 writePinLow(SOLENOID_PIN); 78 SOLENOID_PIN_WRITE_INACTIVE();
78 } 79 }
79 } 80 }
80 } 81 }
81} 82}
82 83
83void solenoid_setup(void) { 84void solenoid_setup(void) {
85 SOLENOID_PIN_WRITE_INACTIVE();
84 setPinOutput(SOLENOID_PIN); 86 setPinOutput(SOLENOID_PIN);
85 solenoid_fire(); 87 if ((!HAPTIC_OFF_IN_LOW_POWER) || (usb_device_state == USB_DEVICE_STATE_CONFIGURED)) {
88 solenoid_fire();
89 }
86} 90}
87 91
88void solenoid_shutdown(void) { writePinLow(SOLENOID_PIN); } 92void solenoid_shutdown(void) { SOLENOID_PIN_WRITE_INACTIVE(); }