mirror of
https://github.com/thooge/esp32-nmea2000-obp60.git
synced 2025-12-29 13:33:06 +01:00
Add HDM as fallback for HDT
This commit is contained in:
@@ -104,10 +104,14 @@ public:
|
|||||||
static double value5old = 0;
|
static double value5old = 0;
|
||||||
static String svalue5old = "";
|
static String svalue5old = "";
|
||||||
static String unit5old = "";
|
static String unit5old = "";
|
||||||
|
static double value6old = 0;
|
||||||
|
static String svalue6old = "";
|
||||||
|
static String unit6old = "";
|
||||||
|
|
||||||
static double latitude = 0;
|
static double latitude = 0;
|
||||||
static double longitude = 0;
|
static double longitude = 0;
|
||||||
static double trueHeading = 0;
|
static double trueHeading = 0;
|
||||||
|
static double magneticHeading = 0;
|
||||||
static double speedOverGround = 0;
|
static double speedOverGround = 0;
|
||||||
static double depthBelowTransducer = 0;
|
static double depthBelowTransducer = 0;
|
||||||
|
|
||||||
@@ -138,7 +142,7 @@ public:
|
|||||||
String svalue3 = formatValue(bvalue3, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
String svalue3 = formatValue(bvalue3, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
||||||
String unit3 = formatValue(bvalue3, *commonData).unit; // Unit of value
|
String unit3 = formatValue(bvalue3, *commonData).unit; // Unit of value
|
||||||
|
|
||||||
// Get boat values #4 SOG
|
// Get boat values #4 HDM
|
||||||
GwApi::BoatValue *bvalue4 = pageData.values[3]; // Second element in list (only one value by PageOneValue)
|
GwApi::BoatValue *bvalue4 = pageData.values[3]; // Second element in list (only one value by PageOneValue)
|
||||||
String name4 = xdrDelete(bvalue4->getName()); // Value name
|
String name4 = xdrDelete(bvalue4->getName()); // Value name
|
||||||
name4 = name4.substring(0, 6); // String length limit for value name
|
name4 = name4.substring(0, 6); // String length limit for value name
|
||||||
@@ -147,7 +151,7 @@ public:
|
|||||||
String svalue4 = formatValue(bvalue4, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
String svalue4 = formatValue(bvalue4, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
||||||
String unit4 = formatValue(bvalue4, *commonData).unit; // Unit of value
|
String unit4 = formatValue(bvalue4, *commonData).unit; // Unit of value
|
||||||
|
|
||||||
// Get boat values #5 DBT
|
// Get boat values #5 SOG
|
||||||
GwApi::BoatValue *bvalue5 = pageData.values[4]; // Second element in list (only one value by PageOneValue)
|
GwApi::BoatValue *bvalue5 = pageData.values[4]; // Second element in list (only one value by PageOneValue)
|
||||||
String name5 = xdrDelete(bvalue5->getName()); // Value name
|
String name5 = xdrDelete(bvalue5->getName()); // Value name
|
||||||
name5 = name5.substring(0, 6); // String length limit for value name
|
name5 = name5.substring(0, 6); // String length limit for value name
|
||||||
@@ -156,6 +160,15 @@ public:
|
|||||||
String svalue5 = formatValue(bvalue5, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
String svalue5 = formatValue(bvalue5, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
||||||
String unit5 = formatValue(bvalue5, *commonData).unit; // Unit of value
|
String unit5 = formatValue(bvalue5, *commonData).unit; // Unit of value
|
||||||
|
|
||||||
|
// Get boat values #6 DBT
|
||||||
|
GwApi::BoatValue *bvalue6 = pageData.values[5]; // Second element in list (only one value by PageOneValue)
|
||||||
|
String name6 = xdrDelete(bvalue6->getName()); // Value name
|
||||||
|
name6 = name6.substring(0, 6); // String length limit for value name
|
||||||
|
double value6 = bvalue6->value; // Value as double in SI unit
|
||||||
|
bool valid6 = bvalue6->valid; // Valid information
|
||||||
|
String svalue6 = formatValue(bvalue6, *commonData).svalue; // Formatted value as string including unit conversion and switching decimal places
|
||||||
|
String unit6 = formatValue(bvalue6, *commonData).unit; // Unit of value
|
||||||
|
|
||||||
// Optical warning by limit violation (unused)
|
// Optical warning by limit violation (unused)
|
||||||
if(String(flashLED) == "Limit Violation"){
|
if(String(flashLED) == "Limit Violation"){
|
||||||
setBlinkingLED(false);
|
setBlinkingLED(false);
|
||||||
@@ -164,7 +177,7 @@ public:
|
|||||||
|
|
||||||
// Logging boat values
|
// Logging boat values
|
||||||
if (bvalue1 == NULL) return PAGE_OK; // WTF why this statement?
|
if (bvalue1 == NULL) return PAGE_OK; // WTF why this statement?
|
||||||
LOG_DEBUG(GwLog::LOG,"Drawing at PageNavigation, %s: %f, %s: %f, %s: %f, %s: %f", name1.c_str(), value1, name2.c_str(), value2, name3.c_str(), value3, name4.c_str(), value4);
|
LOG_DEBUG(GwLog::LOG,"Drawing at PageNavigation, %s: %f, %s: %f, %s: %f, %s: %f, %s: %f, %s: %f", name1.c_str(), value1, name2.c_str(), value2, name3.c_str(), value3, name4.c_str(), value4, name5.c_str(), value5, name6.c_str(), value6);
|
||||||
|
|
||||||
// Set variables
|
// Set variables
|
||||||
//***********************************************************
|
//***********************************************************
|
||||||
@@ -185,7 +198,7 @@ public:
|
|||||||
else{
|
else{
|
||||||
longitude = value2old;
|
longitude = value2old;
|
||||||
}
|
}
|
||||||
// HDT value (Course Over Ground)
|
// HDT value (True Heading, GPS)
|
||||||
if(valid3){
|
if(valid3){
|
||||||
trueHeading = (value3 * 360) / (2 * PI);
|
trueHeading = (value3 * 360) / (2 * PI);
|
||||||
value3old = trueHeading;
|
value3old = trueHeading;
|
||||||
@@ -193,21 +206,29 @@ public:
|
|||||||
else{
|
else{
|
||||||
trueHeading = value3old;
|
trueHeading = value3old;
|
||||||
}
|
}
|
||||||
// SOG value (Speed Over Ground)
|
// HDM value (Magnetic Heading)
|
||||||
if(valid4){
|
if(valid4){
|
||||||
speedOverGround = value4;
|
magneticHeading = value4;
|
||||||
value4old = value4;
|
value4old = value4;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
speedOverGround = value4old;
|
speedOverGround = value4old;
|
||||||
}
|
}
|
||||||
// DBT value (Depth Below Transducer)
|
// SOG value (Speed Over Ground)
|
||||||
if(valid5){
|
if(valid5){
|
||||||
depthBelowTransducer = value5;
|
speedOverGround = value5;
|
||||||
value5old = value5;
|
value5old = value5;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
depthBelowTransducer = value5old;
|
speedOverGround = value5old;
|
||||||
|
}
|
||||||
|
// DBT value (Depth Below Transducer)
|
||||||
|
if(valid6){
|
||||||
|
depthBelowTransducer = value6;
|
||||||
|
value6old = value6;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
depthBelowTransducer = value6old;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare config values for URL
|
// Prepare config values for URL
|
||||||
@@ -264,16 +285,35 @@ public:
|
|||||||
// Map orientation
|
// Map orientation
|
||||||
if(orientation == "North Direction"){
|
if(orientation == "North Direction"){
|
||||||
mapRot = 0;
|
mapRot = 0;
|
||||||
|
// If true heading available then use HDT oterwise HDM
|
||||||
|
if(valid3 == true){
|
||||||
symbolRot = trueHeading;
|
symbolRot = trueHeading;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
symbolRot = magneticHeading;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(orientation == "Travel Direction"){
|
else if(orientation == "Travel Direction"){
|
||||||
|
// If true heading available then use HDT oterwise HDM
|
||||||
|
if(valid3 == true){
|
||||||
mapRot = trueHeading;
|
mapRot = trueHeading;
|
||||||
symbolRot = trueHeading;
|
symbolRot = trueHeading;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
mapRot = magneticHeading;
|
||||||
|
symbolRot = magneticHeading;
|
||||||
|
}
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
mapRot = 0;
|
mapRot = 0;
|
||||||
|
// If true heading available then use HDT oterwise HDM
|
||||||
|
if(valid3 == true){
|
||||||
symbolRot = trueHeading;
|
symbolRot = trueHeading;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
symbolRot = magneticHeading;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load navigation map
|
// Load navigation map
|
||||||
//***********************************************************
|
//***********************************************************
|
||||||
@@ -357,26 +397,35 @@ public:
|
|||||||
getdisplay().fillRect(357, 27 , 41, 21, commonData->bgcolor); // White rect
|
getdisplay().fillRect(357, 27 , 41, 21, commonData->bgcolor); // White rect
|
||||||
getdisplay().setCursor(364, 45);
|
getdisplay().setCursor(364, 45);
|
||||||
getdisplay().print(zoom);
|
getdisplay().print(zoom);
|
||||||
|
// If true heading available then use HDT oterwise HDM
|
||||||
if(showValues == true){
|
if(showValues == true){
|
||||||
// Frame
|
// Frame
|
||||||
getdisplay().fillRect(0, 25 , 130, 65, commonData->fgcolor); // Black rect
|
getdisplay().fillRect(0, 25 , 130, 65, commonData->fgcolor); // Black rect
|
||||||
getdisplay().fillRect(2, 27 , 126, 61, commonData->bgcolor); // White rect
|
getdisplay().fillRect(2, 27 , 126, 61, commonData->bgcolor); // White rect
|
||||||
|
if(valid3 == true){
|
||||||
// HDT
|
// HDT
|
||||||
getdisplay().setCursor(10, 45);
|
getdisplay().setCursor(10, 45);
|
||||||
getdisplay().print(name3);
|
getdisplay().print(name3);
|
||||||
getdisplay().setCursor(70, 45);
|
getdisplay().setCursor(70, 45);
|
||||||
getdisplay().print(svalue3);
|
getdisplay().print(svalue3);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// HDM
|
||||||
|
getdisplay().setCursor(10, 45);
|
||||||
|
getdisplay().print(name4);
|
||||||
|
getdisplay().setCursor(70, 45);
|
||||||
|
getdisplay().print(svalue4);
|
||||||
|
}
|
||||||
// SOG
|
// SOG
|
||||||
getdisplay().setCursor(10, 65);
|
getdisplay().setCursor(10, 65);
|
||||||
getdisplay().print(name4);
|
getdisplay().print(name5);
|
||||||
getdisplay().setCursor(70, 65);
|
getdisplay().setCursor(70, 65);
|
||||||
getdisplay().print(svalue4);
|
getdisplay().print(svalue5);
|
||||||
// DBT
|
// DBT
|
||||||
getdisplay().setCursor(10, 85);
|
getdisplay().setCursor(10, 85);
|
||||||
getdisplay().print(name5);
|
getdisplay().print(name6);
|
||||||
getdisplay().setCursor(70, 85);
|
getdisplay().setCursor(70, 85);
|
||||||
getdisplay().print(svalue5);
|
getdisplay().print(svalue6);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set botton labels
|
// Set botton labels
|
||||||
@@ -401,7 +450,7 @@ PageDescription registerPageNavigation(
|
|||||||
"Navigation", // Page name
|
"Navigation", // Page name
|
||||||
createPage, // Action
|
createPage, // Action
|
||||||
0, // Number of bus values depends on selection in Web configuration
|
0, // Number of bus values depends on selection in Web configuration
|
||||||
{"LAT","LON","HDT","SOG","DBT"}, // Bus values we need in the page
|
{"LAT","LON","HDT","HDM","SOG","DBT"}, // Bus values we need in the page
|
||||||
true // Show display header on/off
|
true // Show display header on/off
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user