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.
74 lines
1.5 KiB
74 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 "tx_def.h"
|
|
|
|
LiquidCrystal_I2C lcd(0x27,16,2);
|
|
|
|
State *curr_state = NULL;
|
|
State *new_state = NULL;
|
|
|
|
State *s_init = NULL;
|
|
State *s_bind = NULL;
|
|
State *s_fly = NULL;
|
|
State *s_joy = NULL;
|
|
State *s_hf_cfg = NULL;
|
|
#ifndef ENABLE_DBEUG
|
|
State *s_usb = NULL;
|
|
#endif
|
|
State *s_menu = NULL;
|
|
|
|
|
|
void init_state(void) {
|
|
#if 0
|
|
Wire.setSDA(PB9);
|
|
Wire.setSCL(PB8);
|
|
#endif
|
|
Wire.begin();
|
|
lcd.init();
|
|
|
|
s_init = new LCD_state_init();
|
|
s_bind = new LCD_state_bind();
|
|
s_fly = new LCD_state_fly();
|
|
s_joy = new LCD_state_joy_calibration();
|
|
#ifndef ENABLE_DBEUG
|
|
s_usb = new LCD_state_joy_usb();
|
|
#endif
|
|
s_menu = new LCD_state_menu();
|
|
s_hf_cfg = new LCD_state_hf_cfg();
|
|
|
|
lcd.backlight();
|
|
curr_state = NULL;
|
|
new_state = s_init;
|
|
|
|
update_state();
|
|
}
|
|
|
|
void update_state(void) {
|
|
if(curr_state == new_state) {
|
|
if(curr_state)
|
|
curr_state->update();
|
|
} else {
|
|
if(curr_state)
|
|
curr_state->leave();
|
|
|
|
curr_state = new_state;
|
|
|
|
if(curr_state)
|
|
curr_state->enter();
|
|
}
|
|
}
|
|
void lcd_centerText(const char *text)
|
|
{
|
|
int fieldWidth = 16;
|
|
int padlen = 0;
|
|
padlen = (fieldWidth - strlen(text)) / 2 ;
|
|
char line[17] = " ";
|
|
sprintf(line, "%*s%s%*s", padlen, "", text, padlen, "");
|
|
lcd.print(line);
|
|
}
|