diff --git a/NmraDcc.cpp b/NmraDcc.cpp index 2122495..05013de 100644 --- a/NmraDcc.cpp +++ b/NmraDcc.cpp @@ -29,13 +29,13 @@ // //------------------------------------------------------------------------ -#include "NmraDcc.h" - -#if defined(ESP8266) - #include -#else +#include "NmraDcc.h" + +#if defined(ESP8266) + #include +#else #include -#endif +#endif //------------------------------------------------------------------------ // DCC Receive Routine @@ -454,32 +454,32 @@ void ackCV(void) notifyCVAck() ; } -uint8_t readEEPROM( unsigned int CV ) { - #if defined(ESP8266) - return EEPROM.read(CV) ; - #else - return eeprom_read_byte( (uint8_t*) CV ); - #endif -} - -void writeEEPROM( unsigned int CV, uint8_t Value ) { - #if defined(ESP8266) - EEPROM.write(CV, Value) ; - EEPROM.commit(); - #else - eeprom_write_byte( (uint8_t*) CV, Value ) ; - #endif -} - -bool readyEEPROM() { - #if defined(ESP8266) - return true; - #else - return eeprom_is_ready(); - #endif -} - - +uint8_t readEEPROM( unsigned int CV ) { + #if defined(ESP8266) + return EEPROM.read(CV) ; + #else + return eeprom_read_byte( (uint8_t*) CV ); + #endif +} + +void writeEEPROM( unsigned int CV, uint8_t Value ) { + #if defined(ESP8266) + EEPROM.write(CV, Value) ; + EEPROM.commit(); + #else + eeprom_write_byte( (uint8_t*) CV, Value ) ; + #endif +} + +bool readyEEPROM() { + #if defined(ESP8266) + return true; + #else + return eeprom_is_ready(); + #endif +} + + uint8_t validCV( uint16_t CV, uint8_t Writable ) { if( notifyCVResetFactoryDefault && (CV == CV_MANUFACTURER_ID ) && Writable ) @@ -490,7 +490,7 @@ uint8_t validCV( uint16_t CV, uint8_t Writable ) uint8_t Valid = 1 ; - if( CV > MAXCV ) + if( CV > MAXCV ) Valid = 0 ; if( Writable && ( ( CV ==CV_VERSION_ID ) || (CV == CV_MANUFACTURER_ID ) ) ) @@ -506,7 +506,7 @@ uint8_t readCV( unsigned int CV ) if( notifyCVRead ) return notifyCVRead( CV ) ; - Value = readEEPROM(CV); + Value = readEEPROM(CV); return Value ; } @@ -515,16 +515,16 @@ uint8_t writeCV( unsigned int CV, uint8_t Value) if( notifyCVWrite ) return notifyCVWrite( CV, Value ) ; - if( readEEPROM( CV ) != Value ) + if( readEEPROM( CV ) != Value ) { - writeEEPROM( CV, Value ) ; + writeEEPROM( CV, Value ) ; if( notifyCVChange ) notifyCVChange( CV, Value) ; } - return readEEPROM( CV ) ; + return readEEPROM( CV ) ; } - + uint16_t getMyAddr(void) { uint16_t Addr ; @@ -1010,9 +1010,9 @@ void NmraDcc::initAccessoryDecoder( uint8_t ManufacturerId, uint8_t VersionId, u void NmraDcc::init( uint8_t ManufacturerId, uint8_t VersionId, uint8_t Flags, uint8_t OpsModeAddressBaseCV ) { - #if defined(ESP8266) - EEPROM.begin(4096); - #endif + #if defined(ESP8266) + EEPROM.begin(MAXCV); + #endif // Clear all the static member variables memset( &DccRx, 0, sizeof( DccRx) ); @@ -1058,7 +1058,7 @@ uint8_t NmraDcc::isSetCVReady(void) { if(notifyIsSetCVReady) return notifyIsSetCVReady(); - return readyEEPROM(); + return readyEEPROM(); } #ifdef DCC_DEBUG diff --git a/NmraDcc.h b/NmraDcc.h index 9799ebd..fd2c54f 100644 --- a/NmraDcc.h +++ b/NmraDcc.h @@ -89,12 +89,12 @@ typedef struct #define CV_VERSION_ID 7 #define CV_MANUFACTURER_ID 8 #define CV_29_CONFIG 29 - -#if defined(ESP8266) - #define MAXCV 4096 -#else + +#if defined(ESP8266) + #define MAXCV SPI_FLASH_SEC_SIZE +#else #define MAXCV E2END // the upper limit of the CV value currently defined to max memory. -#endif +#endif typedef enum { CV29_LOCO_DIR = 0b00000001, /** bit 0: Locomotive Direction: "0" = normal, "1" = reversed */