ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
1167635 Топик полностью
VLLV (24.01.2022 15:36, просмотров: 234) ответил AlexBi на Не понятно что делает функция RestoreAllSetup(...) Если бы она вызывалась только (0) и (1), я бы предположил что это чтение блока 1 и 2 с проверкой CRC и тогда функция RestoreSetupUntilSuccessful содержжит дефект. Но я вижу еще (2) и моей догадливости тут не хватает.
поясняю 
а) Наборы данных не равноценны, самый резервный это 2  

б) Засада: значение ошибки кодируется по разному RestoreSetupUntil : нет ошибки = 0, а  RestoreAllSetup ошибка = 0 (Я обычно добавляю признак полярности в имя функции, но тут не удосужился)
 
char RestoreSetupUntilSuccessful(void)
{	if (RestoreAllSetup(0))		// прочитали основной набор без ошибок ?
		return 0;		// да, отдаем сбоев нет 
	if (RestoreAllSetup(1))		// читаем резерв 1, без ошибок? 
	{	StoreAllSetup(0);	// да, восстанавливаем основной набор данных из считанного резерв 1
		return 1;		// отдаем количество сбоев
	}
 	if (RestoreAllSetup(2))		// читаем резерв два, без ошибок?
	{	StoreAllSetup(1);	// да, восстанавливаем 
		StoreAllSetup(0);	// и еще раз
		return 2;		// возвращаем двойной сбой
	}
  return 3;				// ховайся в жыто
}