Add all setup data in structure
This commit is contained in:
parent
3efba049f6
commit
89281345d6
|
@ -218,18 +218,40 @@ void OBP60Task(void *param){
|
|||
|
||||
bool hasPosition = false;
|
||||
|
||||
// Get some configuration data from webside
|
||||
// Get configuration data from webside
|
||||
// OBP60 Settings
|
||||
bool exampleSwitch = api->getConfig()->getConfigItem(api->getConfig()->obp60Config,true)->asBoolean();
|
||||
LOG_DEBUG(GwLog::DEBUG,"example switch ist %s",exampleSwitch?"true":"false");
|
||||
bool gpsOn = api->getConfig()->getConfigItem(api->getConfig()->useGPS,true)->asBoolean();
|
||||
bool bme280On = api->getConfig()->getConfigItem(api->getConfig()->useBME280,true)->asBoolean();
|
||||
bool onewireOn = api->getConfig()->getConfigItem(api->getConfig()->use1Wire,true)->asBoolean();
|
||||
api->getConfig()->getConfigItem(api->getConfig()->dateFormat,true)->asString().toCharArray(busInfo.dateformat, 3);
|
||||
busInfo.timezone = api->getConfig()->getConfigItem(api->getConfig()->timeZone,true)->asInt();
|
||||
busInfo.draft = api->getConfig()->getConfigItem(api->getConfig()->draft,true)->asString().toFloat();
|
||||
busInfo.fueltank = api->getConfig()->getConfigItem(api->getConfig()->fuelTank,true)->asString().toFloat();
|
||||
busInfo.fuelconsumption = api->getConfig()->getConfigItem(api->getConfig()->fuelConsumption,true)->asString().toFloat();
|
||||
busInfo.watertank = api->getConfig()->getConfigItem(api->getConfig()->waterTank,true)->asString().toFloat();
|
||||
busInfo.wastetank = api->getConfig()->getConfigItem(api->getConfig()->wasteTank,true)->asString().toFloat();
|
||||
busInfo.batvoltage = api->getConfig()->getConfigItem(api->getConfig()->batteryVoltage,true)->asString().toFloat();
|
||||
api->getConfig()->getConfigItem(api->getConfig()->batteryType,true)->asString().toCharArray(busInfo.battype, 16);
|
||||
busInfo.batcapacity = api->getConfig()->getConfigItem(api->getConfig()->batteryCapacity,true)->asString().toFloat();
|
||||
// OBP60 Hardware
|
||||
busInfo.gps = api->getConfig()->getConfigItem(api->getConfig()->useGPS,true)->asBoolean();
|
||||
busInfo.bme280 = api->getConfig()->getConfigItem(api->getConfig()->useBME280,true)->asBoolean();
|
||||
busInfo.onewire = api->getConfig()->getConfigItem(api->getConfig()->use1Wire,true)->asBoolean();
|
||||
String powerMode = api->getConfig()->getConfigItem(api->getConfig()->powerMode,true)->asString();
|
||||
busInfo.simulation = api->getConfig()->getConfigItem(api->getConfig()->useSimuData,true)->asBoolean();
|
||||
String powerMode=api->getConfig()->getConfigItem(api->getConfig()->powerMode,true)->asString();
|
||||
String displayMode=api->getConfig()->getConfigItem(api->getConfig()->display,true)->asString();
|
||||
// OBP60 Display
|
||||
String displayMode = api->getConfig()->getConfigItem(api->getConfig()->display,true)->asString();
|
||||
busInfo.statusline = api->getConfig()->getConfigItem(api->getConfig()->statusLine,true)->asBoolean();
|
||||
bool refreshOn = api->getConfig()->getConfigItem(api->getConfig()->refresh,true)->asBoolean();
|
||||
String backlightMode=api->getConfig()->getConfigItem(api->getConfig()->backlight,true)->asString();
|
||||
busInfo.refresh = api->getConfig()->getConfigItem(api->getConfig()->refresh,true)->asBoolean();
|
||||
String backlightMode = api->getConfig()->getConfigItem(api->getConfig()->backlight,true)->asString();
|
||||
api->getConfig()->getConfigItem(api->getConfig()->flashLED,true)->asString().toCharArray(busInfo.flashled, 16);
|
||||
// OBP60 Buzzer
|
||||
busInfo.buzerror = api->getConfig()->getConfigItem(api->getConfig()->buzzerError,true)->asBoolean();
|
||||
busInfo.buzgps = api->getConfig()->getConfigItem(api->getConfig()->buzzerGps,true)->asBoolean();
|
||||
busInfo.buzlimits = api->getConfig()->getConfigItem(api->getConfig()->buzzerLim,true)->asBoolean();
|
||||
api->getConfig()->getConfigItem(api->getConfig()->buzzerMode,true)->asString().toCharArray(busInfo.buzmode, 16);
|
||||
busInfo.buzpower = api->getConfig()->getConfigItem(api->getConfig()->buzzerPower,true)->asInt();
|
||||
// OBP60 Pages
|
||||
busInfo.numpages = api->getConfig()->getConfigItem(api->getConfig()->numberPages,true)->asInt();
|
||||
|
||||
// Initializing all necessary boat data
|
||||
GwApi::BoatValue *sog=new GwApi::BoatValue(F("SOG"));
|
||||
|
@ -308,7 +330,7 @@ void OBP60Task(void *param){
|
|||
}
|
||||
|
||||
// Send NMEA0183 GPS data on several bus systems
|
||||
if(gpsOn == true){ // If config enabled
|
||||
if(busInfo.gps == true){ // If config enabled
|
||||
if(gps_ready = true){
|
||||
tNMEA0183Msg NMEA0183Msg;
|
||||
while(NMEA0183.GetMessage(NMEA0183Msg)){
|
||||
|
@ -319,16 +341,21 @@ void OBP60Task(void *param){
|
|||
|
||||
//fetch the current values of the items that we have in itemNames
|
||||
api->getBoatDataValues(7,valueList);
|
||||
|
||||
busInfo.WaterDepth.fvalue = waterdepth->value;
|
||||
waterdepth->getFormat().toCharArray(busInfo.WaterDepth.unit, 8, 0);
|
||||
busInfo.WaterDepth.valid = int(waterdepth->valid);
|
||||
|
||||
busInfo.SOG.fvalue = sog->value;
|
||||
sog->getFormat().toCharArray(busInfo.SOG.unit, 8, 0);
|
||||
busInfo.SOG.valid = int(sog->valid);
|
||||
|
||||
formatValue(date).toCharArray(busInfo.Date.svalue, 16, 0);
|
||||
busInfo.Date.valid = date->valid;
|
||||
|
||||
formatValue(time).toCharArray(busInfo.Time.svalue, 16, 0);
|
||||
busInfo.Time.valid = time->valid;
|
||||
|
||||
busInfo.PDOP.fvalue = pdop->value;
|
||||
busInfo.PDOP.valid = pdop->valid;
|
||||
|
||||
|
|
|
@ -7,15 +7,42 @@ typedef struct{
|
|||
float fvalue = 0; // Float value
|
||||
char svalue[16] = ""; // Char value
|
||||
char unit[8] = ""; // Unit
|
||||
int valid = 0; // Valid flag
|
||||
bool valid = 0; // Valid flag
|
||||
} dataContainer;
|
||||
|
||||
typedef struct{
|
||||
bool simulation = false; // Simulate boat data
|
||||
bool statusline = true;
|
||||
// OBP60 Settings
|
||||
char dateformat[3] = "GB";
|
||||
int timezone = 0;
|
||||
float draft = 0;
|
||||
float fueltank = 0;
|
||||
float fuelconsumption = 0;
|
||||
float watertank = 0;
|
||||
float wastetank = 0;
|
||||
float batvoltage = 0;
|
||||
char battype[16] = "Pb";
|
||||
float batcapacity = 0;
|
||||
// OBP60 Hardware
|
||||
bool gps = false;
|
||||
bool bme280 = false;
|
||||
bool onewire = false;
|
||||
char powermode[16] = "Max Power";
|
||||
bool simulation = false;
|
||||
// OBP60 Display
|
||||
char displaymode[16] = "Logo + QR Code";
|
||||
bool statusline = true;
|
||||
bool refresh = false;
|
||||
char backlight[16] = "Control by Key";
|
||||
char flashled[16] = "Off";
|
||||
// OBP60 Buzzer
|
||||
bool buzerror = false;
|
||||
bool buzgps = false;
|
||||
bool buzlimits = false;
|
||||
char buzmode[16] = "Off";
|
||||
int buzpower = 0;
|
||||
// OBP60 Pages
|
||||
int numpages = 1;
|
||||
// Bus data
|
||||
dataContainer AWA;
|
||||
dataContainer AWD;
|
||||
dataContainer AWS;
|
||||
|
|
|
@ -18,7 +18,7 @@ void showPage(busData values){
|
|||
display.setTextColor(GxEPD_BLACK);
|
||||
display.setCursor(0, 15);
|
||||
display.print(" WiFi AP TCP N2K 183 ");
|
||||
if(values.PDOP.valid == true && values.PDOP.fvalue <= 50){
|
||||
if(values.gps == true && values.PDOP.valid == true && values.PDOP.fvalue <= 50){
|
||||
display.print("GPS");
|
||||
}
|
||||
|
||||
|
@ -36,34 +36,60 @@ void showPage(busData values){
|
|||
// Date and time
|
||||
display.setFont(&Ubuntu_Bold8pt7b);
|
||||
display.setCursor(230, 15);
|
||||
char newdate[16] = "";
|
||||
if(values.PDOP.valid == true && values.PDOP.fvalue <= 50){
|
||||
if(String(values.dateformat) == "DE"){
|
||||
display.print(values.Date.svalue);
|
||||
}
|
||||
if(String(values.dateformat) == "GB"){
|
||||
values.Date.svalue[2] = '/';
|
||||
values.Date.svalue[5] = '/';
|
||||
display.print(values.Date.svalue);
|
||||
}
|
||||
if(String(values.dateformat) == "US"){
|
||||
if(values.gps == true){
|
||||
if(values.PDOP.valid == true && values.PDOP.fvalue <= 50){
|
||||
char newdate[16] = "";
|
||||
strcpy(newdate, values.Date.svalue);
|
||||
newdate[0] = values.Date.svalue[3];
|
||||
newdate[1] = values.Date.svalue[4];
|
||||
newdate[2] = '/';
|
||||
newdate[3] = values.Date.svalue[0];
|
||||
newdate[4] = values.Date.svalue[1];
|
||||
newdate[5] = '/';
|
||||
display.print(newdate);
|
||||
if(String(values.dateformat) == "DE"){
|
||||
display.print(values.Date.svalue);
|
||||
}
|
||||
if(String(values.dateformat) == "GB"){
|
||||
values.Date.svalue[2] = '/';
|
||||
values.Date.svalue[5] = '/';
|
||||
display.print(values.Date.svalue);
|
||||
}
|
||||
if(String(values.dateformat) == "US"){
|
||||
char newdate[16] = "";
|
||||
strcpy(newdate, values.Date.svalue);
|
||||
newdate[0] = values.Date.svalue[3];
|
||||
newdate[1] = values.Date.svalue[4];
|
||||
newdate[2] = '/';
|
||||
newdate[3] = values.Date.svalue[0];
|
||||
newdate[4] = values.Date.svalue[1];
|
||||
newdate[5] = '/';
|
||||
display.print(newdate);
|
||||
}
|
||||
display.print(" ");
|
||||
if(values.timezone == 0){
|
||||
display.print(values.Time.svalue);
|
||||
display.print(" ");
|
||||
display.print("UTC");
|
||||
}
|
||||
else{
|
||||
char newtime[16] = "";
|
||||
char newhour[3] = "";
|
||||
int hour = 0;
|
||||
strcpy(newtime, values.Time.svalue);
|
||||
newhour[0] = values.Time.svalue[0];
|
||||
newhour[1] = values.Time.svalue[1];
|
||||
hour = strtol(newhour, 0, 10);
|
||||
if(values.timezone > 0){
|
||||
hour += values.timezone;
|
||||
}
|
||||
else{
|
||||
hour += values.timezone + 24;
|
||||
}
|
||||
hour %= 24;
|
||||
sprintf(newhour, "%d", hour);
|
||||
newtime[0] = newhour[0];
|
||||
newtime[1] = newhour[1];
|
||||
display.print(newtime);
|
||||
display.print(" ");
|
||||
display.print("LOT");
|
||||
}
|
||||
}
|
||||
else{
|
||||
display.print("No GPS data");
|
||||
}
|
||||
display.print(" ");
|
||||
display.print(values.Time.svalue);
|
||||
display.print(" ");
|
||||
display.print("UTC");
|
||||
}
|
||||
else{
|
||||
display.print("No GPS data");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,7 +120,13 @@ void showPage(busData values){
|
|||
|
||||
// Update display
|
||||
if(values.refresh == true){
|
||||
display.update(); // Full update
|
||||
if(first_view == true){
|
||||
display.updateWindow(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, true); // Needs partial update before full update to refresh the frame buffer
|
||||
display.update(); // Full update
|
||||
}
|
||||
else{
|
||||
display.updateWindow(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, true); // Partial update (fast)
|
||||
}
|
||||
}
|
||||
else{
|
||||
display.updateWindow(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, true); // Partial update (fast)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x4000,
|
||||
otadata, data, ota, 0xd000, 0x2000,
|
||||
nvs, data, nvs, 0x9000, 0x5000
|
||||
otadata, data, ota, 0xe000, 0x2000,
|
||||
app0, app, ota_0, 0x10000, 0x1f0000,
|
||||
app1, app, ota_1, 0x200000,0x1f0000,
|
|
Loading…
Reference in New Issue