Legacy branch migration

This commit is contained in:
2024-03-12 21:23:47 +02:00
parent 02cb3a9c70
commit ddf9d263b1
139 changed files with 2476 additions and 14269 deletions

125
firmware/drivers/display.c Normal file
View File

@@ -0,0 +1,125 @@
/**** Includes ****/
#include "display.h"
/**** Private definitions ****/
/**** Private variables ****/
static uint8_t PWM_DIMM = 50;
static uint8_t PWM_BRIGTH = 100;
static uint8_t set_image = 0x00;
static uint16_t lock_timer = 0;
/**** Private function declarations ****/
static uint8_t ImageGen_Dot10(uint8_t percent);
static uint8_t ImageGen_Dot20(uint8_t percent);
static uint8_t ImageGen_Bar(uint8_t percent);
/**** Public function definitions ****/
void Display_CfgBacklight(uint8_t brigth, uint8_t dimm)
{
//Limit values
if(brigth>100) brigth = 100;
else if(brigth==0) brigth = 1;
if(dimm>100) dimm = 100;
else if(dimm==0) dimm = 1;
//Save values
PWM_BRIGTH = brigth;
PWM_DIMM = dimm;
}
void Display_SetImage(uint8_t image)
{
if(lock_timer) return;
set_image = image & 0x3F;
}
void Display_SetPercent(uint8_t value, dspStyle_t style)
{
switch(style)
{
case BAR:
Display_SetImage(ImageGen_Bar(value));
break;
case DOT10:
Display_SetImage(ImageGen_Dot10(value));
break;
default:
Display_SetImage(ImageGen_Dot20(value));
break;
}
}
void Display_SetScale(uint16_t value, uint16_t max_value ,dspStyle_t style)
{
//Convert value to percent
uint32_t temp = (uint32_t)value *100;
temp /= max_value;
//Limit value to 100 percent
uint8_t percent = 0;
if(temp >= 100) percent = 100;
else if(temp == 0) percent = 0;
else percent = (uint8_t)temp;
Display_SetPercent(percent, style);
}
void Display_SetLock(uint16_t time)
{
lock_timer = time;
}
void Display_Update(inputs_t* inputs)
{
// Brightness control
if(inputs->dimm.is_active) LED_DSP_SetBrightness(PWM_DIMM);
else LED_DSP_SetBrightness(PWM_BRIGTH);
if(lock_timer) lock_timer--;
// Set image
LED_DSP_ShowImage(set_image);
}
/**** Private function definitions ****/
static uint8_t ImageGen_Dot10(uint8_t percent)
{
if(percent<6) return 0x01;
else if(percent<16) return 0x03;
else if(percent<26) return 0x02;
else if(percent<36) return 0x06;
else if(percent<46) return 0x04;
else if(percent<56) return 0x0C;
else if(percent<66) return 0x08;
else if(percent<76) return 0x18;
else if(percent<86) return 0x10;
else if(percent<96) return 0x30;
else return 0x20;
}
static uint8_t ImageGen_Dot20(uint8_t percent)
{
if(percent<11) return 0x01;
else if(percent<31) return 0x02;
else if(percent<51) return 0x04;
else if(percent<71) return 0x08;
else if(percent<91) return 0x10;
else return 0x20;
}
static uint8_t ImageGen_Bar(uint8_t percent)
{
if(percent<11) return 0x01;
else if(percent<31) return 0x03;
else if(percent<51) return 0x07;
else if(percent<71) return 0x0F;
else if(percent<91) return 0x1F;
else return 0x3F;
}