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