@ -10,74 +10,125 @@ Copyright (C) 2016-2017 by Xose Pérez <xose dot perez at gmail dot com>
# include "NoFUSSClient.h"
unsigned long _nofussLastCheck = 0 ;
unsigned long _nofussInterval = 0 ;
bool _nofussEnabled = false ;
// -----------------------------------------------------------------------------
// NOFUSS
// -----------------------------------------------------------------------------
void nofussSetup ( ) {
NoFUSSClient . setServer ( getSetting ( " nofussServer " , NOFUSS_SERVER ) ) ;
NoFUSSClient . setDevice ( DEVICE ) ;
NoFUSSClient . setVersion ( APP_VERSION ) ;
void nofussRun ( ) {
NoFUSSClient . handle ( ) ;
_nofussLastCheck = millis ( ) ;
}
NoFUSSClient . onMessage ( [ ] ( nofuss_t code ) {
void nofussConfigure ( ) {
if ( code = = NOFUSS_START ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Start \n " ) ) ;
String nofussServer = getSetting ( " nofussServer " , NOFUSS_SERVER ) ;
if ( nofussServer . length ( ) = = 0 ) {
setSetting ( " nofussEnabled " , 0 ) ;
_nofussEnabled = false ;
} else {
_nofussEnabled = getSetting ( " nofussEnabled " , NOFUSS_ENABLED ) . toInt ( ) = = 1 ;
}
_nofussInterval = getSetting ( " nofussInterval " , NOFUSS_INTERVAL ) . toInt ( ) ;
_nofussLastCheck = 0 ;
if ( code = = NOFUSS_UPTODATE ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Already in the last version \n " ) ) ;
}
if ( ! _nofussEnabled ) {
if ( code = = NOFUSS_PARSE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Error parsing server response \n " ) ) ;
}
DEBUG_MSG_P ( PSTR ( " [NOFUSS] Disabled \n " ) ) ;
if ( code = = NOFUSS_UPDATING ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Updating " ) ) ;
DEBUG_MSG_P ( PSTR ( " New version: %s \n " ) , ( char * ) NoFUSSClient . getNewVersion ( ) . c_str ( ) ) ;
DEBUG_MSG_P ( PSTR ( " Firmware: %s \n " ) , ( char * ) NoFUSSClient . getNewFirmware ( ) . c_str ( ) ) ;
DEBUG_MSG_P ( PSTR ( " File System: %s " ) , ( char * ) NoFUSSClient . getNewFileSystem ( ) . c_str ( ) ) ;
}
} else {
if ( code = = NOFUSS_FILESYSTEM_UPDATE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] File System Update Error: %s \n " ) , ( char * ) NoFUSSClient . getErrorString ( ) . c_str ( ) ) ;
}
char buffer [ 20 ] ;
snprintf_P ( buffer , sizeof ( buffer ) , PSTR ( " %s-%s " ) , APP_NAME , DEVICE ) ;
if ( code = = NOFUSS_FILESYSTEM_UPDATED ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] File System Updated \n " ) ) ;
}
NoFUSSClient . setServer ( nofussServer ) ;
NoFUSSClient . setDevice ( buffer ) ;
NoFUSSClient . setVersion ( APP_VERSION ) ;
if ( code = = NOFUSS_FIRMWARE_UPDATE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Firmware Update Error: %s \n " ) , ( char * ) NoFUSSClient . getErrorString ( ) . c_str ( ) ) ;
}
DEBUG_MSG_P ( PSTR ( " [NOFUSS] Server : %s \n " ) , nofussServer . c_str ( ) ) ;
DEBUG_MSG_P ( PSTR ( " [NOFUSS] Dervice: %s \n " ) , buffer ) ;
DEBUG_MSG_P ( PSTR ( " [NOFUSS] Version: %s \n " ) , APP_VERSION ) ;
DEBUG_MSG_P ( PSTR ( " [NOFUSS] Enabled \n " ) ) ;
if ( code = = NOFUSS_FIRMWARE_UPDATED ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Firmware Updated \n " ) ) ;
}
if ( code = = NOFUSS_RESET ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Resetting board \n " ) ) ;
}
}
if ( code = = NOFUSS_END ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] End \n " ) ) ;
}
void nofussSetup ( ) {
} ) ;
nofussConfigure ( ) ;
NoFUSSClient . onMessage ( [ ] ( nofuss_t code ) {
if ( code = = NOFUSS_START ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Start \n " ) ) ;
}
if ( code = = NOFUSS_UPTODATE ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Already in the last version \n " ) ) ;
}
if ( code = = NOFUSS_NO_RESPONSE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Wrong server response: %d %s \n " ) , NoFUSSClient . getErrorNumber ( ) , ( char * ) NoFUSSClient . getErrorString ( ) . c_str ( ) ) ;
}
if ( code = = NOFUSS_PARSE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Error parsing server response \n " ) ) ;
}
if ( code = = NOFUSS_UPDATING ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Updating \n " ) ) ;
DEBUG_MSG_P ( PSTR ( " New version: %s \n " ) , ( char * ) NoFUSSClient . getNewVersion ( ) . c_str ( ) ) ;
DEBUG_MSG_P ( PSTR ( " Firmware: %s \n " ) , ( char * ) NoFUSSClient . getNewFirmware ( ) . c_str ( ) ) ;
DEBUG_MSG_P ( PSTR ( " File System: %s \n " ) , ( char * ) NoFUSSClient . getNewFileSystem ( ) . c_str ( ) ) ;
# if WEB_SUPPORT
wsSend_P ( PSTR ( " { \" message \" : \" Remote update started \" } " ) ) ;
# endif
}
if ( code = = NOFUSS_FILESYSTEM_UPDATE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] File System Update Error: %s \n " ) , ( char * ) NoFUSSClient . getErrorString ( ) . c_str ( ) ) ;
}
if ( code = = NOFUSS_FILESYSTEM_UPDATED ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] File System Updated \n " ) ) ;
}
if ( code = = NOFUSS_FIRMWARE_UPDATE_ERROR ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Firmware Update Error: %s \n " ) , ( char * ) NoFUSSClient . getErrorString ( ) . c_str ( ) ) ;
}
if ( code = = NOFUSS_FIRMWARE_UPDATED ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Firmware Updated \n " ) ) ;
}
if ( code = = NOFUSS_RESET ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] Resetting board \n " ) ) ;
# if WEB_SUPPORT
wsSend_P ( PSTR ( " { \" action \" : \" reload \" } " ) ) ;
# endif
delay ( 100 ) ;
}
if ( code = = NOFUSS_END ) {
DEBUG_MSG_P ( PSTR ( " [NoFUSS] End \n " ) ) ;
}
} ) ;
}
void nofussLoop ( ) {
static unsigned long last_check = 0 ;
if ( ! wifiConnected ( ) ) return ;
unsigned long interval = getSetting ( " nofussInterval " , NOFUSS_INTERVAL ) . toInt ( ) ;
if ( ( last_check > 0 ) & & ( ( millis ( ) - last_check ) < interval ) ) return ;
last_check = millis ( ) ;
NoFUSSClient . handle ( ) ;
if ( ! _nofussEnabled ) return ;
if ( ! wifiConnected ( ) ) return ;
if ( ( _nofussLastCheck > 0 ) & & ( ( millis ( ) - _nofussLastCheck ) < _nofussInterval ) ) return ;
nofussRun ( ) ;
}
# endif
# endif // NOFUSS_SUPPORT