move eeprom related code into eeprom_common
This commit is contained in:
@@ -143,3 +143,78 @@ void storageEraseAll(bool warn)
|
||||
storageDirty(EE_GENERAL|EE_MODEL);
|
||||
storageCheck(true);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user