Added new FLAGS_AUTO_FACTORY_DEFAULT flag to enable checking CV 7 & 8 and if value of both is 255 then call notifyCVResetFactoryDefault() if defined
This commit is contained in:
13
NmraDcc.cpp
13
NmraDcc.cpp
@@ -1290,12 +1290,19 @@ void NmraDcc::init( uint8_t ManufacturerId, uint8_t VersionId, uint8_t Flags, ui
|
|||||||
// Set the Bits that control Multifunction or Accessory behaviour
|
// Set the Bits that control Multifunction or Accessory behaviour
|
||||||
// and if the Accessory decoder optionally handles Output Addressing
|
// and if the Accessory decoder optionally handles Output Addressing
|
||||||
uint8_t cv29Mask = CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE ; // peal off the top two bits
|
uint8_t cv29Mask = CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE ; // peal off the top two bits
|
||||||
writeCV( CV_29_CONFIG, ( readCV( CV_29_CONFIG ) & ~cv29Mask ) | (Flags & ~FLAGS_MY_ADDRESS_ONLY) ) ; // KGW: Don't write bit 0 to CV.
|
writeCV( CV_29_CONFIG, ( readCV( CV_29_CONFIG ) & ~cv29Mask ) | (Flags & cv29Mask) ) ;
|
||||||
|
|
||||||
writeCV( 7, VersionId ) ;
|
uint8_t doAutoFactoryDefault = 0;
|
||||||
writeCV( 8, ManufacturerId ) ;
|
if((Flags & FLAGS_AUTO_FACTORY_DEFAULT) && (readCV(CV_VERSION_ID) == 255) && (readCV(CV_MANUFACTURER_ID) == 255))
|
||||||
|
doAutoFactoryDefault = 1;
|
||||||
|
|
||||||
|
writeCV( CV_VERSION_ID, VersionId ) ;
|
||||||
|
writeCV( CV_MANUFACTURER_ID, ManufacturerId ) ;
|
||||||
|
|
||||||
clearDccProcState( 0 );
|
clearDccProcState( 0 );
|
||||||
|
|
||||||
|
if(notifyCVResetFactoryDefault && doAutoFactoryDefault)
|
||||||
|
notifyCVResetFactoryDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
@@ -201,6 +201,7 @@ class NmraDcc
|
|||||||
|
|
||||||
// Flag values to be logically ORed together and passed into the init() method
|
// Flag values to be logically ORed together and passed into the init() method
|
||||||
#define FLAGS_MY_ADDRESS_ONLY 0x01 // Only process DCC Packets with My Address
|
#define FLAGS_MY_ADDRESS_ONLY 0x01 // Only process DCC Packets with My Address
|
||||||
|
#define FLAGS_AUTO_FACTORY_DEFAULT 0x02 // Call notifyCVResetFactoryDefault() if CV 7 & 8 == 255
|
||||||
#define FLAGS_OUTPUT_ADDRESS_MODE 0x40 // CV 29/541 bit 6
|
#define FLAGS_OUTPUT_ADDRESS_MODE 0x40 // CV 29/541 bit 6
|
||||||
#define FLAGS_DCC_ACCESSORY_DECODER 0x80 // CV 29/541 bit 7
|
#define FLAGS_DCC_ACCESSORY_DECODER 0x80 // CV 29/541 bit 7
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user