Compare commits

..

No commits in common. "f96ccfd8a1f6770c63bbb31f2bd5d04b9dff72fc" and "511dcbbfd85f2561a0957aee7654f3309d8cc143" have entirely different histories.

5 changed files with 59 additions and 85 deletions

View File

@ -73,11 +73,11 @@ boolean ConnectivityManager::startAP()
return false; return false;
} }
else if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("CHANNEL") != NULL && (*cfgDictionary)("HIDE_SSID") != NULL && (*cfgDictionary)("AP_MAX_CONNECTION") != NULL && (*cfgDictionary)("ENABLED") != NULL) else if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("CHANNEL") != NULL && (*cfgDictionary)("SSID_HIDDEN") != NULL && (*cfgDictionary)("AP_MAX_CONNECTION") != NULL && (*cfgDictionary)("ENABLED") != NULL)
{ {
if((*cfgDictionary)("ENABLED")->booleanValue()) if((*cfgDictionary)("ENABLED")->booleanValue())
{ {
if(!softAP((*cfgDictionary)("SSID")->stringValue(), strcmp((*cfgDictionary)("PASSWORD")->stringValue(),"") == 0 ? NULL:(*cfgDictionary)("PASSWORD")->stringValue(), (*cfgDictionary)("CHANNEL")->intValue(), (*cfgDictionary)("HIDE_SSID")->booleanValue(), (*cfgDictionary)("AP_MAX_CONNECTION")->intValue())) if(!softAP((*cfgDictionary)("SSID")->stringValue(), strcmp((*cfgDictionary)("PASSWORD")->stringValue(),"") == 0 ? NULL:(*cfgDictionary)("PASSWORD")->stringValue(), (*cfgDictionary)("CHANNEL")->intValue(), (*cfgDictionary)("SSID_HIDDEN")->booleanValue(), (*cfgDictionary)("AP_MAX_CONNECTION")->intValue()))
{ {
_error |= AP_SETUP_ERR; _error |= AP_SETUP_ERR;
toBeReturned = false; toBeReturned = false;

View File

@ -1028,7 +1028,7 @@ class FTPServer : public TCPServer<T>
char *_login; char *_login;
char *_password; char *_password;
const char *_FTPDir = NULL; //Pointer to constant string and char * const is a constant pointer to string const char *_FTPDir = NULL; //Pointer to constant string and char * cont is a constant pointer to string
uint16_t _dataPort; uint16_t _dataPort;
WiFiServer _dataServer; //In passive mode, the FTP server opens two different ports (one for the commands and the other for the data stream) WiFiServer _dataServer; //In passive mode, the FTP server opens two different ports (one for the commands and the other for the data stream)

View File

@ -31,29 +31,32 @@ boolean ScreenManager::applyCfgFromSD()
setDefault(); setDefault();
return false; return false;
} }
if(cfgDictionary->get("ENABLED") != NULL)
setEnabled(cfgDictionary->get("ENABLED")->booleanValue());
if(cfgDictionary->get("DIMMED") != NULL) if( cfgDictionary->get("ENABLED") != NULL &&
_displayRef.dim(cfgDictionary->get("DIMMED")->booleanValue()); cfgDictionary->get("DIMMED") != NULL &&
cfgDictionary->get("INVERTED") != NULL &&
if(cfgDictionary->get("INVERTED") != NULL) cfgDictionary->get("ORIENTATION") != NULL &&
_displayRef.invertDisplay(cfgDictionary->get("INVERTED")->booleanValue()); cfgDictionary->get("AUTO_OFF") != NULL)
{
if(cfgDictionary->get("ORIENTATION") != NULL) setEnabled(cfgDictionary->get("ENABLED")->booleanValue());
_displayRef.setRotation(orientationTranslator(cfgDictionary->get("ORIENTATION")->intValue())); _displayRef.setRotation(orientationTranslator(cfgDictionary->get("ORIENTATION")->intValue()));
else _displayRef.invertDisplay(cfgDictionary->get("INVERTED")->booleanValue());
_displayRef.setRotation(OR_0); _displayRef.dim(cfgDictionary->get("DIMMED")->booleanValue());
_displayRef.setTextColor(WHITE);
if(cfgDictionary->get("AUTO_OFF") != NULL) setAutoOFFDelay(cfgDictionary->get("AUTO_OFF")->uintValue());
setAutoOFFDelay(cfgDictionary->get("AUTO_OFF")->uintValue());
delete cfgDictionary;
_displayRef.setTextColor(WHITE); return true;
delete cfgDictionary; }
return true; else //Default value applied
{
setDefault();
delete cfgDictionary;
return false;
}
} }
else //Default values applied else //Default value applied
{ {
setDefault(); setDefault();
return true; return true;
@ -208,18 +211,14 @@ ScreenManager::ViewLink* ScreenManager::getLinkByUID(ViewLinkedList viewLinkedLi
void ScreenManager::run() void ScreenManager::run()
{ {
if(!_enabled) return;
//We handle the auto off logic here //We handle the auto off logic here
if(_autoOFFDelay) if(_autoOFFDelay && _enabled)
{ {
if(millis() - _autoOFFDelayRef >= _autoOFFDelay) if(millis() - _autoOFFDelayRef > _autoOFFDelay)
{ setEnabled(false);
sleep();
return;
}
} }
if(millis() - _timeRef < _refreshInterval && !_forceRefresh) return; if((millis() - _timeRef < _refreshInterval && !_forceRefresh) || !_enabled) return;
_timeRef = millis(); _timeRef = millis();
@ -269,13 +268,8 @@ void ScreenManager::forceRefresh()
boolean ScreenManager::displayView(const uint8_t UID) boolean ScreenManager::displayView(const uint8_t UID)
{ {
_autoOFFDelayRef = millis();
if(!_enabled) return false; if(!_enabled) return false;
if(isSleeping())
wakeUp();
_autoOFFDelayRef = millis(); //Resets the auto off delay so the screen do not sleep on us.
_forceRefresh = true; _forceRefresh = true;
ViewLink *viewLink = getLinkByUID(_viewLinkedList, UID); ViewLink *viewLink = getLinkByUID(_viewLinkedList, UID);
@ -303,16 +297,8 @@ boolean ScreenManager::displayView(const uint8_t UID)
boolean ScreenManager::displayNextView() boolean ScreenManager::displayNextView()
{ {
_autoOFFDelayRef = millis();
if(!_enabled) return false; if(!_enabled) return false;
if(isSleeping())
{
wakeUp();
return true;
}
_autoOFFDelayRef = millis(); //Resets the auto off delay so the screen do not sleep on us.
_forceRefresh = true; _forceRefresh = true;
_error = OK; _error = OK;
if(isListEmpty(_viewLinkedList))return false; if(isListEmpty(_viewLinkedList))return false;
@ -347,16 +333,8 @@ boolean ScreenManager::displayNextView()
boolean ScreenManager::displayPreviousView() boolean ScreenManager::displayPreviousView()
{ {
_autoOFFDelayRef = millis();
if(!_enabled) return false; if(!_enabled) return false;
if(isSleeping())
{
wakeUp();
return true;
}
_autoOFFDelayRef = millis(); //Resets the auto off delay so the screen do not sleep on us.
_forceRefresh = true; _forceRefresh = true;
_error = OK; _error = OK;
if(isListEmpty(_tail))return false; if(isListEmpty(_tail))return false;
@ -403,17 +381,13 @@ void ScreenManager::dimDisplay(const boolean dimmed)
void ScreenManager::sleep() void ScreenManager::sleep()
{ {
if(!_enabled || _sleeping)return; _enabled = false;
_sleeping = true;
_displayRef.sleep(); _displayRef.sleep();
} }
void ScreenManager::wakeUp() void ScreenManager::wakeUp()
{ {
if(!_enabled || !_sleeping)return; _enabled = true;
_sleeping = false;
_autoOFFDelayRef = millis(); _autoOFFDelayRef = millis();
_displayRef.wakeUp(); _displayRef.wakeUp();
} }
@ -440,7 +414,6 @@ boolean ScreenManager::isDisplayDimmed() const
void ScreenManager::clearDisplay(const boolean bufferOnly) void ScreenManager::clearDisplay(const boolean bufferOnly)
{ {
if(!_enabled) return;
if(bufferOnly) if(bufferOnly)
_displayRef.clearDisplay(); _displayRef.clearDisplay();
else else
@ -466,11 +439,10 @@ void ScreenManager::clearViews()
void ScreenManager::setEnabled(boolean value) void ScreenManager::setEnabled(boolean value)
{ {
_enabled = value;
if(value) if(value)
_displayRef.wakeUp(); wakeUp();
else else
_displayRef.sleep(); sleep();
} }
void ScreenManager::setAutoOFFDelay(const uint64_t delay) void ScreenManager::setAutoOFFDelay(const uint64_t delay)
@ -478,16 +450,11 @@ void ScreenManager::setAutoOFFDelay(const uint64_t delay)
_autoOFFDelay = delay; _autoOFFDelay = delay;
} }
boolean ScreenManager::isEnabled() const boolean ScreenManager::getEnabled()
{ {
return _enabled; return _enabled;
} }
boolean ScreenManager::isSleeping() const
{
return _sleeping;
}
unsigned char ScreenManager::getViewCount() unsigned char ScreenManager::getViewCount()
{ {
unsigned char counter = 0; unsigned char counter = 0;

View File

@ -38,10 +38,8 @@ class ScreenManager
void sleep(); void sleep();
void wakeUp(); void wakeUp();
void setEnabled(boolean value); void setEnabled(boolean value);
// Default value is 0 : this disables auto off void setAutoOFFDelay(const uint64_t delay);
void setAutoOFFDelay(const uint64_t delay = 0); boolean getEnabled();
boolean isEnabled() const;
boolean isSleeping() const;
boolean init(); boolean init();
void run(); void run();
@ -74,7 +72,6 @@ class ScreenManager
boolean _displayColorInverted = false; boolean _displayColorInverted = false;
boolean _displayDimmed = false; boolean _displayDimmed = false;
boolean _enabled = true; boolean _enabled = true;
boolean _sleeping = false;
uint8_t _refreshRateHz = 1; uint8_t _refreshRateHz = 1;
uint16_t _refreshInterval = 1000; uint16_t _refreshInterval = 1000;
uint64_t _timeRef = 0, _autoOFFDelayRef = 0, _autoOFFDelay = 0; uint64_t _timeRef = 0, _autoOFFDelayRef = 0, _autoOFFDelay = 0;

View File

@ -132,16 +132,26 @@ void loop()
switch(evt) switch(evt)
{ {
case EventHandler::Event::FLASH_BUTTON_PRESS: case EventHandler::Event::FLASH_BUTTON_PRESS:
sab.getScreenManager().displayNextView(); if(sab.getScreenManager().getEnabled())
#ifdef DEBUG {
Serial.printf("Changing view\nSelected view is : %d\n",sab.getScreenManager().getCurrentViewUID()); sab.getScreenManager().displayNextView();
#endif #ifdef DEBUG
Serial.printf("Changing view\nSelected view is : %d\n",sab.getScreenManager().getCurrentViewUID());
#endif
}
else
sab.getScreenManager().wakeUp();
break; break;
case EventHandler::Event::FLASH_BUTTON_LONG_PRESS: case EventHandler::Event::FLASH_BUTTON_LONG_PRESS:
sab.getScreenManager().displayPreviousView(); if(sab.getScreenManager().getEnabled())
#ifdef DEBUG {
Serial.printf("Changing view\nSelected view is : %d\n",sab.getScreenManager().getCurrentViewUID()); sab.getScreenManager().displayPreviousView();
#endif #ifdef DEBUG
Serial.printf("Changing view\nSelected view is : %d\n",sab.getScreenManager().getCurrentViewUID());
#endif
}
else
sab.getScreenManager().wakeUp();
break; break;
default: //NO_EVENT default: //NO_EVENT
break; break;