crashtest-r0ket/firmware/l0dable/1boot.c

138 lines
2.7 KiB
C
Raw Normal View History

2011-08-04 14:34:56 +00:00
#include <sysinit.h>
#include "basic/basic.h"
#include "basic/config.h"
#include "filesystem/ff.h"
2011-08-04 14:34:56 +00:00
#include "lcd/print.h"
#include "usetable.h"
2011-08-04 19:38:48 +00:00
static void screen_intro();
static void set_privacy(int level);
2011-08-04 14:34:56 +00:00
static void privacy0();
static void privacy1();
static void privacy2();
2011-08-04 19:38:48 +00:00
static bool screen_overview();
2011-08-04 14:34:56 +00:00
static const char levels[][12] = {"0-trackable","1-mesh only","2-RF OFF"};
2011-08-04 19:38:48 +00:00
bool privacy_set;
2011-08-04 14:34:56 +00:00
static const struct MENU submenu_privacy={ "Privacy?", {
{ levels[0], &privacy0},
{ levels[1], &privacy1},
{ levels[2], &privacy2},
{NULL,NULL}
}};
static void yellow();
static void green();
static const char colors[][12] = {"0-yellow","1-green"};
bool color_set;
static const struct MENU submenu_color={ "r0ket color?", {
{ colors[0], &yellow},
{ colors[1], &green},
{NULL,NULL}
}};
2011-08-04 19:38:48 +00:00
2011-08-04 14:34:56 +00:00
void ram(void){
2011-08-04 19:38:48 +00:00
bool again = true;
FIL file;
2011-08-04 19:46:28 +00:00
menuflags|=(MENU_JUSTONCE|MENU_BIG);
2011-08-04 19:38:48 +00:00
screen_intro();
while (again) {
color_set = false;
if( f_open(&file, "yell0w", FA_OPEN_EXISTING|FA_READ) == 0 ){
yellow();
color_set = true;
}
if( f_open(&file, "green", FA_OPEN_EXISTING|FA_READ) == 0 ){
yellow();
color_set = true;
}
while (!color_set) {
handleMenu(&submenu_color);
}
2011-08-04 19:38:48 +00:00
privacy_set = false;
while (!privacy_set) {
handleMenu(&submenu_privacy);
}
2011-08-04 23:44:34 +00:00
input("Nickname?", GLOBAL(nickname), 32, 127, MAXNICK-1);
2011-08-04 19:38:48 +00:00
getInputWaitRelease();
again = screen_overview();
}
2011-08-04 19:46:28 +00:00
menuflags&= (~(MENU_JUSTONCE|MENU_BIG));
2011-08-04 19:38:48 +00:00
writeFile("nick.cfg",GLOBAL(nickname),strlen(GLOBAL(nickname)));
saveConfig();
2011-08-04 14:34:56 +00:00
};
static void green() {
GLOBAL(daytrig) = 155;
GLOBAL(daytrighyst) = 10;
color_set = true;
}
static void yellow() {
GLOBAL(daytrig) = 160;
GLOBAL(daytrighyst) = 15;
color_set = true;
}
2011-08-04 14:34:56 +00:00
static void privacy0() {
set_privacy(0);
}
static void privacy1() {
set_privacy(1);
}
static void privacy2() {
set_privacy(2);
}
static void set_privacy(int level) {
2011-08-04 19:38:48 +00:00
GLOBAL(privacy) = level;
privacy_set = true;
}
static void screen_intro() {
2011-08-04 14:34:56 +00:00
lcdClear();
2011-08-04 23:44:34 +00:00
lcdPrintln("");
lcdPrintln(" r0ket");
lcdPrintln("");
lcdPrintln("launch config");
lcdPrintln("");
lcdPrintln("press any key");
lcdPrintln("to continue");
2011-08-04 14:34:56 +00:00
lcdRefresh();
2011-08-04 19:38:48 +00:00
getInputWait();
getInputWaitRelease();
}
static bool screen_overview() {
char key = 0;
while (key != BTN_ENTER) {
lcdClear();
lcdPrintln("Privacy:");
lcdPrintln(levels[GLOBAL(privacy)]);
lcdPrintln("");
lcdPrintln("Nickname:");
lcdPrintln(GLOBAL(nickname));
lcdPrintln("");
lcdPrintln("LEFT: cancel");
lcdPrintln("ENTER: OK");
lcdRefresh();
key = getInputWait();
if (key == BTN_LEFT) {
//getInputWaitRelease();
return true;
}
}
return false;
2011-08-04 14:34:56 +00:00
}