crashtest-r0ket/modules/bsx.c

75 lines
1.8 KiB
C

#include <sysinit.h>
#include "basic/basic.h"
#include "lcd/render.h"
#include "lcd/backlight.h"
#include "lcd/smallfonts.h"
void ReinvokeISP(void);
/**************************************************************************/
void module_bsx(void) {
int yctr = 18;
int dx = 0;
uint32_t brightness = 0;
font_direction = FONT_DIR_LTR; // LeftToRight is the default
font = &Font_7x8;
DoString(0, 0, "bsx");
backlightInit();
brightness = backlightGetBrightness();
while (1) {
uint32_t results;
lcdDisplay(0);
delayms(10);
if(gpioGetValue(RB_BTN1)==0){
brightness++;
if (brightness > 100) brightness = 100;
backlightSetBrightness(brightness);
};
if(gpioGetValue(RB_BTN0)==0){
brightness--;
if (brightness > 100) brightness = 0;
backlightSetBrightness(brightness);
};
if (gpioGetValue(RB_BTN4)==0) {
while(gpioGetValue(RB_BTN4)==0);
DoString(0,8,"Enter ISP!");
lcdDisplay(0);
ReinvokeISP();
};
dx = DoString(0, yctr, "Bright:");
dx = DoInt(dx, yctr, brightness);
DoString(dx, yctr, "% ");
results = adcRead(1);
dx=DoString(0,yctr+20,"Voltage:");
results *= 10560;
results /= 1024;
DoInt(dx,yctr+20,results);
if (results < 3500) {
DoString(0,yctr+30,"Shutdown");
gpioSetValue (RB_PWR_GOOD, 0);
gpioSetValue (RB_LCD_BL, 0);
SCB_SCR |= SCB_SCR_SLEEPDEEP;
PMU_PMUCTRL = PMU_PMUCTRL_DPDEN_DEEPPOWERDOWN;
__asm volatile ("WFI");
} else {
DoString(0,yctr+30,"OK ");
}
}
return;
}