String GetAcknowledgeErrorString(PACKET_ACK ac) { String err_str = ""; switch (ac.error_code) { case Const.CMD_ERR_NO_ERROR: err_str = "Нет ошибки"; break; case Const.CMD_ERR_INVALID_FIRMWARE_SIZE: err_str = "Недопустимая длина микропрограммы"; break; case Const.CMD_ERR_IAP_ERROR: switch (ac.iap_error_code) { case Const.IAP_ERR_CMD_SUCCESS: err_str = "IAP - Нет ошибки"; break; case Const.IAP_ERR_INVALID_COMMAND: err_str = "IAP - Неверная команда"; break; case Const.IAP_ERR_SRC_ADDR_ERROR: err_str = "IAP - Адрес источника не выровнен по границе слова"; break; case Const.IAP_ERR_DST_ADDR_ERROR: err_str = "IAP - Адрес приемника не выровнен по необходимой величине"; break; case Const.IAP_ERR_SRC_ADDR_NOT_MAPPED: err_str = "IAP - Адрес источника (с учетом счетчика байт) выходит за пределы памяти"; break; case Const.IAP_ERR_DST_ADDR_NOT_MAPPED: err_str = "IAP - Адрес приемника (с учетом счетчика байт) выходит за пределы памяти"; break; case Const.IAP_ERR_COUNT_ERROR: err_str = "IAP - Счетчик байт не кратен 4 или имеет недопустимое значение"; break; case Const.IAP_ERR_INVALID_SECTOR: err_str = "IAP - Неверный номер сектора или адрес последнего сектора меньше адреса первого"; break; case Const.IAP_ERR_SECTOR_NOT_BLANK: err_str = "IAP - Сектор не был предварительно очищен"; break; case Const.IAP_ERR_SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION: err_str = "IAP - Сектор не был подготовлен для операции записи"; break; case Const.IAP_ERR_COMPARE_ERROR: err_str = "IAP - Данные источника и приемника не совпадают"; break; case Const.IAP_ERR_BUSY: err_str = "IAP - Интерфейс аппаратного программирования занят"; break; default: err_str = "IAP - Неизвестный код ошибки: " + ac.iap_error_code.ToString(); break; } break; case Const.CMD_ERR_USER_CODE_NOT_PRESENT: err_str = "В устройстве отсутствует микропрограмма"; break; case Const.CMD_ERR_CRC8_ERROR: err_str = "Неверная контрольная сумма микропрограммы (CRC8)"; break; default: err_str = "Неизвестный код ошибки: " + ac.error_code.ToString(); break; } return(err_str); }
void get_ack(ref PACKET_ACK aa, _u8[] data) { aa.error_code = data[0]; aa.iap_error_code = data[1]; }