Compare commits
5 Commits
fb3af0bf83
...
4a273d2c93
Author | SHA1 | Date |
---|---|---|
![]() |
4a273d2c93 | |
![]() |
9be1b864f4 | |
![]() |
bfc4337417 | |
|
28a7e58e27 | |
|
eb51092b23 |
|
@ -65,6 +65,7 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
String tempFormat = commondata.config->getString(commondata.config->tempFormat); // [K|°C|°F]
|
String tempFormat = commondata.config->getString(commondata.config->tempFormat); // [K|°C|°F]
|
||||||
String dateFormat = commondata.config->getString(commondata.config->dateFormat); // [DE|GB|US]
|
String dateFormat = commondata.config->getString(commondata.config->dateFormat); // [DE|GB|US]
|
||||||
bool usesimudata = commondata.config->getBool(commondata.config->useSimuData); // [on|off]
|
bool usesimudata = commondata.config->getBool(commondata.config->useSimuData); // [on|off]
|
||||||
|
String precision = commondata.config->getString(commondata.config->valueprecision); // [1|2]
|
||||||
|
|
||||||
// If boat value not valid
|
// If boat value not valid
|
||||||
if (! value->valid && !usesimudata){
|
if (! value->valid && !usesimudata){
|
||||||
|
@ -72,6 +73,19 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* fmt_dec_1;
|
||||||
|
const char* fmt_dec_10;
|
||||||
|
const char* fmt_dec_100;
|
||||||
|
if (precision == "1") {
|
||||||
|
fmt_dec_1 = "%3.1f";
|
||||||
|
fmt_dec_10 = "%3.0f";
|
||||||
|
fmt_dec_100 = "%3.0f";
|
||||||
|
} else {
|
||||||
|
fmt_dec_1 = "%3.2f";
|
||||||
|
fmt_dec_10 = "%3.1f";
|
||||||
|
fmt_dec_100 = "%3.0f";
|
||||||
|
}
|
||||||
|
|
||||||
// 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;
|
static const int bsize = 30;
|
||||||
char buffer[bsize+1];
|
char buffer[bsize+1];
|
||||||
|
@ -206,13 +220,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
result.unit = "m/s";
|
result.unit = "m/s";
|
||||||
}
|
}
|
||||||
if(speed < 10) {
|
if(speed < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",speed);
|
snprintf(buffer, bsize, fmt_dec_1, speed);
|
||||||
}
|
}
|
||||||
if(speed >= 10 && speed < 100){
|
else if (speed < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",speed);
|
snprintf(buffer, bsize, fmt_dec_10, speed);
|
||||||
}
|
}
|
||||||
if(speed >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",speed);
|
snprintf(buffer, bsize, fmt_dec_100, speed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//########################################################
|
//########################################################
|
||||||
|
@ -238,40 +252,40 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
if (speed < 0.3) {
|
if (speed < 0.3) {
|
||||||
speed = 0;
|
speed = 0;
|
||||||
}
|
}
|
||||||
if(speed >=0.3 && speed < 1.5){
|
else if (speed < 1.5) {
|
||||||
speed = 1;
|
speed = 1;
|
||||||
}
|
}
|
||||||
if(speed >=1.5 && speed < 3.3){
|
else if (speed < 3.3) {
|
||||||
speed = 2;
|
speed = 2;
|
||||||
}
|
}
|
||||||
if(speed >=3.3 && speed < 5.4){
|
else if (speed < 5.4) {
|
||||||
speed = 3;
|
speed = 3;
|
||||||
}
|
}
|
||||||
if(speed >=5.4 && speed < 7.9){
|
else if (speed < 7.9) {
|
||||||
speed = 4;
|
speed = 4;
|
||||||
}
|
}
|
||||||
if(speed >=7.9 && speed < 10.7){
|
else if (speed < 10.7) {
|
||||||
speed = 5;
|
speed = 5;
|
||||||
}
|
}
|
||||||
if(speed >=10.7 && speed < 13.8){
|
else if (speed < 13.8) {
|
||||||
speed = 6;
|
speed = 6;
|
||||||
}
|
}
|
||||||
if(speed >=13.8 && speed < 17.1){
|
else if (speed < 17.1) {
|
||||||
speed = 7;
|
speed = 7;
|
||||||
}
|
}
|
||||||
if(speed >=17.1 && speed < 20.7){
|
else if (speed < 20.7) {
|
||||||
speed = 8;
|
speed = 8;
|
||||||
}
|
}
|
||||||
if(speed >=20.7 && speed < 24.4){
|
else if (speed < 24.4) {
|
||||||
speed = 9;
|
speed = 9;
|
||||||
}
|
}
|
||||||
if(speed >=24.4 && speed < 28.4){
|
else if (speed < 28.4) {
|
||||||
speed = 10;
|
speed = 10;
|
||||||
}
|
}
|
||||||
if(speed >=28.4 && speed < 32.6){
|
else if (speed < 32.6) {
|
||||||
speed = 11;
|
speed = 11;
|
||||||
}
|
}
|
||||||
if(speed >=32.6){
|
else {
|
||||||
speed = 12;
|
speed = 12;
|
||||||
}
|
}
|
||||||
result.unit = "bft";
|
result.unit = "bft";
|
||||||
|
@ -285,13 +299,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if (speed < 10){
|
if (speed < 10){
|
||||||
snprintf(buffer,bsize,"%3.2f",speed);
|
snprintf(buffer, bsize, fmt_dec_1, speed);
|
||||||
}
|
}
|
||||||
if(speed >= 10 && speed < 100){
|
else if (speed < 100){
|
||||||
snprintf(buffer,bsize,"%3.1f",speed);
|
snprintf(buffer, bsize, fmt_dec_10, speed);
|
||||||
}
|
}
|
||||||
if(speed >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",speed);
|
snprintf(buffer, bsize, fmt_dec_100, speed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -337,10 +351,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
dop = 99.9;
|
dop = 99.9;
|
||||||
}
|
}
|
||||||
if (dop < 10){
|
if (dop < 10){
|
||||||
snprintf(buffer,bsize,"%3.2f",dop);
|
snprintf(buffer, bsize, fmt_dec_1, dop);
|
||||||
}
|
}
|
||||||
if(dop >= 10 && dop < 100){
|
else if(dop < 100){
|
||||||
snprintf(buffer,bsize,"%3.1f",dop);
|
snprintf(buffer, bsize, fmt_dec_10, dop);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
snprintf(buffer, bsize, fmt_dec_100, dop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//########################################################
|
//########################################################
|
||||||
|
@ -410,13 +427,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
result.unit = "m";
|
result.unit = "m";
|
||||||
}
|
}
|
||||||
if (depth < 10) {
|
if (depth < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",depth);
|
snprintf(buffer, bsize, fmt_dec_1, depth);
|
||||||
}
|
}
|
||||||
if(depth >= 10 && depth < 100){
|
else if (depth < 100){
|
||||||
snprintf(buffer,bsize,"%3.1f",depth);
|
snprintf(buffer, bsize, fmt_dec_10, depth);
|
||||||
}
|
}
|
||||||
if(depth >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",depth);
|
snprintf(buffer, bsize, fmt_dec_100, depth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//########################################################
|
//########################################################
|
||||||
|
@ -430,11 +447,11 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
xte = rawvalue;
|
xte = rawvalue;
|
||||||
}
|
}
|
||||||
if (xte >= 100) {
|
if (xte >= 100) {
|
||||||
snprintf(buffer,bsize,"%3.0f",value->value);
|
snprintf(buffer, bsize, fmt_dec_100, value->value);
|
||||||
} else if (xte >= 10) {
|
} else if (xte >= 10) {
|
||||||
snprintf(buffer,bsize,"%3.1f",value->value);
|
snprintf(buffer, bsize, fmt_dec_10, value->value);
|
||||||
} else {
|
} else {
|
||||||
snprintf(buffer,bsize,"%3.2f",value->value);
|
snprintf(buffer, bsize, fmt_dec_1, value->value);
|
||||||
}
|
}
|
||||||
result.unit = "nm";
|
result.unit = "nm";
|
||||||
}
|
}
|
||||||
|
@ -461,13 +478,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
result.unit = "K";
|
result.unit = "K";
|
||||||
}
|
}
|
||||||
if(temp < 10) {
|
if(temp < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",temp);
|
snprintf(buffer, bsize, fmt_dec_1, temp);
|
||||||
}
|
}
|
||||||
if(temp >= 10 && temp < 100){
|
else if (temp < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",temp);
|
snprintf(buffer, bsize, fmt_dec_10, temp);
|
||||||
}
|
}
|
||||||
if(temp >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",temp);
|
snprintf(buffer, bsize, fmt_dec_100, temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//########################################################
|
//########################################################
|
||||||
|
@ -489,17 +506,17 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
distance = distance * 0.000539957;
|
distance = distance * 0.000539957;
|
||||||
result.unit = "nm";
|
result.unit = "nm";
|
||||||
}
|
}
|
||||||
else{;
|
else {
|
||||||
result.unit = "m";
|
result.unit = "m";
|
||||||
}
|
}
|
||||||
if (distance < 10){
|
if (distance < 10){
|
||||||
snprintf(buffer,bsize,"%3.2f",distance);
|
snprintf(buffer, bsize, fmt_dec_1, distance);
|
||||||
}
|
}
|
||||||
if(distance >= 10 && distance < 100){
|
else if (distance < 100){
|
||||||
snprintf(buffer,bsize,"%3.1f",distance);
|
snprintf(buffer, bsize, fmt_dec_10, distance);
|
||||||
}
|
}
|
||||||
if(distance >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",distance);
|
snprintf(buffer, bsize, fmt_dec_100, distance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//########################################################
|
//########################################################
|
||||||
|
@ -547,10 +564,10 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
voltage = rawvalue;
|
voltage = rawvalue;
|
||||||
}
|
}
|
||||||
if (voltage < 10) {
|
if (voltage < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",voltage);
|
snprintf(buffer, bsize, fmt_dec_1, voltage);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf(buffer,bsize,"%3.1f",voltage);
|
snprintf(buffer, bsize, fmt_dec_10, voltage);
|
||||||
}
|
}
|
||||||
result.unit = "V";
|
result.unit = "V";
|
||||||
}
|
}
|
||||||
|
@ -566,13 +583,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
current = rawvalue;
|
current = rawvalue;
|
||||||
}
|
}
|
||||||
if (current < 10) {
|
if (current < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",current);
|
snprintf(buffer, bsize, fmt_dec_1, current);
|
||||||
}
|
}
|
||||||
if(current >= 10 && current < 100){
|
else if(current < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",current);
|
snprintf(buffer, bsize, fmt_dec_10, current);
|
||||||
}
|
}
|
||||||
if(current >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",current);
|
snprintf(buffer, bsize, fmt_dec_100, current);
|
||||||
}
|
}
|
||||||
result.unit = "A";
|
result.unit = "A";
|
||||||
}
|
}
|
||||||
|
@ -588,13 +605,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
temperature = rawvalue;
|
temperature = rawvalue;
|
||||||
}
|
}
|
||||||
if (temperature < 10) {
|
if (temperature < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",temperature);
|
snprintf(buffer, bsize, fmt_dec_1, temperature);
|
||||||
}
|
}
|
||||||
if(temperature >= 10 && temperature < 100){
|
else if (temperature < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",temperature);
|
snprintf(buffer, bsize, fmt_dec_10, temperature);
|
||||||
}
|
}
|
||||||
if(temperature >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",temperature);
|
snprintf(buffer, bsize, fmt_dec_100, temperature);
|
||||||
}
|
}
|
||||||
result.unit = "Deg C";
|
result.unit = "Deg C";
|
||||||
}
|
}
|
||||||
|
@ -610,13 +627,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
temperature = rawvalue;
|
temperature = rawvalue;
|
||||||
}
|
}
|
||||||
if (temperature < 10) {
|
if (temperature < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",temperature);
|
snprintf(buffer, bsize, fmt_dec_1, temperature);
|
||||||
}
|
}
|
||||||
if(temperature >= 10 && temperature < 100){
|
else if(temperature < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",temperature);
|
snprintf(buffer, bsize, fmt_dec_10, temperature);
|
||||||
}
|
}
|
||||||
if(temperature >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",temperature);
|
snprintf(buffer, bsize, fmt_dec_100, temperature);
|
||||||
}
|
}
|
||||||
result.unit = "Deg C";
|
result.unit = "Deg C";
|
||||||
}
|
}
|
||||||
|
@ -632,13 +649,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
humidity = rawvalue;
|
humidity = rawvalue;
|
||||||
}
|
}
|
||||||
if (humidity < 10) {
|
if (humidity < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",humidity);
|
snprintf(buffer, bsize, fmt_dec_1, humidity);
|
||||||
}
|
}
|
||||||
if(humidity >= 10 && humidity < 100){
|
else if(humidity < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",humidity);
|
snprintf(buffer, bsize, fmt_dec_10, humidity);
|
||||||
}
|
}
|
||||||
if(humidity >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",humidity);
|
snprintf(buffer, bsize, fmt_dec_100, humidity);
|
||||||
}
|
}
|
||||||
result.unit = "%";
|
result.unit = "%";
|
||||||
}
|
}
|
||||||
|
@ -654,13 +671,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
volume = rawvalue;
|
volume = rawvalue;
|
||||||
}
|
}
|
||||||
if (volume < 10) {
|
if (volume < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",volume);
|
snprintf(buffer, bsize, fmt_dec_1, volume);
|
||||||
}
|
}
|
||||||
if(volume >= 10 && volume < 100){
|
else if (volume < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",volume);
|
snprintf(buffer, bsize, fmt_dec_10, volume);
|
||||||
}
|
}
|
||||||
if(volume >= 100){
|
else if (volume >= 100) {
|
||||||
snprintf(buffer,bsize,"%3.0f",volume);
|
snprintf(buffer, bsize, fmt_dec_100, volume);
|
||||||
}
|
}
|
||||||
result.unit = "%";
|
result.unit = "%";
|
||||||
}
|
}
|
||||||
|
@ -676,13 +693,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
volume = rawvalue;
|
volume = rawvalue;
|
||||||
}
|
}
|
||||||
if (volume < 10) {
|
if (volume < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",volume);
|
snprintf(buffer, bsize, fmt_dec_1, volume);
|
||||||
}
|
}
|
||||||
if(volume >= 10 && volume < 100){
|
else if (volume < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",volume);
|
snprintf(buffer, bsize, fmt_dec_10, volume);
|
||||||
}
|
}
|
||||||
if(volume >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",volume);
|
snprintf(buffer, bsize, fmt_dec_100, volume);
|
||||||
}
|
}
|
||||||
result.unit = "l";
|
result.unit = "l";
|
||||||
}
|
}
|
||||||
|
@ -698,13 +715,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
flow = rawvalue;
|
flow = rawvalue;
|
||||||
}
|
}
|
||||||
if (flow < 10) {
|
if (flow < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",flow);
|
snprintf(buffer, bsize, fmt_dec_1, flow);
|
||||||
}
|
}
|
||||||
if(flow >= 10 && flow < 100){
|
else if (flow < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",flow);
|
snprintf(buffer, bsize, fmt_dec_10, flow);
|
||||||
}
|
}
|
||||||
if(flow >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",flow);
|
snprintf(buffer, bsize, fmt_dec_100, flow);
|
||||||
}
|
}
|
||||||
result.unit = "l/min";
|
result.unit = "l/min";
|
||||||
}
|
}
|
||||||
|
@ -712,7 +729,7 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
else if (value->getFormat() == "formatXdr:G:"){
|
else if (value->getFormat() == "formatXdr:G:"){
|
||||||
double generic = 0;
|
double generic = 0;
|
||||||
if (usesimudata == false) {
|
if (usesimudata == false) {
|
||||||
generic = value->value; // Value in l/min
|
generic = value->value;
|
||||||
rawvalue = value->value;
|
rawvalue = value->value;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -720,13 +737,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
generic = rawvalue;
|
generic = rawvalue;
|
||||||
}
|
}
|
||||||
if (generic < 10) {
|
if (generic < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",generic);
|
snprintf(buffer, bsize, fmt_dec_1, generic);
|
||||||
}
|
}
|
||||||
if(generic >= 10 && generic < 100){
|
else if (generic < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",generic);
|
snprintf(buffer, bsize, fmt_dec_10, generic);
|
||||||
}
|
}
|
||||||
if(generic >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",generic);
|
snprintf(buffer, bsize, fmt_dec_100, generic);
|
||||||
}
|
}
|
||||||
result.unit = "";
|
result.unit = "";
|
||||||
}
|
}
|
||||||
|
@ -742,13 +759,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
dplace = rawvalue;
|
dplace = rawvalue;
|
||||||
}
|
}
|
||||||
if (dplace < 10) {
|
if (dplace < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",dplace);
|
snprintf(buffer, bsize, fmt_dec_1, dplace);
|
||||||
}
|
}
|
||||||
if(dplace >= 10 && dplace < 100){
|
else if (dplace < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",dplace);
|
snprintf(buffer, bsize, fmt_dec_10, dplace);
|
||||||
}
|
}
|
||||||
if(dplace >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",dplace);
|
snprintf(buffer, bsize, fmt_dec_100, dplace);
|
||||||
}
|
}
|
||||||
result.unit = "%";
|
result.unit = "%";
|
||||||
}
|
}
|
||||||
|
@ -784,13 +801,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
rpm = rawvalue;
|
rpm = rawvalue;
|
||||||
}
|
}
|
||||||
if (rpm < 10) {
|
if (rpm < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",rpm);
|
snprintf(buffer, bsize, fmt_dec_1, rpm);
|
||||||
}
|
}
|
||||||
if(rpm >= 10 && rpm < 100){
|
else if (rpm < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",rpm);
|
snprintf(buffer, bsize, fmt_dec_10, rpm);
|
||||||
}
|
}
|
||||||
if(rpm >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",rpm);
|
snprintf(buffer, bsize, fmt_dec_100, rpm);
|
||||||
}
|
}
|
||||||
result.unit = "rpm";
|
result.unit = "rpm";
|
||||||
}
|
}
|
||||||
|
@ -799,13 +816,13 @@ FormattedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
|
||||||
//########################################################
|
//########################################################
|
||||||
else {
|
else {
|
||||||
if (value->value < 10) {
|
if (value->value < 10) {
|
||||||
snprintf(buffer,bsize,"%3.2f",value->value);
|
snprintf(buffer, bsize, fmt_dec_1, value->value);
|
||||||
}
|
}
|
||||||
if(value->value >= 10 && value->value < 100){
|
else if (value->value < 100) {
|
||||||
snprintf(buffer,bsize,"%3.1f",value->value);
|
snprintf(buffer, bsize, fmt_dec_10, value->value);
|
||||||
}
|
}
|
||||||
if(value->value >= 100){
|
else {
|
||||||
snprintf(buffer,bsize,"%3.0f",value->value);
|
snprintf(buffer, bsize, fmt_dec_100, value->value);
|
||||||
}
|
}
|
||||||
result.unit = "";
|
result.unit = "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1117,6 +1117,21 @@
|
||||||
"obp60":"true"
|
"obp60":"true"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "valueprecision",
|
||||||
|
"label": "Display value precision",
|
||||||
|
"type": "list",
|
||||||
|
"default": "2",
|
||||||
|
"description": "Maximum number of decimal places to display [1|2]",
|
||||||
|
"list": [
|
||||||
|
"1",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"category": "OBP60 Display",
|
||||||
|
"capabilities": {
|
||||||
|
"obp60":"true"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "backlight",
|
"name": "backlight",
|
||||||
"label": "Backlight Mode",
|
"label": "Backlight Mode",
|
||||||
|
|
|
@ -1129,6 +1129,21 @@
|
||||||
"obp40": "true"
|
"obp40": "true"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "valueprecision",
|
||||||
|
"label": "Display value precision",
|
||||||
|
"type": "list",
|
||||||
|
"default": "2",
|
||||||
|
"description": "Maximum number of decimal places to display [1|2]",
|
||||||
|
"list": [
|
||||||
|
"1",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"category": "OBP40 Display",
|
||||||
|
"capabilities": {
|
||||||
|
"obp40":"true"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "backlight",
|
"name": "backlight",
|
||||||
"label": "Backlight Mode",
|
"label": "Backlight Mode",
|
||||||
|
|
|
@ -1,46 +1,55 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# A tool to generate that part of config.json that deals with pages and fields.
|
|
||||||
#
|
|
||||||
#Usage: 1. modify this script (e.g.add a page, change number of fields, etc.)
|
|
||||||
# 2. Delete all lines from config.json from the curly backet before "name": "page1type" to o the end of the file (as of today, delete from line 917 to the end of the File)
|
|
||||||
# 3. run ./gen_set.py >> config.json
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
A tool to generate that part of config.json that deals with pages and fields.
|
||||||
|
|
||||||
|
Usage example:
|
||||||
|
|
||||||
|
1. Delete all lines from config.json from the curly backet before
|
||||||
|
"name": "page1type" to the end of the file
|
||||||
|
|
||||||
|
2. run ./gen_set.py -d obp60 -p 10 >> config.json
|
||||||
|
|
||||||
|
TODO Better handling of default pages
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import getopt
|
||||||
|
import re
|
||||||
import json
|
import json
|
||||||
|
|
||||||
# List of all pages and the number of parameters they expect.
|
__version__ = "0.2"
|
||||||
no_of_fields_per_page = {
|
|
||||||
"Wind": 0,
|
|
||||||
"XTETrack": 0,
|
|
||||||
"Battery2": 0,
|
|
||||||
"Battery": 0,
|
|
||||||
"BME280": 0,
|
|
||||||
"Clock": 0,
|
|
||||||
"Compass" : 0,
|
|
||||||
"DST810": 0,
|
|
||||||
"Fluid": 1,
|
|
||||||
"FourValues2": 4,
|
|
||||||
"FourValues": 4,
|
|
||||||
"Generator": 0,
|
|
||||||
"KeelPosition": 0,
|
|
||||||
"OneValue": 1,
|
|
||||||
"RollPitch": 2,
|
|
||||||
"RudderPosition": 0,
|
|
||||||
"SixValues" : 6,
|
|
||||||
"Solar": 0,
|
|
||||||
"ThreeValues": 3,
|
|
||||||
"TwoValues": 2,
|
|
||||||
"Voltage": 0,
|
|
||||||
"WhitePage": 0,
|
|
||||||
"WindPlot": 0,
|
|
||||||
"WindRose": 0,
|
|
||||||
"WindRoseFlex": 6,
|
|
||||||
}
|
|
||||||
|
|
||||||
# No changes needed beyond this point
|
def detect_pages(filename):
|
||||||
# max number of pages supported by OBP60
|
# returns a dictionary with page name and the number of gui fields
|
||||||
no_of_pages = 10
|
pagefiles = []
|
||||||
|
with open(filename, 'r') as fh:
|
||||||
|
pattern = r'extern PageDescription\s*register(Page[^;\s]*)'
|
||||||
|
for line in fh:
|
||||||
|
if "extern PageDescription" in line:
|
||||||
|
match = re.search(pattern, line)
|
||||||
|
if match:
|
||||||
|
pagefiles.append(match.group(1))
|
||||||
|
try:
|
||||||
|
pagefiles.remove('PageSystem')
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
pagedata = {}
|
||||||
|
for pf in pagefiles:
|
||||||
|
filename = pf + ".cpp"
|
||||||
|
with open(filename, 'r') as fh:
|
||||||
|
content = fh.read()
|
||||||
|
pattern = r'PageDescription\s*?register' + pf + r'\s*\(\s*"([^"]+)".*?\n\s*(\d+)'
|
||||||
|
match = re.search(pattern, content, re.DOTALL)
|
||||||
|
if match:
|
||||||
|
pagedata[match.group(1)] = int(match.group(2))
|
||||||
|
return pagedata
|
||||||
|
|
||||||
|
def get_default_page(pageno):
|
||||||
# Default selection for each page
|
# Default selection for each page
|
||||||
default_pages = [
|
default_pages = (
|
||||||
"Voltage",
|
"Voltage",
|
||||||
"WindRose",
|
"WindRose",
|
||||||
"OneValue",
|
"OneValue",
|
||||||
|
@ -50,22 +59,30 @@ default_pages = [
|
||||||
"FourValues2",
|
"FourValues2",
|
||||||
"Clock",
|
"Clock",
|
||||||
"RollPitch",
|
"RollPitch",
|
||||||
"Battery2",
|
"Battery2"
|
||||||
]
|
)
|
||||||
numbers = [
|
if pageno > len(default_pages):
|
||||||
"one",
|
return "OneValue"
|
||||||
"two",
|
return default_pages[pageno - 1]
|
||||||
"three",
|
|
||||||
"four",
|
def number_to_text(number):
|
||||||
"five",
|
if number < 0 or number > 99:
|
||||||
"six",
|
raise ValueError("Only numbers from 0 to 99 are allowed.")
|
||||||
"seven",
|
numbers = ("zero", "one", "two", "three", "four", "five", "six", "seven",
|
||||||
"eight",
|
"eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
|
||||||
"nine",
|
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
|
||||||
"ten",
|
tens = ("", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy",
|
||||||
]
|
"eighty", "ninety")
|
||||||
pages = sorted(no_of_fields_per_page.keys())
|
if number < 20:
|
||||||
max_no_of_fields_per_page = max(no_of_fields_per_page.values())
|
return numbers[number]
|
||||||
|
else:
|
||||||
|
q, r = divmod(number, 10)
|
||||||
|
return tens[q] + numbers[r]
|
||||||
|
|
||||||
|
def create_json(device, no_of_pages, pagedata):
|
||||||
|
|
||||||
|
pages = sorted(pagedata.keys())
|
||||||
|
max_no_of_fields_per_page = max(pagedata.values())
|
||||||
|
|
||||||
output = []
|
output = []
|
||||||
|
|
||||||
|
@ -74,11 +91,11 @@ for page_no in range(1, no_of_pages + 1):
|
||||||
"name": f"page{page_no}type",
|
"name": f"page{page_no}type",
|
||||||
"label": "Type",
|
"label": "Type",
|
||||||
"type": "list",
|
"type": "list",
|
||||||
"default": default_pages[page_no - 1],
|
"default": get_default_page(page_no),
|
||||||
"description": f"Type of page for page {page_no}",
|
"description": f"Type of page for page {page_no}",
|
||||||
"list": pages,
|
"list": pages,
|
||||||
"category": f"OBP60 Page {page_no}",
|
"category": f"{device.upper()} Page {page_no}",
|
||||||
"capabilities": {"obp60": "true"},
|
"capabilities": {device.lower(): "true"},
|
||||||
"condition": [{"visiblePages": vp} for vp in range(page_no, no_of_pages + 1)],
|
"condition": [{"visiblePages": vp} for vp in range(page_no, no_of_pages + 1)],
|
||||||
#"fields": [],
|
#"fields": [],
|
||||||
}
|
}
|
||||||
|
@ -90,13 +107,13 @@ for page_no in range(1, no_of_pages + 1):
|
||||||
"label": f"Field {field_no}",
|
"label": f"Field {field_no}",
|
||||||
"type": "boatData",
|
"type": "boatData",
|
||||||
"default": "",
|
"default": "",
|
||||||
"description": f"The display for field {numbers[field_no - 1]}",
|
"description": "The display for field {}".format(number_to_text(field_no)),
|
||||||
"category": f"OBP60 Page {page_no}",
|
"category": f"{device.upper()} Page {page_no}",
|
||||||
"capabilities": {"obp60": "true"},
|
"capabilities": {device.lower(): "true"},
|
||||||
"condition": [
|
"condition": [
|
||||||
{f"page{page_no}type": page}
|
{f"page{page_no}type": page}
|
||||||
for page in pages
|
for page in pages
|
||||||
if no_of_fields_per_page[page] >= field_no
|
if pagedata[page] >= field_no
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
output.append(field_data)
|
output.append(field_data)
|
||||||
|
@ -116,17 +133,47 @@ for page_no in range(1, no_of_pages + 1):
|
||||||
{"l":"Fuel Gasoline (6)","v":"6"}
|
{"l":"Fuel Gasoline (6)","v":"6"}
|
||||||
],
|
],
|
||||||
"description": "Fluid type in tank",
|
"description": "Fluid type in tank",
|
||||||
"category": f"OBP60 Page {page_no}",
|
"category": f"{device.upper()} Page {page_no}",
|
||||||
"capabilities": {
|
"capabilities": {
|
||||||
"obp60":"true"
|
device.lower(): "true"
|
||||||
},
|
},
|
||||||
"condition":[{f"page{page_no}type":"Fluid"}]
|
"condition":[{f"page{page_no}type":"Fluid"}]
|
||||||
}
|
}
|
||||||
output.append(fluid_data)
|
output.append(fluid_data)
|
||||||
|
|
||||||
json_output = json.dumps(output, indent=4)
|
return json.dumps(output, indent=4)
|
||||||
# print omitting first and last line containing [ ] of JSON array
|
|
||||||
#print(json_output[1:-1])
|
def usage():
|
||||||
|
print("{} v{}".format(os.path.basename(__file__), __version__))
|
||||||
|
print()
|
||||||
|
print("Command line options")
|
||||||
|
print(" -d --device device name to use e.g. obp60")
|
||||||
|
print(" -p --pages number of pages to create")
|
||||||
|
print(" -h show this help")
|
||||||
|
print()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
options, remainder = getopt.getopt(sys.argv[1:], 'd:p:', ['device=','--pages='])
|
||||||
|
except getopt.GetoptError as err:
|
||||||
|
print(err)
|
||||||
|
usage()
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
device = "obp60"
|
||||||
|
no_of_pages = 10
|
||||||
|
for opt, arg in options:
|
||||||
|
if opt in ('-d', '--device'):
|
||||||
|
device = arg
|
||||||
|
elif opt in ('-p', '--pages'):
|
||||||
|
no_of_pages = int(arg)
|
||||||
|
elif opt == '-h':
|
||||||
|
usage()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
# automatic detect pages and number of fields from sourcecode
|
||||||
|
pagedata = detect_pages("obp60task.cpp")
|
||||||
|
|
||||||
|
json_output = create_json(device, no_of_pages, pagedata)
|
||||||
# print omitting first line containing [ of JSON array
|
# print omitting first line containing [ of JSON array
|
||||||
print(json_output[1:])
|
print(json_output[1:])
|
||||||
# print(",")
|
|
||||||
|
|
|
@ -891,6 +891,7 @@ void OBP60Task(GwApi *api){
|
||||||
else{
|
else{
|
||||||
getdisplay().fillScreen(commonData.fgcolor); // Clear display
|
getdisplay().fillScreen(commonData.fgcolor); // Clear display
|
||||||
#ifdef DISPLAY_GDEY042T81
|
#ifdef DISPLAY_GDEY042T81
|
||||||
|
getdisplay().hibernate(); // Set display in hybenate mode
|
||||||
getdisplay().init(115200, true, 2, false); // Init for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
getdisplay().init(115200, true, 2, false); // Init for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
#else
|
#else
|
||||||
getdisplay().init(115200); // Init for normal displays
|
getdisplay().init(115200); // Init for normal displays
|
||||||
|
@ -918,6 +919,7 @@ void OBP60Task(GwApi *api){
|
||||||
else{
|
else{
|
||||||
getdisplay().fillScreen(commonData.fgcolor); // Clear display
|
getdisplay().fillScreen(commonData.fgcolor); // Clear display
|
||||||
#ifdef DISPLAY_GDEY042T81
|
#ifdef DISPLAY_GDEY042T81
|
||||||
|
getdisplay().hibernate(); // Set display in hybenate mode
|
||||||
getdisplay().init(115200, true, 2, false); // Init for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
getdisplay().init(115200, true, 2, false); // Init for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
#else
|
#else
|
||||||
getdisplay().init(115200); // Init for normal displays
|
getdisplay().init(115200); // Init for normal displays
|
||||||
|
@ -942,6 +944,7 @@ void OBP60Task(GwApi *api){
|
||||||
else{
|
else{
|
||||||
getdisplay().fillScreen(commonData.fgcolor); // Clear display
|
getdisplay().fillScreen(commonData.fgcolor); // Clear display
|
||||||
#ifdef DISPLAY_GDEY042T81
|
#ifdef DISPLAY_GDEY042T81
|
||||||
|
getdisplay().hibernate(); // Set display in hybenate mode
|
||||||
getdisplay().init(115200, true, 2, false); // Init for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
getdisplay().init(115200, true, 2, false); // Init for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
#else
|
#else
|
||||||
getdisplay().init(115200); // Init for normal displays
|
getdisplay().init(115200); // Init for normal displays
|
||||||
|
|
Loading…
Reference in New Issue