PingPong/Core/Inc/Indicator.h
2024-09-30 00:26:00 +03:00

85 lines
1.8 KiB
C

/*
* Indicator.h
*
* Created on: Sep 26, 2024
* Author: DashyFox
*/
#ifndef INC_INDICATOR_H_
#define INC_INDICATOR_H_
#include "ShiftReg.h"
/********* led map: *********
* - [2] 0b01000000
* - [2] 0b00100000
* - [2] 0b00010000
* - [2] 0b00001000
* - [2] 0b00000100
* - [2] 0b00000010
* - [2] 0b00000001
*
* = [1] 0b00010000
* = [1] 0b00100000
* = [1] 0b01000000
*
*
*
* = [1] 0b00000100
* = [1] 0b00000010
* = [1] 0b00000001
*
* - [0] 0b00000001
* - [0] 0b00000010
* - [0] 0b00000100
* - [0] 0b00001000
* - [0] 0b00010000
* - [0] 0b00100000
* - [0] 0b01000000
*
**/
#define INDICATORS_COUNT 2
#define LED_IDLE_TIMEOUT 1000
typedef struct LedMap_element {
uint8_t byteIndx;
uint8_t offsetMask;
} LedMap_element;
typedef struct LedMap {
LedMap_element ALL[NUMLEDS * INDICATORS_COUNT];
LedMap_element UP[NUMLEDS];
LedMap_element DOWN[NUMLEDS];
LedMap_element RED[6];
}LedMap;
extern const LedMap ledMap;
void led_init();
void led_show();
void led_tick();
void led_writeMirror(uint8_t number, uint8_t state);
void led_write(uint8_t number, uint8_t state);
void led_blink(LedMap_element led, uint16_t period, uint16_t count);
void led_blink_num(uint8_t ledNum, uint16_t period, uint16_t count);
void led_progressbar(uint8_t fromLed, uint8_t toLed ,uint8_t progress);
void led_progressbarMirror(uint8_t fromLed, uint8_t toLed ,uint8_t progress);
//void led_setOnDone(void (*callback)());
//void led_resetOnDone();
void led_PingPong_start(uint8_t fromLed, uint8_t toLed);
void led_PingPong_startMirror(uint8_t fromLed, uint8_t toLed);
void led_PingPong_next();
void led_showSpeed(uint8_t progressUP, uint8_t progressDOWN);
void led_setIdleCallback(void(*callback)());
void led_resetIdleCallback();
uint8_t led_getState(LedMap_element led);
void led_clear();
#endif /* INC_INDICATOR_H_ */