Compare commits
No commits in common. "a21ce00260ed7bce87f97cbf878d86f8865fbfbf" and "a8f3fbb34d19d1f21ddc74f8d89217c8156d37ef" have entirely different histories.
a21ce00260
...
a8f3fbb34d
|
@ -1,12 +1,10 @@
|
||||||
// Add a new register card in web configuration interface
|
|
||||||
// This is a Java Script!
|
|
||||||
(function(){
|
(function(){
|
||||||
const api=window.esp32nmea2k;
|
const api=window.esp32nmea2k;
|
||||||
if (! api) return;
|
if (! api) return;
|
||||||
const tabName="Screen";
|
const tabName="OBP60";
|
||||||
api.registerListener((id, data) => {
|
api.registerListener((id, data) => {
|
||||||
// if (!data.testboard) return; //do nothing if we are not active
|
// if (!data.testboard) return; //do nothing if we are not active
|
||||||
let page = api.addTabPage(tabName, "Screen");
|
let page = api.addTabPage(tabName, "OBP60");
|
||||||
api.addEl('button', '', page, 'Screenshot').addEventListener('click', function (ev) {
|
api.addEl('button', '', page, 'Screenshot').addEventListener('click', function (ev) {
|
||||||
window.open('/api/user/OBP60Task/screenshot', 'screenshot');
|
window.open('/api/user/OBP60Task/screenshot', 'screenshot');
|
||||||
})
|
})
|
||||||
|
|
|
@ -21,6 +21,9 @@
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// True type character sets includes
|
||||||
|
// See OBP60ExtensionPort.cpp
|
||||||
|
|
||||||
// Pictures
|
// Pictures
|
||||||
//#include GxEPD_BitmapExamples // Example picture
|
//#include GxEPD_BitmapExamples // Example picture
|
||||||
#include "MFD_OBP60_400x300_sw.h" // MFD with logo
|
#include "MFD_OBP60_400x300_sw.h" // MFD with logo
|
||||||
|
@ -186,6 +189,7 @@ class BoatValueList{
|
||||||
//this way each page can easily be added here
|
//this way each page can easily be added here
|
||||||
//needs some minor tricks for the safe static initialization
|
//needs some minor tricks for the safe static initialization
|
||||||
typedef std::vector<PageDescription*> Pages;
|
typedef std::vector<PageDescription*> Pages;
|
||||||
|
//the page list class
|
||||||
class PageList{
|
class PageList{
|
||||||
public:
|
public:
|
||||||
Pages pages;
|
Pages pages;
|
||||||
|
@ -269,7 +273,20 @@ void registerAllPages(PageList &list){
|
||||||
}
|
}
|
||||||
|
|
||||||
// Undervoltage detection for shutdown display
|
// Undervoltage detection for shutdown display
|
||||||
void underVoltageError(CommonData &common) {
|
void underVoltageDetection(GwApi *api, CommonData &common){
|
||||||
|
// Read settings
|
||||||
|
double voffset = (api->getConfig()->getConfigItem(api->getConfig()->vOffset,true)->asString()).toFloat();
|
||||||
|
double vslope = (api->getConfig()->getConfigItem(api->getConfig()->vSlope,true)->asString()).toFloat();
|
||||||
|
// Read supply voltage
|
||||||
|
#if defined VOLTAGE_SENSOR && defined LIPO_ACCU_1200
|
||||||
|
float actVoltage = (float(analogRead(OBP_ANALOG0)) * 3.3 / 4096 + 0.53) * 2; // Vin = 1/2 for OBP40
|
||||||
|
float minVoltage = 3.65; // Absolut minimum volatge for 3,7V LiPo accu
|
||||||
|
#else
|
||||||
|
float actVoltage = (float(analogRead(OBP_ANALOG0)) * 3.3 / 4096 + 0.17) * 20; // Vin = 1/20 for OBP60
|
||||||
|
float minVoltage = MIN_VOLTAGE;
|
||||||
|
#endif
|
||||||
|
double calVoltage = actVoltage * vslope + voffset; // Calibration
|
||||||
|
if(calVoltage < minVoltage){
|
||||||
#if defined VOLTAGE_SENSOR && defined LIPO_ACCU_1200
|
#if defined VOLTAGE_SENSOR && defined LIPO_ACCU_1200
|
||||||
// Switch off all power lines
|
// Switch off all power lines
|
||||||
setPortPin(OBP_BACKLIGHT_LED, false); // Backlight Off
|
setPortPin(OBP_BACKLIGHT_LED, false); // Backlight Off
|
||||||
|
@ -311,22 +328,9 @@ void underVoltageError(CommonData &common) {
|
||||||
#endif
|
#endif
|
||||||
// Stop system
|
// Stop system
|
||||||
while(true){
|
while(true){
|
||||||
esp_deep_sleep_start(); // Deep Sleep without wakeup. Wakeup only after power cycle (restart).
|
esp_deep_sleep_start(); // Deep Sleep without weakup. Weakup only after power cycle (restart).
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool underVoltageDetection(float voffset, float vslope) {
|
|
||||||
// Read supply voltage
|
|
||||||
#if defined VOLTAGE_SENSOR && defined LIPO_ACCU_1200
|
|
||||||
float actVoltage = (float(analogRead(OBP_ANALOG0)) * 3.3 / 4096 + 0.53) * 2; // Vin = 1/2 for OBP40
|
|
||||||
float minVoltage = 3.65; // Absolut minimum volatge for 3,7V LiPo accu
|
|
||||||
#else
|
|
||||||
float actVoltage = (float(analogRead(OBP_ANALOG0)) * 3.3 / 4096 + 0.17) * 20; // Vin = 1/20 for OBP60
|
|
||||||
float minVoltage = MIN_VOLTAGE;
|
|
||||||
#endif
|
|
||||||
// TODO Why double here?
|
|
||||||
float calVoltage = actVoltage * vslope + voffset; // Calibration
|
|
||||||
return (calVoltage < minVoltage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate true wind data and add to obp60task boat data list
|
// Calculate true wind data and add to obp60task boat data list
|
||||||
|
@ -734,9 +738,7 @@ void OBP60Task(GwApi *api){
|
||||||
commonData.backlight.brightness = 2.55 * uint(config->getConfigItem(config->blBrightness,true)->asInt());
|
commonData.backlight.brightness = 2.55 * uint(config->getConfigItem(config->blBrightness,true)->asInt());
|
||||||
commonData.powermode = api->getConfig()->getConfigItem(api->getConfig()->powerMode,true)->asString();
|
commonData.powermode = api->getConfig()->getConfigItem(api->getConfig()->powerMode,true)->asString();
|
||||||
|
|
||||||
bool uvoltage = config->getConfigItem(config->underVoltage, true)->asBoolean();
|
bool uvoltage = api->getConfig()->getConfigItem(api->getConfig()->underVoltage,true)->asBoolean();
|
||||||
float voffset = (config->getConfigItem(config->vOffset,true)->asString()).toFloat();
|
|
||||||
float vslope = (config->getConfigItem(config->vSlope,true)->asString()).toFloat();
|
|
||||||
String cpuspeed = api->getConfig()->getConfigItem(api->getConfig()->cpuSpeed,true)->asString();
|
String cpuspeed = api->getConfig()->getConfigItem(api->getConfig()->cpuSpeed,true)->asString();
|
||||||
uint hdopAccuracy = uint(api->getConfig()->getConfigItem(api->getConfig()->hdopAccuracy,true)->asInt());
|
uint hdopAccuracy = uint(api->getConfig()->getConfigItem(api->getConfig()->hdopAccuracy,true)->asInt());
|
||||||
|
|
||||||
|
@ -786,9 +788,7 @@ void OBP60Task(GwApi *api){
|
||||||
|
|
||||||
// Undervoltage detection
|
// Undervoltage detection
|
||||||
if(uvoltage == true){
|
if(uvoltage == true){
|
||||||
if (underVoltageDetection(voffset, vslope)) {
|
underVoltageDetection(api, commonData);
|
||||||
underVoltageError(commonData);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set CPU speed after boot after 1min
|
// Set CPU speed after boot after 1min
|
||||||
|
|
|
@ -41,10 +41,5 @@
|
||||||
#ifdef BOARD_OBP40S3
|
#ifdef BOARD_OBP40S3
|
||||||
DECLARE_CAPABILITY(obp40,true)
|
DECLARE_CAPABILITY(obp40,true)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BOARD_OBP60S3
|
DECLARE_STRING_CAPABILITY(HELP_URL, "https://obp60-v2-docu.readthedocs.io/de/latest/"); // Link to help pages
|
||||||
DECLARE_STRING_CAPABILITY(HELP_URL, "https://obp60-v2-docu.readthedocs.io/en/latest/"); // Link to help pages
|
|
||||||
#endif
|
|
||||||
#ifdef BOARD_OBP40S3
|
|
||||||
DECLARE_STRING_CAPABILITY(HELP_URL, "https://obp40-v1-docu.readthedocs.io/en/latest/"); // Link to help pages
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue