From a4e8b7217b17f2bd1bf909bb7eabd7faa92b60a9 Mon Sep 17 00:00:00 2001 From: norbert-walter Date: Sun, 3 Apr 2022 19:35:44 +0200 Subject: [PATCH] Fix for config pages with more values --- lib/obp60task/OBP60Extensions.cpp | 35 +++++++++- lib/obp60task/OBP60Extensions.h | 2 + lib/obp60task/OBP60Formater.cpp | 6 +- lib/obp60task/OBPSensorTask.cpp | 10 ++- lib/obp60task/PageBattery2.cpp | 107 +++++++++++++++++++++++------- lib/obp60task/config.json | 90 ++++++++++++++++--------- 6 files changed, 189 insertions(+), 61 deletions(-) diff --git a/lib/obp60task/OBP60Extensions.cpp b/lib/obp60task/OBP60Extensions.cpp index 048913f..79182a0 100644 --- a/lib/obp60task/OBP60Extensions.cpp +++ b/lib/obp60task/OBP60Extensions.cpp @@ -237,7 +237,7 @@ SensorData calcSunsetSunrise(GwApi *api, double time, double date, double latitu int intminSS = 0; bool sunDown = false; - api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun: Lat %f, Lon %f, at: %d, next SR: %d, next SS: %d", latitude, longitude, t, sunR, sunS); +// api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun: Lat %f, Lon %f, at: %d, next SR: %d, next SS: %d", latitude, longitude, t, sunR, sunS); if (!isnan(time) && !isnan(date) && !isnan(latitude) && !isnan(longitude) && !isnan(timezone)) { // Calculate local time @@ -267,8 +267,39 @@ SensorData calcSunsetSunrise(GwApi *api, double time, double date, double latitu returnset.sunriseMinute = intminSR; returnset.sunDown = sunDown; - api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun: at t: %d, hasRise: %d, next SR: %d, hasSet: %d, next SS: %d\n", t, sr.hasRise, sr.riseTime, sr.hasSet, sr.setTime); +// api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun: at t: %d, hasRise: %d, next SR: %d, hasSet: %d, next SS: %d\n", t, sr.hasRise, sr.riseTime, sr.hasSet, sr.setTime); return returnset; } +// Battery graphic with fill level +void batteryGraphic(uint x, uint y, float percent, int pcolor, int bcolor){ + // Show battery + int xb = x; // X position + int yb = y; // Y position + int t = 4; // Line thickness + // Percent limits + if(percent < 0){ + percent = 0; + } + if(percent > 99){ + percent = 99; + } + // Battery corpus 100x80 with fill level + int level = int((100.0 - percent) * (80-(2*t)) / 100.0); + display.fillRect(xb, yb, 100, 80, pcolor); + if(percent < 99){ + display.fillRect(xb+t, yb+t, 100-(2*t), level, bcolor); + } + // Plus pol 20x15 + int xp = xb + 20; + int yp = yb - 15 + t; + display.fillRect(xp, yp, 20, 15, pcolor); + display.fillRect(xp+t, yp+t, 20-(2*t), 15-(2*t), bcolor); + // Minus pol 20x15 + int xm = xb + 60; + int ym = yb -15 + t; + display.fillRect(xm, ym, 20, 15, pcolor); + display.fillRect(xm+t, ym+t, 20-(2*t), 15-(2*t), bcolor); +} + #endif \ No newline at end of file diff --git a/lib/obp60task/OBP60Extensions.h b/lib/obp60task/OBP60Extensions.h index b2678b8..dd34b1b 100644 --- a/lib/obp60task/OBP60Extensions.h +++ b/lib/obp60task/OBP60Extensions.h @@ -44,4 +44,6 @@ void displayHeader(CommonData &commonData, GwApi::BoatValue *date, GwApi::BoatVa SensorData calcSunsetSunrise(GwApi *api, double time, double date, double latitude, double longitude, double timezone); // Calulate sunset and sunrise +void batteryGraphic(uint x, uint y, float percent, int pcolor, int bcolor); // Battery graphic with fill level + #endif \ No newline at end of file diff --git a/lib/obp60task/OBP60Formater.cpp b/lib/obp60task/OBP60Formater.cpp index 060261f..818c484 100644 --- a/lib/obp60task/OBP60Formater.cpp +++ b/lib/obp60task/OBP60Formater.cpp @@ -31,7 +31,7 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){ return result; } - LOG_DEBUG(GwLog::DEBUG,"formatValue init: getFormat: %s date->value: %f time->value: %f", value->getFormat(), commondata.date->value, commondata.time->value); +// LOG_DEBUG(GwLog::DEBUG,"formatValue init: getFormat: %s date->value: %f time->value: %f", value->getFormat(), commondata.date->value, commondata.time->value); static const int bsize = 30; char buffer[bsize+1]; buffer[0]=0; @@ -42,7 +42,7 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){ if (commondata.time->value + int(timeZone*3600) > 86400) {dayoffset = 1;} if (commondata.time->value + int(timeZone*3600) < 0) {dayoffset = -1;} - LOG_DEBUG(GwLog::DEBUG,"... formatDate value->value: %f tz: %f dayoffset: %d", value->value, timeZone, dayoffset); +// LOG_DEBUG(GwLog::DEBUG,"... formatDate value->value: %f tz: %f dayoffset: %d", value->value, timeZone, dayoffset); tmElements_t parts; time_t tv=tNMEA0183Msg::daysToTime_t(value->value + dayoffset); @@ -82,7 +82,7 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){ timeInSeconds = value->value + int(timeZone * 3600); if (timeInSeconds > 86400) {timeInSeconds = timeInSeconds - 86400;} if (timeInSeconds < 0) {timeInSeconds = timeInSeconds + 86400;} - LOG_DEBUG(GwLog::DEBUG,"... formatTime value: %f tz: %f corrected timeInSeconds: %f ", value->value, timeZone, timeInSeconds); +// LOG_DEBUG(GwLog::DEBUG,"... formatTime value: %f tz: %f corrected timeInSeconds: %f ", value->value, timeZone, timeInSeconds); if(usesimudata == false) { val=modf(timeInSeconds/3600.0,&inthr); val=modf(val*3600.0/60.0,&intmin); diff --git a/lib/obp60task/OBPSensorTask.cpp b/lib/obp60task/OBPSensorTask.cpp index 748cfbc..54cb018 100644 --- a/lib/obp60task/OBPSensorTask.cpp +++ b/lib/obp60task/OBPSensorTask.cpp @@ -413,7 +413,15 @@ void sensorTask(void *param){ if(millis() > starttime8 + 1000 && (String(powsensor1) == "INA219" || String(powsensor1) == "INA226")){ starttime8 = millis(); if(String(powsensor1) == "INA226" && INA226_1_ready == true){ - sensors.batteryVoltage = ina226_1.getBusVoltage(); + double voltage = ina226_1.getBusVoltage(); + // Limiter for voltage average building + if(voltage < -30){ + voltage = -30; + } + if(voltage > 30){ + voltage = 30; + } + sensors.batteryVoltage = voltage; sensors.batteryCurrent = ina226_1.getCurrent() * corrFactor; // Eliminates bit jitter by zero current values float factor = maxCurrent / 100; diff --git a/lib/obp60task/PageBattery2.cpp b/lib/obp60task/PageBattery2.cpp index 63cb5ee..1717381 100644 --- a/lib/obp60task/PageBattery2.cpp +++ b/lib/obp60task/PageBattery2.cpp @@ -49,10 +49,13 @@ public: bool holdvalues = config->getBool(config->holdvalues); String flashLED = config->getString(config->flashLED); String batVoltage = config->getString(config->batteryVoltage); + int batCapacity = config->getInt(config->batteryCapacity); String batType = config->getString(config->batteryType); String backlightMode = config->getString(config->backlight); - double value1 = 0; + double value1 = 0; // Battery voltage + double value2 = 0; // Battery current + double value3 = 0; // Battery power consumption double valueTrend = 0; // Average over 10 values // Get voltage value @@ -74,18 +77,28 @@ public: switch (average) { case 0: value1 = commonData.data.batteryVoltage; // Live data + value2 = commonData.data.batteryCurrent; + value3 = commonData.data.batteryPower; break; case 1: value1 = commonData.data.batteryVoltage10; // Average 10s + value2 = commonData.data.batteryCurrent10; + value3 = commonData.data.batteryPower10; break; case 2: value1 = commonData.data.batteryVoltage60; // Average 60s + value2 = commonData.data.batteryCurrent60; + value3 = commonData.data.batteryPower60; break; case 3: value1 = commonData.data.batteryVoltage300; // Average 300s + value2 = commonData.data.batteryCurrent300; + value3 = commonData.data.batteryPower300; break; default: value1 = commonData.data.batteryVoltage; // Default + value2 = commonData.data.batteryCurrent; + value3 = commonData.data.batteryPower; break; } bool valid1 = true; @@ -149,35 +162,45 @@ public: } // Clear display in obp60task.cpp in main loop - // Show battery - int xb = 150; // X position - int yb = 80; // Y position - int t = 4; // Line thickness - // Battery corpus 100x80 - display.fillRect(xb, yb, 100, 80, pixelcolor); - display.fillRect(xb+t, yb+t, 100-(2*t), 80-(2*t), bgcolor); - // Plus pol 20x15 - int xp = 170; - int yp = 69; - display.fillRect(xp, yp, 20, 15, pixelcolor); - display.fillRect(xp+t, yp+t, 20-(2*t), 15-(2*t), bgcolor); - // Minus pol 20x15 - int xm = 210; - int ym = 69; - display.fillRect(xm, ym, 20, 15, pixelcolor); - display.fillRect(xm+t, ym+t, 20-(2*t), 15-(2*t), bgcolor); + // Show name + display.setTextColor(textcolor); + display.setFont(&Ubuntu_Bold20pt7b); + display.setCursor(10, 65); + display.print("Bat."); - - // Show batery type + // Show batery type display.setTextColor(textcolor); display.setFont(&Ubuntu_Bold8pt7b); - display.setCursor(295, 100); + display.setCursor(90, 65); display.print(batType); + // Show voltage type + display.setTextColor(textcolor); + display.setFont(&DSEG7Classic_BoldItalic20pt7b); + display.setCursor(10, 140); + int bvoltage = 0; + if(String(batVoltage) == "12V") bvoltage = 12; + else bvoltage = 24; + display.print(bvoltage); + display.setFont(&Ubuntu_Bold16pt7b); + display.print("V"); + + // Show batery capacity + display.setTextColor(textcolor); + display.setFont(&DSEG7Classic_BoldItalic20pt7b); + display.setCursor(10, 200); + display.print(batCapacity); + display.setFont(&Ubuntu_Bold16pt7b); + display.print("Ah"); + + // Show battery with fill level + static int level = 0; + batteryGraphic(150, 45, level, pixelcolor, bgcolor); + // Show average settings display.setTextColor(textcolor); display.setFont(&Ubuntu_Bold8pt7b); - display.setCursor(320, 100); + display.setCursor(150, 145); switch (average) { case 0: display.print("Avg: 1s"); @@ -196,10 +219,28 @@ public: break; } + // Show fill level in percent + display.setTextColor(textcolor); + display.setFont(&DSEG7Classic_BoldItalic20pt7b); + display.setCursor(150, 200); + display.print(level); + display.setFont(&Ubuntu_Bold16pt7b); + display.print("%"); + level += 1; + level = level % 100; + + // Show time to full discharge + display.setTextColor(textcolor); + display.setFont(&DSEG7Classic_BoldItalic20pt7b); + display.setCursor(150, 260); + display.print(8.3, 1); + display.setFont(&Ubuntu_Bold16pt7b); + display.print("h"); + // Reading bus data or using simulation data display.setTextColor(textcolor); display.setFont(&DSEG7Classic_BoldItalic20pt7b); - display.setCursor(20, 240); + display.setCursor(260, 140); if(simulation == true){ if(batVoltage == "12V"){ value1 = 12.0; @@ -226,8 +267,26 @@ public: } else{ display.print("---"); // Missing bus data - } + } } + display.setFont(&Ubuntu_Bold16pt7b); + display.print("V"); + + // Show actual current in A + display.setTextColor(textcolor); + display.setFont(&DSEG7Classic_BoldItalic20pt7b); + display.setCursor(260, 200); + display.print(value2, 1); + display.setFont(&Ubuntu_Bold16pt7b); + display.print("A"); + + // Show actual consumption in W + display.setTextColor(textcolor); + display.setFont(&DSEG7Classic_BoldItalic20pt7b); + display.setCursor(260, 260); + display.print(value3, 1); + display.setFont(&Ubuntu_Bold16pt7b); + display.print("W"); // Key Layout display.setTextColor(textcolor); diff --git a/lib/obp60task/config.json b/lib/obp60task/config.json index c047774..5c7b61e 100644 --- a/lib/obp60task/config.json +++ b/lib/obp60task/config.json @@ -122,8 +122,36 @@ "default": "0.0", "check": "checkMinMax", "min": 0.0, + "max": 999.0, + "description": "Battery capacity [0...999Ah]", + "category": "OBP60 Settings", + "capabilities": { + "obp60":"true" + } + }, + { + "name": "solarPower", + "label": "Solar Power [W]", + "type": "number", + "default": "0.0", + "check": "checkMinMax", + "min": 0.0, "max": 10000.0, - "description": "Battery capacity [0...10000Ah]", + "description": "Solar power [0...10000W]", + "category": "OBP60 Settings", + "capabilities": { + "obp60":"true" + } + }, + { + "name": "genPower", + "label": "Genarator Power [W]", + "type": "number", + "default": "0.0", + "check": "checkMinMax", + "min": 0.0, + "max": 10000.0, + "description": "Generator power [0...10000W]", "category": "OBP60 Settings", "capabilities": { "obp60":"true" @@ -672,7 +700,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page1type":"OneValue"},{"page1type":"TwoValue"},{"page1type":"ThreeValue"},{"page1type":"FourValues"},{"page1type":"FourValues2"}] + "condition":[{"page1type":"OneValue"},{"page1type":"TwoValues"},{"page1type":"ThreeValues"},{"page1type":"FourValues"},{"page1type":"FourValues2"}] }, { "name": "page1value2", @@ -684,7 +712,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page1type":"TwoValue"},{"page1type":"ThreeValue"},{"page1type":"FourValues"},{"page1type":"FourValues2"}] + "condition":[{"page1type":"TwoValues"},{"page1type":"ThreeValues"},{"page1type":"FourValues"},{"page1type":"FourValues2"}] }, { "name": "page1value3", @@ -696,7 +724,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page1type":"ThreeValue"},{"page1type":"FourValues"},{"page1type":"FourValues2"}] + "condition":[{"page1type":"ThreeValues"},{"page1type":"FourValues"},{"page1type":"FourValues2"}] }, { "name": "page1value4", @@ -733,7 +761,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page2type":"OneValue"},{"page2type":"TwoValue"},{"page2type":"ThreeValue"},{"page2type":"FourValues"},{"page2type":"FourValues2"}] + "condition":[{"page2type":"OneValue"},{"page2type":"TwoValues"},{"page2type":"ThreeValues"},{"page2type":"FourValues"},{"page2type":"FourValues2"}] }, { "name": "page2value2", @@ -745,7 +773,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page2type":"TwoValue"},{"page2type":"ThreeValue"},{"page2type":"FourValues"},{"page2type":"FourValues2"}] + "condition":[{"page2type":"TwoValues"},{"page2type":"ThreeValues"},{"page2type":"FourValues"},{"page2type":"FourValues2"}] }, { "name": "page2value3", @@ -757,7 +785,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page2type":"ThreeValue"},{"page2type":"FourValues"},{"page2type":"FourValues2"}] + "condition":[{"page2type":"ThreeValues"},{"page2type":"FourValues"},{"page2type":"FourValues2"}] }, { "name": "page2value4", @@ -794,7 +822,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page3type":"OneValue"},{"page3type":"TwoValue"},{"page3type":"ThreeValue"},{"page3type":"FourValues"},{"page3type":"FourValues2"}] + "condition":[{"page3type":"OneValue"},{"page3type":"TwoValues"},{"page3type":"ThreeValues"},{"page3type":"FourValues"},{"page3type":"FourValues2"}] }, { "name": "page3value2", @@ -806,7 +834,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page3type":"TwoValue"},{"page3type":"ThreeValue"},{"page3type":"FourValues"},{"page3type":"FourValues2"}] + "condition":[{"page3type":"TwoValues"},{"page3type":"ThreeValues"},{"page3type":"FourValues"},{"page3type":"FourValues2"}] }, { "name": "page3value3", @@ -818,7 +846,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page3type":"ThreeValue"},{"page3type":"FourValues"},{"page3type":"FourValues2"}] + "condition":[{"page3type":"ThreeValues"},{"page3type":"FourValues"},{"page3type":"FourValues2"}] }, { "name": "page3value4", @@ -855,7 +883,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page4type":"OneValue"},{"page4type":"TwoValue"},{"page4type":"ThreeValue"},{"page4type":"FourValues"},{"page4type":"FourValues2"}] + "condition":[{"page4type":"OneValue"},{"page4type":"TwoValues"},{"page4type":"ThreeValues"},{"page4type":"FourValues"},{"page4type":"FourValues2"}] }, { "name": "page4value2", @@ -867,7 +895,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page4type":"TwoValue"},{"page4type":"ThreeValue"},{"page4type":"FourValues"},{"page4type":"FourValues2"}] + "condition":[{"page4type":"TwoValues"},{"page4type":"ThreeValues"},{"page4type":"FourValues"},{"page4type":"FourValues2"}] }, { "name": "page4value3", @@ -879,7 +907,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page4type":"ThreeValue"},{"page4type":"FourValues"},{"page4type":"FourValues2"}] + "condition":[{"page4type":"ThreeValues"},{"page4type":"FourValues"},{"page4type":"FourValues2"}] }, { "name": "page4value4", @@ -916,7 +944,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page5type":"OneValue"},{"page5type":"TwoValue"},{"page5type":"ThreeValue"},{"page5type":"FourValues"},{"page5type":"FourValues2"}] + "condition":[{"page5type":"OneValue"},{"page5type":"TwoValues"},{"page5type":"ThreeValues"},{"page5type":"FourValues"},{"page5type":"FourValues2"}] }, { "name": "page5value2", @@ -928,7 +956,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page5type":"TwoValue"},{"page5type":"ThreeValue"},{"page5type":"FourValues"},{"page5type":"FourValues2"}] + "condition":[{"page5type":"TwoValues"},{"page5type":"ThreeValues"},{"page5type":"FourValues"},{"page5type":"FourValues2"}] }, { "name": "page5value3", @@ -940,7 +968,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page5type":"ThreeValue"},{"page5type":"FourValues"},{"page5type":"FourValues2"}] + "condition":[{"page5type":"ThreeValues"},{"page5type":"FourValues"},{"page5type":"FourValues2"}] }, { "name": "page5value4", @@ -977,7 +1005,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page6type":"OneValue"},{"page6type":"TwoValue"},{"page6type":"ThreeValue"},{"page6type":"FourValues"},{"page6type":"FourValues2"}] + "condition":[{"page6type":"OneValue"},{"page6type":"TwoValues"},{"page6type":"ThreeValues"},{"page6type":"FourValues"},{"page6type":"FourValues2"}] }, { "name": "page6value2", @@ -989,7 +1017,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page6type":"TwoValue"},{"page6type":"ThreeValue"},{"page6type":"FourValues"},{"page6type":"FourValues2"}] + "condition":[{"page6type":"TwoValues"},{"page6type":"ThreeValues"},{"page6type":"FourValues"},{"page6type":"FourValues2"}] }, { "name": "page6value3", @@ -1001,7 +1029,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page6type":"ThreeValue"},{"page6type":"FourValues"},{"page6type":"FourValues2"}] + "condition":[{"page6type":"ThreeValues"},{"page6type":"FourValues"},{"page6type":"FourValues2"}] }, { "name": "page6value4", @@ -1038,7 +1066,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page7type":"OneValue"},{"page7type":"TwoValue"},{"page7type":"ThreeValue"},{"page7type":"FourValues"},{"page7type":"FourValues2"}] + "condition":[{"page7type":"OneValue"},{"page7type":"TwoValues"},{"page7type":"ThreeValues"},{"page7type":"FourValues"},{"page7type":"FourValues2"}] }, { "name": "page7value2", @@ -1050,7 +1078,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page7type":"TwoValue"},{"page7type":"ThreeValue"},{"page7type":"FourValues"},{"page7type":"FourValues2"}] + "condition":[{"page7type":"TwoValues"},{"page7type":"ThreeValues"},{"page7type":"FourValues"},{"page7type":"FourValues2"}] }, { "name": "page7value3", @@ -1062,7 +1090,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page7type":"ThreeValue"},{"page7type":"FourValues"},{"page7type":"FourValues2"}] + "condition":[{"page7type":"ThreeValues"},{"page7type":"FourValues"},{"page7type":"FourValues2"}] }, { "name": "page7value4", @@ -1099,7 +1127,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page8type":"OneValue"},{"page8type":"TwoValue"},{"page8type":"ThreeValue"},{"page8type":"FourValues"},{"page8type":"FourValues2"}] + "condition":[{"page8type":"OneValue"},{"page8type":"TwoValues"},{"page8type":"ThreeValues"},{"page8type":"FourValues"},{"page8type":"FourValues2"}] }, { "name": "page8value2", @@ -1111,7 +1139,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page8type":"TwoValue"},{"page8type":"ThreeValue"},{"page8type":"FourValues"},{"page8type":"FourValues2"}] + "condition":[{"page8type":"TwoValues"},{"page8type":"ThreeValues"},{"page8type":"FourValues"},{"page8type":"FourValues2"}] }, { "name": "page8value3", @@ -1123,7 +1151,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page8type":"ThreeValue"},{"page8type":"FourValues"},{"page8type":"FourValues2"}] + "condition":[{"page8type":"ThreeValues"},{"page8type":"FourValues"},{"page8type":"FourValues2"}] }, { "name": "page8value4", @@ -1160,7 +1188,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page9type":"OneValue"},{"page9type":"TwoValue"},{"page9type":"ThreeValue"},{"page9type":"FourValues"},{"page9type":"FourValues2"}] + "condition":[{"page9type":"OneValue"},{"page9type":"TwoValues"},{"page9type":"ThreeValues"},{"page9type":"FourValues"},{"page9type":"FourValues2"}] }, { "name": "page9value2", @@ -1172,7 +1200,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page9type":"TwoValue"},{"page9type":"ThreeValue"},{"page9type":"FourValues"},{"page9type":"FourValues2"}] + "condition":[{"page9type":"TwoValues"},{"page9type":"ThreeValues"},{"page9type":"FourValues"},{"page9type":"FourValues2"}] }, { "name": "page9value3", @@ -1184,7 +1212,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page9type":"ThreeValue"},{"page9type":"FourValues"},{"page9type":"FourValues2"}] + "condition":[{"page9type":"ThreeValues"},{"page9type":"FourValues"},{"page9type":"FourValues2"}] }, { "name": "page9value4", @@ -1221,7 +1249,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page10type":"OneValue"},{"page10type":"TwoValue"},{"page10type":"ThreeValue"},{"page10type":"FourValues"},{"page10type":"FourValues2"}] + "condition":[{"page10type":"OneValue"},{"page10type":"TwoValues"},{"page10type":"ThreeValues"},{"page10type":"FourValues"},{"page10type":"FourValues2"}] }, { "name": "page10value2", @@ -1233,7 +1261,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page10type":"TwoValue"},{"page10type":"ThreeValue"},{"page10type":"FourValues"},{"page10type":"FourValues2"}] + "condition":[{"page10type":"TwoValues"},{"page10type":"ThreeValues"},{"page10type":"FourValues"},{"page10type":"FourValues2"}] }, { "name": "page10value3", @@ -1245,7 +1273,7 @@ "capabilities": { "obp60":"true" }, - "condition":[{"page10type":"ThreeValue"},{"page10type":"FourValues"},{"page10type":"FourValues2"}] + "condition":[{"page10type":"ThreeValues"},{"page10type":"FourValues"},{"page10type":"FourValues2"}] }, { "name": "page10value4",