unit RgReaderApiDef;

interface

type

  TMfCardType = (CT_Unknown = 0, CT_Tag, CT_DesFire, CT_Ultalight,
    CT_Classic_1K_SmartMX, CT_Classic_4K_SmartMX, CT_Classic_mini,
    CT_Classic_1K, CT_Classic_2K, CT_Classic_4K, CT_Plus_Unc_Unc_sl0,
    CT_Plus_SE_1K_sl0, CT_Plus_SE_1K_sl1, CT_Plus_SE_1K_sl2, CT_Plus_SE_1K_sl3,
    CT_Plus_S_2K_sl0, CT_Plus_Unc_Unc_sl1, CT_Plus_S_2K_sl1, CT_Plus_S_2K_sl2,
    CT_Plus_S_2K_sl3, CT_Plus_S_4K_sl0, CT_Plus_S_4K_sl1, CT_Plus_S_4K_sl2,
    CT_Plus_S_4K_sl3, CT_Plus_X_2K_sl0, CT_Plus_X_2K_sl1, CT_Plus_X_2K_sl2,
    CT_Plus_X_2K_sl3, CT_Plus_X_4K_sl0, CT_Plus_Unc_Unc_sl3, CT_Plus_X_4K_sl1,
    CT_Plus_X_4K_sl2, CT_Plus_X_4K_sl3);

  TMfSecLevelType = (LT_None = 0, LT_Classic, LT_Sl0, LT_Sl1, LT_Sl2, LT_Sl3);
  TMfTargetLevel = (Tl_SL1 = 0, Tl_SL3);

  /// <summary>
  /// Тип подключения
  /// </summary>
  TRG_ENDPOINT_TYPE = (
    /// <summary>
    /// Что-то непонятное, неизвестное
    /// </summary>
    ET_UNKNOWN = 0,
    /// <summary>
    /// USB HID
    /// </summary>
    ET_USBHID,
    /// <summary>
    /// Последовательный порт
    /// </summary>
    ET_SERIAL);

  /// <summary>
  /// Типы считывателей
  // ----------------------------- исправить USB ....
  /// </summary>
  TRG_DEVICE_TYPE = (
    /// <summary>
    /// Мултиформатный считыватель RDR-202
    /// </summary>
    DTE_RDR202 = $04,
    /// <summary>
    /// USB считыватель R10-EHT
    /// </summary>
    DTE_R10EHT = $0A,
    /// <summary>
    /// USB считыватель R10-MF
    /// </summary>
    DTE_R10MF = $0B,
    /// <summary>
    /// USB считыватель R15 Multi
    /// </summary>
    DTE_R15MULTI = $0F,
    /// <summary>
    /// USB считыватель R5-USB Multi
    /// </summary>
    DTE_R5USBMULTI = $10,
    /// <summary>
    /// USB считыватель R5-USB Multi Prof
    /// </summary>
    DRTE_R5USBMULTIPROF = $11,
    /// <summary>
    /// Считыватель RDR204-EH Key
    /// </summary>
    DTE_RDR204EH = $0C,
    /// <summary>
    /// Считыватель RDR204-MF Key
    /// </summary>
    DTE_RDR204MF = $0D,
    /// <summary>
    /// Считыватель RDR-102
    /// </summary>
    DTE_RDR102 = $0E);

  /// <summary>
  /// Коды типов карт
  /// </summary>
  TRG_CARD_TYPE_CODE = (
    /// <summary>
    /// PIN код склавиатуры
    /// </summary>
    CTC_PIN = $00,
    /// <summary>
    /// Карта Temic
    /// </summary>
    CTC_TEMIC = $01,
    /// <summary>
    /// Карта HID
    /// </summary>
    CTC_HID = $02,
    /// <summary>
    /// Карта Em-Marine
    /// </summary>
    CTC_EM = $03,
    /// <summary>
    /// Карта Indala
    /// </summary>
    CTC_INDALA = $04,
    /// <summary>
    /// Карта COTAG
    /// </summary>
    CTC_COTAG = $05,
    /// <summary>
    /// Карта MIFARE DESFire EV1
    /// </summary>
    CTC_MF_DESFIRE = $06,
    /// <summary>
    /// Карта MIFARE Ultralight
    /// </summary>
    CTC_MF_UL = $07,
    /// <summary>
    /// Карта MIFARE Mini
    /// </summary>
    CTC_MF_MINI = $08,
    /// <summary>
    /// Карта MIFARE Classic 1K / MIFARE Plus EV1 2K SL1
    /// </summary>
    CTC_MF_CL1K_PL2K = $09,
    /// <summary>
    /// Карта MIFARE Classic 4K / MIFARE Plus EV1 4K SL1
    /// </summary>
    CTC_MF_CL4K_PL4K = $0A,
    /// <summary>
    /// Карта MIFARE Plus 2K SL2
    /// </summary>
    CTC_MF_PL2K_SL2 = $0B,
    /// <summary>
    // ------------------------------- не правильное описание
    /// Карта MIFARE Plus 4K SL2
    /// </summary>
    CTC_MF_PL4K_SL2 = $0C,
    /// <summary>
    /// Карта MIFARE Plus SL3
    /// </summary>
    CTC_MF_SL3 = $0D,
    /// <summary>
    /// Карта SmartMX 4K
    /// </summary>
    CTC_SMX4K = $0E,
    /// <summary>
    /// Карта клон на темике
    /// </summary>
    CTC_CloneOnTemic = $40,
    /// <summary>
    /// Карта SmartMX 1K
    /// </summary>
    CTC_SMX1K = $0F,
    /// <summary>
    /// Мобила с PAY
    /// </summary>
    CTC_PAY = $FD,
    /// <summary>
    /// Мобила с приложением
    /// </summary>
    CTC_MOBILE = $FE);

  /// <summary>
  /// Коды семейств карт
  /// </summary>
  TRG_CARD_FAMILY_CODE = (
    /// <summary>
    /// Код с клавиатуры
    /// </summary>
    CF_PIN = 1,
    /// <summary>
    /// Temic
    /// </summary>
    CF_TEMIC = 2,
    /// <summary>
    /// HID
    /// </summary>
    CF_HID = 4,
    /// <summary>
    /// Em-Marine
    /// </summary>
    CF_EM = 8,
    /// <summary>
    /// Indala
    /// </summary>
    CF_INDALA = 16,
    /// <summary>
    /// Cotag/Bewator
    /// </summary>
    CF_COTAG = 32,
    /// <summary>
    /// Mifare
    /// </summary>
    CF_MIFARE = 64,
    /// <summary>
    /// Indala MT
    /// </summary>
    CF_INDALA_MT = 128,
    /// <summary>
    /// Все карты
    /// </summary>
    CF_ALL = 255);

  /// <summary>
  /// Статусы чтания карты
  /// </summary>
  TRG_STATUS_TYPE = (
    /// <summary>
    /// Нет приложенной карты
    /// </summary>
    STE_NO_CARD = 1,
    /// <summary>
    /// Карта без памяти или нет профилей в памяти
    /// </summary>
    STE_CARD = 9,
    /// <summary>
    /// Карта с памятью, но произошла ошибка доступа к памяти
    /// </summary>
    STE_CARD_NO_AUTH = 10,
    /// <summary>
    /// Карта с памятью и успешная авторизация
    /// </summary>
    STE_CARD_AUTH = 26, STE_FirstStep = $FF);

  /// <summary>
  /// Флаги определяющие механизм авторизации карт Mifare
  /// </summary>
  TRG_CARD_AUTH_FLAGS = (
    /// <summary>
    /// Если установлен, авторизация Mifare Classic будет произодиться по ключу B. Иначе по ключу А
    /// </summary>
    CAF_CLASSIC_KEY_B = 1,
    /// <summary>
    /// При работе профиля с Pay/приложением.
    /// Включает использоние сгенерированного ключа
    /// </summary>
    CAF_GENERATED_KEY = 1,
    /// <summary>
    /// Если установлен, авторизация Mifare Plus будет произодиться по ключу B. Иначе по ключу А
    /// </summary>
    CAF_PLUS_KEY_B = 2,
    /// <summary>
    /// При работе профиля с Pay/приложением.
    /// Включает использоние заданного ключа
    /// </summary>
    CAF_PRESENT_KEY = 2,
    /// <summary>
    /// Если установлен, будет использован механизм авторизации для карты SL3, иначе SL1/CLassic
    /// </summary>
    CAF_PLUS_SL3 = 4,
    /// <summary>
    /// При работе профиля с Pay/приложением.
    /// Включает использоние эмитированного ключа
    /// </summary>
    CAF_EMITED_KEY = 4,
    /// <summary>
    /// Профиль используется для работы с мобильным приложением
    /// Взаимоисключающий с CAF_USE_PAY
    /// </summary>
    CAF_USE_APP = 16,
    /// <summary>
    /// Профиль используется для работы с Pay
    /// Взаимоисключающий с CAF_USE_APP
    /// </summary>
    CAF_USE_PAY = 32);

  /// <summary>
  /// Указатель на статусы чтания карты
  /// </summary>
  PRG_STATUS_TYPE = ^TRG_STATUS_TYPE;

  /// <summary>
  /// Код ошибок API
  /// </summary>
  TError = (
    /// <summary>
    /// Все хорошо
    /// </summary>
    EC_OK = 0,
    /// <summary>
    /// Все плохо
    /// </summary>
    EC_FAIL,
    /// <summary>
    /// Функциональность не реализована
    /// </summary>
    EC_NOT_IMPLEMENTED,
    /// <summary>
    /// Неверно задан один из аргументов
    /// </summary>
    EC_BAD_ARGUMENT,
    /// <summary>
    /// Указан невалидный дескриптор ресурса, или ресурс закрыт
    /// </summary>
    EC_INVALID_HANDLE,
    /// <summary>
    /// Указан дескриптор несовместимого ресурса
    /// </summary>
    EC_INVALID_RESOURCE,
    /// <summary>
    /// Указан неподдерживаемый тип соединения
    /// </summary>
    EC_INVALID_CONNECTION_TYPE,
    /// <summary>
    /// Адрес подключения не соответствует типу подключения
    /// </summary>
    EC_INVALID_CONNECTION_ADDRESS,
    /// <summary>
    /// Указанный аддрес устройства является недопустимым для указанного типа подключения
    /// </summary>
    EC_INVALID_DEVICE_ADDRESS,
    /// <summary>
    /// Функциональность не поддерживается целевым устройством
    /// </summary>
    EC_DEVICE_OPERATION_UNSUPPORTED,
    /// <summary>
    /// Устройство было отключено в процессе обмена (для USB устройств).
    /// </summary>
    EC_DEVICE_NOT_CONNECTED,
    /// <summary>
    /// Устройство не отвечает на запросы
    /// </summary>
    EC_DEVICE_NO_RESPOND,
    /// <summary>
    /// Ошибка обмена данными с устройством
    /// </summary>
    EC_DEVICE_COMM_FAILURE,
    /// <summary>
    /// Ошибка при обработке входящих сообщений протокола
    /// </summary>
    EC_DEVICE_PROTOCOL_FAILURE,
    /// <summary>
    /// Очередь событий пуста
    /// </summary>
    EC_POLL_NO_EVENTS,
    /// <summary>
    /// Очередь закрыта или уничтожена
    /// </summary>
    EC_POLL_QUEUE_CLOSED,

    // ошибки взаимодействия
    /// <summary>
    /// Устройству требуется инициализация
    /// </summary>
    EC_CALL_INIT,

    /// <summary>
    /// Нет такой команды или команда не поддерживается устройством
    /// </summary>
    EC_DEVICE_INVALID_COMMAND,

    /// <summary>
    /// указан недопустимый параметр команды
    /// </summary>
    EC_DEVICE_INVALID_PARAM,

    /// <summary>
    /// Неверный PIN для команд настройки
    /// </summary>
    EC_DEVICE_INVALID_PIN,

    /// <summary>
    /// Истекло время ожидания на получение устройством нужной команды
    /// </summary>
    EC_DEVICE_COMMAND_TIMEOUT,

    /// <summary>
    /// Нет карты на считывателе
    /// </summary>
    EC_DEVICE_NO_CARD,

    /// <summary>
    /// Устройство не смогло распознать карту
    /// </summary>
    EC_DEVICE_UNKNOWN_CARD,

    /// <summary>
    /// Карта несовместима с выполняемой операцией
    /// </summary>
    EC_DEVICE_INCOMPATIBLE_CARD,

    /// <summary>
    /// Авторизация карты не проходит
    /// </summary>
    EC_DEVICE_AUTH_FAIL,

    /// <summary>
    /// Используется неподходящий профиль
    /// </summary>
    EC_DEVICE_PROFILE_FAIL,

    /// <summary>
    /// Авторизация карты не проходит     ------------------- Ошибка выше уже есть такое?
    /// </summary>
    EC_DEVICE_RW_FAIL,

    /// <summary>
    /// Ошибка при открытии соединения
    /// </summary>
    EC_IO_OPEN_FAIL,
    /// <summary>
    /// Ошибка при закрытии соединения
    /// </summary>
    EC_IO_CLOSE_FAIL,
    /// <summary>
    /// Ошибка при откправке данных
    /// </summary>
    EC_IO_READ_FAIL,

    /// <summary>
    /// Ошибка при чтении данных
    /// </summary>
    EC_IO_WRITE_FAIL,

    /// <summary>
    /// Операция прервана, соединение было закрыто
    /// </summary>
    EC_IO_CLOSED,

    /// <summary>
    /// Устройство в буте
    /// </summary>
    DEVICE_IN_BOOT,

    /// <summary>
    /// Прошивка не для того устройства
    /// </summary>
    ERROR_MODEL,

    /// <summary>
    /// Файл прошивки не найден
    /// </summary>
    FILE_NOT_FOUND);

  /// <summary>
  /// Определяет типы блоков параметров в памяти устройства
  /// </summary>
  TRG_SETTINGS_BLOCK_TYPE = (
    /// <summary>
    /// Блок настроек
    /// </summary>
    ESB_SETTINGS = 0,
    /// <summary>
    /// Блок профилей
    /// </summary>
    ESB_PROFILES,
    /// <summary>
    /// Блок ключей
    /// </summary>
    ESB_KEYS);

implementation

end.
