Files
E502_ADC_BF_PC_companion/x502/x502api_errs.c

187 lines
22 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//---------------------------------------------------------------------------
#include "x502api.h"
#include "l502_bf_cmd_defs.h"
#include "../devs/e502/e502_cm4_defs.h"
static const char* f_unknow_err = "Неизвестная ошибка";
typedef struct {
int32_t err;
const char* str;
}t_err_table;
static const t_err_table f_err_tbl[] = {
{ X502_ERR_OK, "Выполнено без ошибок" },
{ X502_ERR_INVALID_HANDLE, "Недействительный описатель модуля"},
{ X502_ERR_MEMORY_ALLOC, "Ошибка выделения памяти"},
{ X502_ERR_ALREADY_OPENED, "Попытка открыть уже открытое устройство"},
{ X502_ERR_DEVICE_NOT_FOUND, "Устройство с заданными параметрами не найдено в системе"},
{ X502_ERR_DEVICE_ACCESS_DENIED, "Доступ к устройству запрещен"},
{ X502_ERR_DEVICE_OPEN, "Ошибка открытия устройства"},
{ X502_ERR_INVALID_POINTER, "В функцию передан недействительный указатель"},
{ X502_ERR_STREAM_IS_RUNNING, "Функция не может быть выполнена при запущенном потоке сбора данных"},
{ X502_ERR_RECV, "Ошибка чтения данных синхронного ввода"},
{ X502_ERR_SEND, "Ошибка записи данных для синхронного вывода"},
{ X502_ERR_STREAM_OVERFLOW, "Произошло переполнение внутреннего буфера для потока синхронного ввода"},
{ X502_ERR_UNSUP_STREAM_MSG, "Неизвестное сообщение в потоке синхронного ввода"},
{ X502_ERR_MUTEX_CREATE, "Ошибка создания системного мьютекса"},
{ X502_ERR_MUTEX_INVALID_HANDLE, "Неверный описатель мьютекса"},
{ X502_ERR_MUTEX_LOCK_TOUT, "Истекло время ожидания освобождния мьютекса"},
{ X502_ERR_MUTEX_RELEASE, "Ошибка освобождения мьютекса"},
{ X502_ERR_INSUFFICIENT_SYSTEM_RESOURCES, "Недостаточно системных ресурсов"},
{ X502_ERR_NOT_IMPLEMENTED, "Данная возможность еще не реализована"},
{ X502_ERR_INSUFFICIENT_ARRAY_SIZE, "Недостаточный размер массива"},
{ X502_ERR_FPGA_REG_READ, "Ошибка чтения регистра FPGA"},
{ X502_ERR_FPGA_REG_WRITE, "Ошибка записи регистра FPGA"},
{ X502_ERR_STREAM_IS_NOT_RUNNING, "Синхронный сбор уже остановлен"},
{ X502_ERR_INTERFACE_RELEASE, "Ошибка освобождения интерфейса"},
{ X502_ERR_THREAD_START, "Ошибка запуска потока"},
{ X502_ERR_THREAD_STOP, "Ошибка останова потока"},
{ X502_ERR_DEVICE_DISCONNECTED, "Устройство было отключено"},
{ X502_ERR_IOCTL_INVALID_RESP_SIZE, "Неверный размер ответа на управляющий запрос"},
{ X502_ERR_INVALID_DEVICE, "Неверный тип устройства"},
{ X502_ERR_INVALID_DEVICE_RECORD, "Недействительная запись о устройстве"},
{ X502_ERR_INVALID_CONFIG_HANDLE, "Неверный описатель конфигурации модуля"},
{ X502_ERR_DEVICE_NOT_OPENED, "Связь с устройством закрыта или не была установлена"},
{ X502_ERR_INVALID_OP_FOR_IFACE, "Данная операция не доступна для текущего интерфейса связи с устройством"},
{ X502_ERR_FPGA_NOT_LOADED, "Не загружен ПЛИС модуля"},
{ X502_ERR_INVALID_USB_CONFIGURATION,"Неверная конфигурация USB-устройства"},
{ X502_ERR_INVALID_SVC_BROWSE_HANDLE, "Неверный описатель контекста поиска сервисов"},
{ X502_ERR_INVALID_SVC_RECORD_HANDLE,"Неверный описатель записи о сервисе"},
#ifdef _WIN32
{ X502_ERR_DNSSD_NOT_RUNNING, "Не запущена программа обнаружения устройств в локальной сети (Bonjour Service)"},
#else
{ X502_ERR_DNSSD_NOT_RUNNING, "Не запущена программа обнаружения устройств в локальной сети (AVAHI)"},
#endif
{ X502_ERR_DNSSD_COMMUNICATION, "Ошибка при обращении к программе обнаружения устройств в локальной сети"},
{ X502_ERR_INVALID_SVC_BROWSE_HANDLE, "Неверный описатель контекста поиска устройств в сети"},
{ X502_ERR_INVALID_SVC_RECORD_HANDLE, "Неверный описатель записи о сервисе"},
{ X502_ERR_DNSSD_NOT_RUNNING, "Не запущена программа обнаружения устройств в локальной сети"},
{ X502_ERR_DNSSD_COMMUNICATION, "Ошибка при обращении к программе обнаружения устройств в локальной сети"},
{ X502_ERR_SVC_RESOLVE_TIMEOUT, "Превышен таймаут запроса параметров автообнаруженного сетевого устройства"},
{ X502_ERR_INSTANCE_NAME_ENCODING, "Ошибка в кодировке имени экземляра устройства"},
{ X502_ERR_INSTANCE_MISMATCH, "Экземпляры модулей не совпадают"},
{ X502_ERR_NOT_SUP_BY_FIRMWARE, "Возможность не поддерживается текущей версией прошивки устройства"},
{ X502_ERR_NOT_SUP_BY_DRIVER, "Возможность не поддерживается текущей версией драйвера устройства"},
{ X502_ERR_OUT_CYCLE_SETUP_TOUT, "Превышено время ожидания установления цикличиского сигнала на вывод"},
{ X502_ERR_INVALID_LTABLE_SIZE, "Задан неверный размер логической таблицы"},
{ X502_ERR_INVALID_LCH_NUMBER, "Задан неверный номер логического канала"},
{ X502_ERR_INVALID_LCH_RANGE, "Неверно задано значение диапазона АЦП"},
{ X502_ERR_INVALID_LCH_MODE, "Неверно задан режим измерения для логического канала"},
{ X502_ERR_INVALID_LCH_PHY_NUMBER, "Неверно задан номер физического канала при настройке логического"},
{ X502_ERR_INVALID_LCH_AVG_SIZE, "Неверно задан размер усреднения для логического канала"},
{ X502_ERR_INVALID_ADC_FREQ_DIV, "Неверно задан делитель частоты сбора данных АЦП"},
{ X502_ERR_INVALID_DIN_FREQ_DIV, "Неверно задан делитель частоты синхронного ввода цифровых линий"},
{ X502_ERR_INVALID_MODE, "Неверно задан режим работы платы"},
{ X502_ERR_INVALID_DAC_CHANNEL, "Неверный номер канала ЦАП"},
{ X502_ERR_INVALID_REF_FREQ, "Неверный код выбора опорной частоты синхронизации"},
{ X502_ERR_INVALID_INTERFRAME_DELAY,"Неверно задано значение межкадровой задержки"},
{ X502_ERR_INVALID_SYNC_MODE, "Неверно задан режим синхронизации"},
{ X502_ERR_INVALID_STREAM_CH, "Неверно задан номер потока данных"},
{ X502_ERR_INVALID_OUT_FREQ_DIV, "Неверно задан делитель частоты синхронного вывода"},
{ X502_ERR_REF_FREQ_NOT_LOCKED, "Ошибка захвата опорной частоты синхронизации"},
{ X502_ERR_IOCTL_FAILD, "Управляющий запрос к драйверу завершен с ошибкой"},
{ X502_ERR_IOCTL_TIMEOUT, "Истек таймаут ожидания завершения выполнения управляющего запроса к драйверу"},
{ X502_ERR_GET_INFO, "Ошибка получения информации о устройстве от драйвера"},
{ X502_ERR_DIG_IN_NOT_RDY, "За время ожидания не было считано новое слово с цифровых линий"},
{ X502_ERR_RECV_INSUFFICIENT_WORDS, "Принято недостаточно слов от модуля"},
{ X502_ERR_DAC_NOT_PRESENT, "Попытка выполнить операцию, требующую наличие ЦАП, при его отсутствии"},
{ X502_ERR_SEND_INSUFFICIENT_WORDS, "Передано недостаточно слов в модуль"},
{ X502_ERR_NO_CMD_RESPONSE, "Не пришло ответа на переданную команду"},
{ X502_ERR_PROC_INVALID_CH_NUM, "Неверный номер канала в обрабатываемом потоке синхронного ввода"},
{ X502_ERR_PROC_INVALID_CH_RANGE, "Неверный код диапазона в обрабатываемом потоке синхронного ввода"},
{ X502_ERR_FLASH_INVALID_ADDR, "Задан неверный адрес во Flash-памяти"},
{ X502_ERR_FLASH_INVALID_SIZE, "Задан неверный размер блока данных при работе с Flash-памятью"},
{ X502_ERR_FLASH_WRITE_TOUT, "Истек таймаут ожидания завершения записи во Flash-память"},
{ X502_ERR_FLASH_ERASE_TOUT, "Истек таймаут ожидания завершения стирания блока Flash-памяти"},
{ X502_ERR_FLASH_SECTOR_BOUNDARY, "Заданная область для стирания Flash-памяти нарушает границу блока в 4 Кбайт"},
{ X502_ERR_SOCKET_OPEN, "Не удалось открыть сокет для соединения"},
{ X502_ERR_CONNECTION_TOUT, "Превышено время подключения"},
{ X502_ERR_CONNECTION_CLOSED_BY_DEV,"Соединение закрыто устройством"},
{ X502_ERR_SOCKET_SET_BUF_SIZE, "Не удалось установить заданный размер буфера сокета"},
{ X502_ERR_NO_DATA_CONNECTION, "Соединение для передачи данных не установлено"},
{ X502_ERR_NO_STREAM_END_MSG, "Не удалось дождаться сообщения о завершении потока"},
{ X502_ERR_CONNECTION_RESET, "Соединение было сброшено другой стороной"},
{ X502_ERR_HOST_UNREACHABLE, "Не удалось найти хост с указанным адресом"},
{ X502_ERR_TCP_CONNECTION_ERROR, "Ошибка установления TCP-соединения"},
{ X502_ERR_LDR_FILE_OPEN, "Не удалось открыть файл прошивки BlackFin"},
{ X502_ERR_LDR_FILE_READ, "Ошибка чтения из фала прошивки BlackFin"},
{ X502_ERR_LDR_FILE_FORMAT, "Неверный формат файла прошивки BlackFin"},
{ X502_ERR_LDR_FILE_UNSUP_FEATURE, "Используются возможность LDR-файла, недоступные при записи прошивки BlackFin по HDMA"},
{ X502_ERR_LDR_FILE_UNSUP_STARTUP_ADDR, "Неверный стартовый адрес программы в прошивке BlackFin"},
{ X502_ERR_BF_REQ_TIMEOUT, "Истек таймаут выполнения запроса на чтения/запись памяти BlackFin"},
{ X502_ERR_BF_CMD_IN_PROGRESS, "Команда для BlackFin все еще находится в процессе обработки"},
{ X502_ERR_BF_CMD_TIMEOUT, "Истекло время выполнения управляющей команды процессором BlackFin"},
{ X502_ERR_BF_CMD_RETURN_INSUF_DATA,"Возвращено недостаточно данных в ответ на команду к BlackFin"},
{ X502_ERR_BF_LOAD_RDY_TOUT, "Истек таймаут ожидания готовности процессора BlackFin к записи прошивки"},
{ X502_ERR_BF_NOT_PRESENT, "Процессор BlackFin не присутствует на плате"},
{ X502_ERR_BF_INVALID_ADDR, "Неверный адрес памяти BlackFin при записи или чтении по HDMA"},
{ X502_ERR_BF_INVALID_CMD_DATA_SIZE,"Неверный размер данных, передаваемых с управляющей командой в BlackFin"},
{ L502_BF_ERR_UNSUP_CMD, "Ошибка BlackFin: неподдерживаемый код команды"},
{ L502_BF_ERR_CMD_OVERRUN, "Ошибка BlackFin: запрос на выполнение команды опережает завершение предыдущей"},
{ L502_BF_ERR_INVALID_CMD_PARAMS, "Ошибка BlackFin: неверное значение параметров команды"},
{ L502_BF_ERR_INSUF_CMD_DATA, "Ошибка BlackFin: недостаточное данных передано с командой"},
{ L502_BF_ERR_STREAM_RUNNING, "Ошибка BlackFin: команда не допустима при запущеном сборе"},
{ L502_BF_ERR_STREAM_STOPPED, "Ошибка BlackFin: команда допустима только при запущеном сборе"},
{ L502_BF_ERR_NO_TEST_IN_PROGR, "Ошибка BlackFin: не выполняется ни одного теста"},
{ L502_BF_ERR_TEST_VALUE, "Ошибка BlackFin: неверное значение при выполнении теста"},
{ E502_CM4_ERR_FPGA_NSTATUS_TOUT, "Ошибка Cortex-M4: При загрузке ПЛИС не удалось дождаться сигнала перехода в режим загрузки"},
{ E502_CM4_ERR_FPGA_CONF_DONE_TOUT, "Ошибка Cortex-M4: При загрузке ПЛИС не удалось дождаться сигнала завершения загрузки"},
{ E502_CM4_ERR_FPGA_FW_NOT_PRESENT, "Ошибка Cortex-M4: Не обнаружена прошивка ПЛИС во flash-памяти модуля"},
{ E502_CM4_ERR_FPGA_REG_NACK, "Ошибка Cortex-M4: Обращение к регистру ПЛИС вернуло ответ NACK"},
{ E502_CM4_ERR_FPGA_REG_ERROR, "Ошибка Cortex-M4: Обращение к регистру ПЛИС вернуло ответ ERROR"},
{ E502_CM4_ERR_FPGA_REG_WT_TOUT, "Ошибка Cortex-M4: Не удалось дожлаться ответ на обращение к регистру ПЛИС"},
{ E502_CM4_ERR_TEST_INVALID_NUM, "Ошибка Cortex-M4: Неподдерживаемый номер теста"},
{ E502_CM4_ERR_TEST_VALUE_MISMATH, "Ошибка Cortex-M4: Несовпадение ожидаемых значений при проходе теста"},
{ E502_CM4_ERR_TEST_NOT_RUNNING, "Ошибка Cortex-M4: Тест не запущен"},
{ E502_CM4_ERR_TEST_ALREADY_RUNNING,"Ошибка Cortex-M4: Tест уже запщен"},
{ E502_CM4_ERR_BF_LDR_FILE_SIZE, "Ошибка Cortex-M4: Не удалось найти конец файла прошивки BlackFin"},
{ E502_CM4_ERR_LDR_FILE_FORMAT, "Ошибка Cortex-M4: Неверный формат файла прошивки BlackFin"},
{ E502_CM4_ERR_LDR_FILE_UNSUP_FEATURE, "Ошибка Cortex-M4: Используются возможность LDR-файла, недоступные при записи прошивки BlackFin по HDMA"},
{ E502_CM4_ERR_LDR_FILE_UNSUP_STARTUP_ADDR, "Ошибка Cortex-M4: Неверный стартовый адрес программы в прошивке BlackFin"},
{ E502_CM4_ERR_BF_REQ_TIMEOUT, "Ошибка Cortex-M4: Истек таймаут выполнения запроса на чтения/запись памяти BlackFin"},
{ E502_CM4_ERR_BF_CMD_IN_PROGRESS, "Ошибка Cortex-M4: Команда для BlackFin все еще находится в процессе обработки"},
{ E502_CM4_ERR_BF_CMD_TIMEOUT, "Ошибка Cortex-M4: Истекло время выполнения управляющей команды процессором BlackFin"},
{ E502_CM4_ERR_BF_CMD_RETURN_INSUF_DATA, "Ошибка Cortex-M4: Возвращено недостаточно данных в ответ на команду к BlackFin"},
{ E502_CM4_ERR_BF_LOAD_RDY_TOUT, "Ошибка Cortex-M4: Истек таймаут ожидания готовности процессора BlackFin к записи прошивки"},
{ E502_CM4_ERR_BF_NOT_PRESENT, "Ошибка Cortex-M4: Попытка выполнить операцию для которой нужен сигнальный процессор при отсутствии сигнального процессора в модуле"},
{ E502_CM4_ERR_BF_INVALID_ADDR, "Ошибка Cortex-M4: Неверный адрес памяти BlackFin при записи или чтении по HDMA"},
{ E502_CM4_ERR_BF_INVALID_CMD_DATA_SIZE, "Ошибка Cortex-M4: Неверный размер данных, передаваемых с управляющей командой в BlackFin"},
{ E502_CM4_ERR_UNKNOWN_CMD, "Ошибка Cortex-M4: Неподдерживаемый код команды"},
{ E502_CM4_ERR_INVALID_CMD_PARAMS, "Ошибка Cortex-M4: Неверные параметры переданной команды"},
{ E502_CM4_ERR_FIRM_BUF_OVERFLOW, "Ошибка Cortex-M4: Переполнение буфера для приема прошивки"},
{ E502_CM4_ERR_CMD_SIGNATURE, "Ошибка Cortex-M4: Неверный признак начала команды"},
{ E502_CM4_ERR_INVALID_CMD_DATA_SIZE, "Ошибка Cortex-M4: Неверное количество данных в команде"},
{ E502_CM4_ERR_FLASH_PROT_CODE, "Ошибка Cortex-M4: Неверный код настройки защиты Flash-памяти"},
{ E502_CM4_ERR_FLASH_OP, "Ошибка Cortex-M4: Ошибка выполнения операции с Flash-памятью"},
{ E502_CM4_ERR_FLASH_DATA_COMPARE, "Ошибка Cortex-M4: Ошибка сравнения записанных данных во Flash-память"},
{ E502_CM4_ERR_INVALID_PASSWORD, "Ошибка Cortex-M4: Неверный пароль для изменения сетевых настроек"},
{ E502_CM4_ERR_FPGA_NOT_LOADED, "Ошибка Cortex-M4: ПЛИС не был загружен"},
{ E502_CM4_ERR_FLASH_SET_PROT_BITS, "Ошибка Cortex-M4: Не удалось изменить занчения битов защиты Flash-памяти"},
{ E502_CM4_ERR_FPGA_FW_INVALID_TEMP_RANGE, "Ошибка Cortex-M4: Загруженная прошивка ПЛИС предназначена для другого темп. исполнения"},
{ E502_CM4_ERR_M0_STREAM_START_REQ, "Ошибка Cortex-M4: Нет ответа на запрос запуска потока от ядра Cortex-M0"},
{ E502_CM4_ERR_M0_STREAM_STOP_REQ, "Ошибка Cortex-M4: Нет ответа на запрос останова потока от ядра Cortex-M0"},
{ E502_CM4_ERR_OUT_STREAM_RUNNING, "Ошибка Cortex-M4: Уже запущен вывод в потоковом режиме"},
{ E502_CM4_ERR_OUT_NO_CYCLE_BUF, "Ошибка Cortex-M4: Нет свободного буфера для циклического режима. Не произошла смена страниц"},
{ E502_CM4_ERR_OUT_CYCLE_BUF_SIZE, "Ошибка Cortex-M4: Задан слишком большой размер циклического буфера"},
{ E502_CM4_ERR_OUT_CYCLE_NOT_LOADED, "Ошибка Cortex-M4: Не был полностью загружен циклический буфер перед сменой"}
};
X502_EXPORT(const char*) X502_GetErrorString(int32_t err) {
size_t i;
const char *str = f_unknow_err;
for (i=0; (i < sizeof(f_err_tbl)/sizeof(f_err_tbl[0])) && (str==f_unknow_err); i++) {
if (f_err_tbl[i].err == err)
str = f_err_tbl[i].str;
}
return str;
}