Legacy branch migration
This commit is contained in:
125
firmware/drivers/display.c
Normal file
125
firmware/drivers/display.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user