You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.5 KiB
69 lines
1.5 KiB
#include <LiquidCrystal_I2C.h>
|
|
#include <stdio.h>
|
|
#include "Arduino.h"
|
|
#include "FrSkyD_cc2500.h"
|
|
#include "state.h"
|
|
#include "input.h"
|
|
#include "eeprom.h"
|
|
#include "debug.h"
|
|
#include "config.h"
|
|
#include "pins.h"
|
|
#include "tx_def.h"
|
|
void centerText(const char *text, int fieldWidth)
|
|
{
|
|
int padlen = 0;
|
|
padlen = (fieldWidth - strlen(text)) / 2 ;
|
|
char line[17];
|
|
sprintf(line, "%*s%s%*s\n", padlen, "", text, padlen, "");
|
|
lcd.print(line);
|
|
}
|
|
|
|
LCD_state_init::LCD_state_init(void) {
|
|
}
|
|
void LCD_state_init::enter(void) {
|
|
lcd.setCursor(0,0);
|
|
lcd.print(" wellcome ");
|
|
lcd.setCursor(0,1);
|
|
centerText(REMOE_OWNER,16);
|
|
|
|
this->time_enter = millis();
|
|
}
|
|
|
|
void LCD_state_init::update(void)
|
|
{
|
|
uint32_t diff;
|
|
delay(100);
|
|
diff = millis() - this->time_enter;
|
|
if (diff > 3 * 1000) {
|
|
new_state = s_joy;
|
|
debugln("read start");
|
|
delay(1000);
|
|
if ( 0 > eeprom_config.read()) {
|
|
debugln("failed to read");
|
|
return;
|
|
}
|
|
debugln("read fin");
|
|
|
|
debugln("val start");
|
|
if ( 0 > eeprom_config.validate()) {
|
|
debugln("failed to validate");
|
|
return;
|
|
}
|
|
debugln("val fin");
|
|
|
|
new_state = s_menu;
|
|
|
|
struct Input::ch_config ch_config[Input::CH_COUNT];
|
|
eeprom_config.get_ch_config(ch_config);
|
|
input.set_calibration(ch_config);
|
|
|
|
uint32_t master_id = 0;
|
|
eeprom_config.get_master_id(&master_id);
|
|
set_rx_tx_addr(master_id);
|
|
}
|
|
}
|
|
|
|
void LCD_state_init::leave(void)
|
|
{
|
|
lcd.clear();
|
|
}
|