boothifier/temporary/Temp/led_strip.h

129 lines
2.6 KiB
C

#ifndef _LED_STRIP_H
#define _LED_STRIP_H
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "common/LEDStrip.h"
#include <ArduinoJson.h>
#include "my_board.h"
extern LEDSTRIP *strip1;
extern LEDSTRIP *strip2;
extern TaskHandle_t Strip1_Task_Handle;
extern TaskHandle_t Strip2_Task_Handle;
extern TaskHandle_t FrontLight_Task_Handle;
#define ANIM_WHITEFILL_INDEX 0
#define ANIM_DEFAULT_INDEX 1
#define ANIM_EVENT_SIZE 12
#define PROFILES_SIZE 8
#define MIN_LED_UPDATE_INTERVAL 13
enum OtherANIMS { OA_SET_PIXEL=100, OA_CLEAR, };
enum FRONT_LIGHT_STYLE { FRONT_LIKE_LUMIA, FRONT_LIKE_ROAMER };
enum EVENT_TYPE { EV_NORMAL, EV_INJECT, EV_NON_INJECT, EV_TEST,};
// Single web page event (upto 8)
typedef struct{
EVENT_TYPE type;
int selfIndex;
int animIndex;
int hue;
int hueRange;
int speed;
int param1;
int param2;
bool check1;
bool check2;
bool check3;
bool check4;
int countDown;
}ANIMATION_EVENT;
typedef struct{
bool enabled;
uint8_t relayIndex;
uint8_t core;
int holdTime;
int rampTime;
float minDuty;
float maxDuty;
FRONT_LIGHT_STYLE style;
//float delayFactor;
}FRONT_LIGHT;
typedef struct{
bool enabled;
uint8_t relayIndex;
uint8_t buttonIndex;
uint8_t core;
int rampTime;
uint8_t rampSteps;
float min;
float max;
}REAR_LIGHT;
typedef struct {
EVENT_TYPE type;
ANIMATION_EVENT event;
}EVENT_MSG;
// Properties from webpage
typedef struct {
int profileIndex;
const char* profileName;
int whitefillsCount;
int animationsCount;
FRONT_LIGHT frontLight;
REAR_LIGHT rearLight;
ANIMATION_EVENT event[ANIM_EVENT_SIZE];
}ANIMATION_PROPS;
extern ANIMATION_PROPS animProps;
enum POPUP_ANIM { POP_STATUP, POP_BLE_CONN, POP_BLE_DISC, POP_WIFI_CONN, POP_WIFI_DISC, POP_STICK_CONN, POP_STICK_DISC };
void RunWhitefillAnimation(ANIMATION_EVENT &event);
void RunAnimation(ANIMATION_EVENT &event);
void RunPopUpAnimations(ANIMATION_EVENT &event);
//void SetEventIndex(int index, int countdown=0, bool test=false);
//void PostNewEvent( int countDown, EVENT_TYPE type, ANIMATION_EVENT &animEvent);
void PostNewEvent( ANIMATION_EVENT &animEvent);
int IncrementEventIndex(void);
void PostLastNormalEvent(void);
void load_animation_profile(void); // cfg/anim-profiles.json
void load_animation_profileByIndex(int); // cfg/anim-profileX.json
void Init_LED_Devices(BOARD_PINS); // cfg/led-devices.json
rgbpixel_t hexToRGB(const char* hexColor);
//void Init_LEDStrip2(void);
void Init_FrontLight(void);
//void Init_RearLight(void);
void Strip1_Control_Task(void *parameters);
void Strip2_Control_Task(void *parameters);
void FrontLight_Task(void *parameters);
#endif