move eeprom related code into eeprom_common

This commit is contained in:
Raphael Coeffic
2021-04-09 08:21:24 +02:00
parent 3464d0d109
commit d7e2e57cdb
4 changed files with 78 additions and 81 deletions
-76
View File
@@ -475,82 +475,6 @@ void applyDefaultTemplate()
// TODO: what about switch warnings in non-color LCD radios?
}
#if defined(EEPROM)
void checkModelIdUnique(uint8_t index, uint8_t module)
{
if (isModuleXJTD8(module))
return;
uint8_t modelId = g_model.header.modelId[module];
uint8_t additionalOnes = 0;
char * name = reusableBuffer.moduleSetup.msg;
memset(reusableBuffer.moduleSetup.msg, 0, sizeof(reusableBuffer.moduleSetup.msg));
if (modelId != 0) {
for (uint8_t i = 0; i < MAX_MODELS; i++) {
if (i != index) {
if (modelId == modelHeaders[i].modelId[module]) {
if ((WARNING_LINE_LEN - 4 - (name - reusableBuffer.moduleSetup.msg)) > (signed)(modelHeaders[i].name[0] ? zlen(modelHeaders[i].name, LEN_MODEL_NAME) : sizeof(TR_MODEL) + 2)) { // you cannot rely exactly on WARNING_LINE_LEN so using WARNING_LINE_LEN-2 (-2 for the ",")
if (reusableBuffer.moduleSetup.msg[0] != '\0') {
name = strAppend(name, ", ");
}
if (modelHeaders[i].name[0] == 0) {
name = strAppend(name, STR_MODEL);
name = strAppendUnsigned(name+strlen(name), i + 1, 2);
}
else {
name += zchar2str(name, modelHeaders[i].name, LEN_MODEL_NAME);
}
}
else {
additionalOnes++;
}
}
}
}
}
if (additionalOnes) {
name = strAppend(name, " (+");
name = strAppendUnsigned(name, additionalOnes);
strAppend(name, ")");
}
if (reusableBuffer.moduleSetup.msg[0]) {
POPUP_WARNING(STR_MODELIDUSED, reusableBuffer.moduleSetup.msg);
}
}
uint8_t findNextUnusedModelId(uint8_t index, uint8_t module)
{
uint8_t usedModelIds[(MAX_RXNUM + 7) / 8];
memset(usedModelIds, 0, sizeof(usedModelIds));
for (uint8_t modelIndex = 0; modelIndex < MAX_MODELS; modelIndex++) {
if (modelIndex == index)
continue;
uint8_t id = modelHeaders[modelIndex].modelId[module];
if (id == 0)
continue;
uint8_t mask = 1u << (id & 7u);
usedModelIds[id >> 3u] |= mask;
}
for (uint8_t id = 1; id <= getMaxRxNum(module); id++) {
uint8_t mask = 1u << (id & 7u);
if (!(usedModelIds[id >> 3u] & mask)) {
// found free ID
return id;
}
}
// failed finding something...
return 0;
}
#endif
void modelDefault(uint8_t id)
{