Open FFBoard
Open source force feedback firmware
ledEffects.cpp
Go to the documentation of this file.
1/*
2 * ledEffects.c
3 *
4 * Created on: Feb 1, 2020
5 * Author: Yannick
6 */
7#include "ledEffects.h"
8#include "main.h"
9
11 0,0,0,LED_SYS_GPIO_Port,LED_SYS_Pin,0
12};
14 0,0,0,LED_ERR_GPIO_Port,LED_ERR_Pin,0
15};
17 0,0,0,LED_CLIP_GPIO_Port,LED_CLIP_Pin,0
18};
19
25void blinkLed(Ledstruct* led,uint16_t period,uint16_t blinks){
26 // Stop blinking
27 if(period == 0 && blinks == 0){
28 led->blinks = 0;
29 led->period = 0;
30 HAL_GPIO_WritePin(led->port, led->pin, led->state ? GPIO_PIN_SET : GPIO_PIN_RESET);
31 }else{
32 led->blinks = (blinks * 2) -1;
33 led->period = period;
34 led->tick = HAL_GetTick();
35 HAL_GPIO_WritePin(led->port, led->pin, led->state ? GPIO_PIN_RESET : GPIO_PIN_SET);
36 }
37}
38
40 if(sysled.period == 0) // only overwrite with a pulse if not already blinking
41 blinkLed(&sysled, 25, 1);
42}
43
45 if(errled.period == 0)
46 blinkLed(&errled, 250, 1);
47}
48
50 if(clipled.period == 0)
51 blinkLed(&clipled, 100, 1);
52}
53
54
55void blinkSysLed(uint16_t period,uint16_t blinks){
56 blinkLed(&sysled, period, blinks);
57}
58void blinkErrLed(uint16_t period,uint16_t blinks){
59 blinkLed(&errled, period, blinks);
60}
61void blinkClipLed(uint16_t period,uint16_t blinks){
62 blinkLed(&clipled, period, blinks);
63}
64
65void setLed(Ledstruct_t* led,uint8_t on){
66 led->state = on;
67 HAL_GPIO_WritePin(led->port, led->pin, led->state ? GPIO_PIN_SET : GPIO_PIN_RESET);
68}
69
70void setClipLed(uint8_t on){
71 setLed(&clipled,on);
72}
73
74void setErrLed(uint8_t on){
75 setLed(&errled,on);
76}
77
78void setSysLed(uint8_t on){
79 setLed(&sysled,on);
80}
81
82
84 // If led has an effect (period != 0) and time is up do something
85 if(led->period != 0 && HAL_GetTick() > led->tick+led->period){
86 if(led->blinks == 0){ // No blinks left. turn off
87 HAL_GPIO_WritePin(led->port, led->pin, led->state ? GPIO_PIN_SET : GPIO_PIN_RESET);
88 led->period = 0;
89 }else{
90 led->tick = HAL_GetTick();
91 HAL_GPIO_TogglePin(led->port, led->pin);
92 }
93 // If positive decrement blink counter.
94 if(led->blinks > 0){
95 led->blinks--;
96 }
97 }
98}
99
107}
void blinkErrLed(uint16_t period, uint16_t blinks)
Definition: ledEffects.cpp:58
void updateLeds()
Definition: ledEffects.cpp:103
void pulseClipLed()
Definition: ledEffects.cpp:49
void updateLed(Ledstruct *led)
Definition: ledEffects.cpp:83
void blinkClipLed(uint16_t period, uint16_t blinks)
Definition: ledEffects.cpp:61
void setErrLed(uint8_t on)
Definition: ledEffects.cpp:74
void blinkSysLed(uint16_t period, uint16_t blinks)
Definition: ledEffects.cpp:55
Ledstruct_t clipled
Definition: ledEffects.cpp:16
void setSysLed(uint8_t on)
Definition: ledEffects.cpp:78
void pulseSysLed()
Definition: ledEffects.cpp:39
void blinkLed(Ledstruct *led, uint16_t period, uint16_t blinks)
Definition: ledEffects.cpp:25
void setLed(Ledstruct_t *led, uint8_t on)
Definition: ledEffects.cpp:65
void pulseErrLed()
Definition: ledEffects.cpp:44
Ledstruct_t sysled
Definition: ledEffects.cpp:10
void setClipLed(uint8_t on)
Definition: ledEffects.cpp:70
Ledstruct_t errled
Definition: ledEffects.cpp:13
uint16_t period
Definition: ledEffects.h:13
uint16_t pin
Definition: ledEffects.h:16
uint8_t state
Definition: ledEffects.h:17
int32_t blinks
Definition: ledEffects.h:14
GPIO_TypeDef * port
Definition: ledEffects.h:15
uint32_t tick
Definition: ledEffects.h:12