mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-26 01:52:48 +00:00
always fix up channel list, even if we just did factory reset
This commit is contained in:
parent
d32386a027
commit
1fcec8ce3b
2
proto
2
proto
@ -1 +1 @@
|
|||||||
Subproject commit 8a39bac88206a8aa9305ac380d150946c1796ac5
|
Subproject commit 820fa497dfde07e129cad6955bf2f4b2b9cecebc
|
@ -33,7 +33,7 @@ int16_t Channels::generateHash(ChannelIndex channelNum)
|
|||||||
return -1; // invalid
|
return -1; // invalid
|
||||||
else {
|
else {
|
||||||
const char *name = getName(channelNum);
|
const char *name = getName(channelNum);
|
||||||
uint8_t h = xorHash((const uint8_t *) name, strlen(name));
|
uint8_t h = xorHash((const uint8_t *)name, strlen(name));
|
||||||
|
|
||||||
h ^= xorHash(k.bytes, k.length);
|
h ^= xorHash(k.bytes, k.length);
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ void Channels::onConfigChanged()
|
|||||||
|
|
||||||
Channel &Channels::getByIndex(ChannelIndex chIndex)
|
Channel &Channels::getByIndex(ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
assert(chIndex < channelFile.channels_count);
|
assert(chIndex < channelFile.channels_count); // This should be equal to MAX_NUM_CHANNELS
|
||||||
Channel *ch = channelFile.channels + chIndex;
|
Channel *ch = channelFile.channels + chIndex;
|
||||||
return *ch;
|
return *ch;
|
||||||
}
|
}
|
||||||
@ -278,11 +278,11 @@ const char *Channels::getPrimaryName()
|
|||||||
*/
|
*/
|
||||||
bool Channels::decryptForHash(ChannelIndex chIndex, ChannelHash channelHash)
|
bool Channels::decryptForHash(ChannelIndex chIndex, ChannelHash channelHash)
|
||||||
{
|
{
|
||||||
if(chIndex > getNumChannels() || getHash(chIndex) != channelHash) {
|
if (chIndex > getNumChannels() || getHash(chIndex) != channelHash) {
|
||||||
// DEBUG_MSG("Skipping channel %d (hash %x) due to invalid hash/index, want=%x\n", chIndex, getHash(chIndex), channelHash);
|
// DEBUG_MSG("Skipping channel %d (hash %x) due to invalid hash/index, want=%x\n", chIndex, getHash(chIndex),
|
||||||
|
// channelHash);
|
||||||
return false;
|
return false;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
DEBUG_MSG("Using channel %d (hash 0x%x)\n", chIndex, channelHash);
|
DEBUG_MSG("Using channel %d (hash 0x%x)\n", chIndex, channelHash);
|
||||||
setCrypto(chIndex);
|
setCrypto(chIndex);
|
||||||
return true;
|
return true;
|
||||||
|
@ -86,7 +86,9 @@ bool NodeDB::resetRadioConfig()
|
|||||||
DEBUG_MSG("Performing factory reset!\n");
|
DEBUG_MSG("Performing factory reset!\n");
|
||||||
installDefaultDeviceState();
|
installDefaultDeviceState();
|
||||||
didFactoryReset = true;
|
didFactoryReset = true;
|
||||||
} else if (channelFile.channels_count == 0) {
|
}
|
||||||
|
|
||||||
|
if (channelFile.channels_count != MAX_NUM_CHANNELS) {
|
||||||
DEBUG_MSG("Setting default channel and radio preferences!\n");
|
DEBUG_MSG("Setting default channel and radio preferences!\n");
|
||||||
|
|
||||||
channels.initDefaults();
|
channels.initDefaults();
|
||||||
@ -206,12 +208,13 @@ void NodeDB::init()
|
|||||||
// removed from 1.2 (though we do use old values if found)
|
// removed from 1.2 (though we do use old values if found)
|
||||||
// We set these _after_ loading from disk - because they come from the build and are more trusted than
|
// We set these _after_ loading from disk - because they come from the build and are more trusted than
|
||||||
// what is stored in flash
|
// what is stored in flash
|
||||||
//if (xstr(HW_VERSION)[0])
|
// if (xstr(HW_VERSION)[0])
|
||||||
// strncpy(myNodeInfo.region, optstr(HW_VERSION), sizeof(myNodeInfo.region));
|
// strncpy(myNodeInfo.region, optstr(HW_VERSION), sizeof(myNodeInfo.region));
|
||||||
// else DEBUG_MSG("This build does not specify a HW_VERSION\n"); // Eventually new builds will no longer include this build flag
|
// else DEBUG_MSG("This build does not specify a HW_VERSION\n"); // Eventually new builds will no longer include this build
|
||||||
|
// flag
|
||||||
|
|
||||||
// DEBUG_MSG("legacy region %d\n", devicestate.legacyRadio.preferences.region);
|
// DEBUG_MSG("legacy region %d\n", devicestate.legacyRadio.preferences.region);
|
||||||
if(radioConfig.preferences.region == RegionCode_Unset)
|
if (radioConfig.preferences.region == RegionCode_Unset)
|
||||||
radioConfig.preferences.region = devicestate.legacyRadio.preferences.region;
|
radioConfig.preferences.region = devicestate.legacyRadio.preferences.region;
|
||||||
|
|
||||||
// Check for the old style of region code strings, if found, convert to the new enum.
|
// Check for the old style of region code strings, if found, convert to the new enum.
|
||||||
@ -226,7 +229,7 @@ void NodeDB::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
strncpy(myNodeInfo.firmware_version, optstr(APP_VERSION), sizeof(myNodeInfo.firmware_version));
|
strncpy(myNodeInfo.firmware_version, optstr(APP_VERSION), sizeof(myNodeInfo.firmware_version));
|
||||||
|
|
||||||
// hw_model is no longer stored in myNodeInfo (as of 1.2.11) - we now store it as an enum in nodeinfo
|
// hw_model is no longer stored in myNodeInfo (as of 1.2.11) - we now store it as an enum in nodeinfo
|
||||||
myNodeInfo.hw_model_deprecated[0] = '\0';
|
myNodeInfo.hw_model_deprecated[0] = '\0';
|
||||||
// strncpy(myNodeInfo.hw_model, HW_VENDOR, sizeof(myNodeInfo.hw_model));
|
// strncpy(myNodeInfo.hw_model, HW_VENDOR, sizeof(myNodeInfo.hw_model));
|
||||||
@ -373,7 +376,7 @@ void NodeDB::saveChannelsToDisk()
|
|||||||
FS.mkdir("/prefs");
|
FS.mkdir("/prefs");
|
||||||
#endif
|
#endif
|
||||||
saveProto(channelfile, ChannelFile_size, sizeof(ChannelFile), ChannelFile_fields, &channelFile);
|
saveProto(channelfile, ChannelFile_size, sizeof(ChannelFile), ChannelFile_fields, &channelFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeDB::saveToDisk()
|
void NodeDB::saveToDisk()
|
||||||
|
@ -64,7 +64,7 @@ bool AdminPlugin::handleReceivedProtobuf(const MeshPacket &mp, const AdminMessag
|
|||||||
|
|
||||||
case AdminMessage_get_channel_request_tag: {
|
case AdminMessage_get_channel_request_tag: {
|
||||||
uint32_t i = r->get_channel_request - 1;
|
uint32_t i = r->get_channel_request - 1;
|
||||||
DEBUG_MSG("Client is getting channel %d\n", i);
|
DEBUG_MSG("Client is getting channel %u\n", i);
|
||||||
if (i >= MAX_NUM_CHANNELS)
|
if (i >= MAX_NUM_CHANNELS)
|
||||||
reply = allocErrorResponse(Routing_Error_BAD_REQUEST, &mp);
|
reply = allocErrorResponse(Routing_Error_BAD_REQUEST, &mp);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user