XFS-сервис класса IDC. Модель CRT288-K001

Файлы

  • CRT_288_K001.dll;

  • shqPS.IDC.CRT.288-K001.exe;

  • shqSPIDC.dll.

Настройки XFS-провайдера

Раздел реестра: [HKLM\Software\XFS\PHYSICAL_SERVICES\IDC-CRT288-K001]

Параметры драйвера:

  • AUTOMATIC_SIU_LED_CONTROL – автоматическое управление световой индикацией модуля специальной электроники (SIU). Возможные значения: 1, 0. Значение по умолчанию: 1.

  • SWIPE_READ_MODE – чтение карты в режиме вставки и последующего извлечения карты. Возможные значения: 1, 0. Значение по умолчанию: 0.

Информационные запросы

WFS_INF_IDC_STATUS

Назначние команды: запрос информации о статусе устройства.

Расчет поля fwDevice:

  • WFS_IDC_DEVONLINE – устройство на связи, питание есть;

  • WFS_IDC_DEVPOWEROFF – питания нет;

  • WFS_IDC_DEVBUSY – устройство занято (ожидание вставки карты, выполнение механических команд);

  • WFS_IDC_DEVHWERROR – устойчивое состояние ошибки устройства;

  • WFS_IDC_DEVNODEVICE – ошибка конфигурации.

Расчет поля fwMedia:

  • WFS_IDC_MEDIAPRESENT – карта вставлена в слот до упора;

  • WFS_IDC_MEDIALATCHED – карта вставлена в слот до упора и заблокирована;

  • WFS_IDC_MEDIANOTPRESENT – карта не вставлена или вставлена не полностью;

  • WFS_IDC_MEDIAUNKNOWN – невозможно получить состояние карты (питание отключено, получен отрицательный статус устройства, ошибки конфигурации).

Расчет поля fwChipPower:

  • WFS_IDC_CHIPONLINE – чип активирован;

  • WFS_IDC_CHIPBUSY – чип занят (идет обмен коммуникационными данными);

  • WFS_IDC_CHIPPOWEREDOFF – чип деактивирован (до этого была работа с чипом);

  • WFS_IDC_CHIPNODEVICE – карта не содержит чип или до этого не пытались работать с чипом;

  • WFS_IDC_CHIPNOCARD – карта не вставлена или вставлена не полностью;

  • WFS_IDC_CHIPHWERROR – устойчивая ошибка взаимодействия с чипом;

  • WFS_IDC_CHIPUNKNOWN – невозможно получить состояние чипа (питание отключено, получен отрицательный статус устройства, ошибки конфигурации).

Устройство не поддерживает захват карты поле fwRetainBin = WFS_IDC_RETAINNOTSUPP, usCards = 0.

Поле lpszExtra:

  • VENDOR=DORS[SYSTEMA]

  • PRODUCT=ProAtm/Xfs

  • VERSION=X.X.X.X (текущая версия сервис-провайдера XFS)

  • MODEL=CRT288-K001 (текущая модель устройства)

  • DETECTED_PROBLEM=(ошибки конфигурации XFS драйвера)

  • NEGATIVE_STATUS=(последний известный отрицательный статус ответа устройства)

При SWIPE_READ_MODE = 1:

fwMedia:

  • WFS_IDC_MEDIAPRESENT – после успешного чтения карты при исполнении запроса WFS_CMD_IDC_READ_RAW_DATA;

  • WFS_IDC_MEDIANOTPRESENT – после исполнения запроса WFS_CMD_IDC_EJECT_CARD.

fwChipPower:

  • WFS_IDC_CHIPNOTSUPP – чип не поддерживается.

WFS_INF_IDC_CAPABILITIES

Назначение команды: запрос информации о возможностях устройства.

Картридер оборудован механической защелкой для блокировки карты в слоте устройства, поле fwType = WFS_IDC_TYPELATCHEDDIP.

Протоколы взаимодействия с чиповыми картами (fwChipProtocols):

  • WFS_IDC_CHIPT0;

  • WFS_IDC_CHIPT1;

  • WFS_IDC_CHIP_PROTOCOL_NOT_REQUARED (если взаимодействие с сервисом открыто для версии CEN/XFS 3.10). В данном случае устройство автоматически выберет протокол T0 или T1.

Чтение данных магнитной полосы происходит при вставке карты. Используем такую модель поведения для универсализации работы с картой относительно моторизированных картридеров со стороны прикладного ПО, поле fwDIPMode = WFS_IDC_DIP_ENTRY.

Поле lpszExtra:

  • VENDOR=DORS[SYSTEMA];

  • PRODUCT=ProAtm/Xfs;

  • VERSION=X.X.X.X (текущая версия сервис-провайдера XFS);

  • MODEL=CRT288-K001 (текущая модель устройства).

При SWIPE_READ_MODE = 1: fwChipProtocols = WFS_IDC_NOTSUPP, fwChipPower = WFS_IDC_NOTSUPP.

Команды

WFS_CMD_IDC_EJECT_CARD

Назначение команды: разблокировка карты и деактивация чипа, если необходимо.

При SWIPE_READ_MODE = 1 через 1 секунду после исполнения запроса будет выполнено:

  1. очищен буфер данных магнитной полосы + изменен статуса карты fwMedia = WFS_IDC_MEDIANOTPRESENT.

  2. отправлено событие WFS_SRVE_IDC_MEDIAREMOVED.

Валидация контекста исполнения:

  • сервис в состоянии готовности;

  • карта внутри устройства.

Валидация входных данных для CEN/XFS 3.10: wEjectPosition = WFS_IDC_EXITPOSITION.

WFS_CMD_IDC_READ_RAW_DATA

Назначение команды: ожидание вставки карты и последующее чтение данных магнитной полосы, а также активация чипа в зависимости от входных параметров.

Валидация контекста исполнения: сервис в состоянии готовности.

Особенности выполнения команды:

  • При активации чипа происходит механическая блокировка карты.

  • После вставки карты происходит буферизация данных магнитной полосы в оперативной памяти XFS драйвера до момента, пока карта находится внутри устройства, т.е. последующие запросы WFS_CMD_IDC_READ_RAW_DATA будут происходить без обращения к устройству.

  • Если данные на карте отсутствуют, то команда завершится кодом WFS_ERR_IDC_INVALIDMEDIA.

  • Если на момент выполнения операции карта уже вставлена, то будет предпринята попытка прочитать данные магнитной полосы из буфера устройства.

При SWIPE_READ_MODE = 1 команда ожидает поступления корректных данных от магнитной полосы. После успешного получения данных fwMedia = WFS_IDC_MEDIAPRESENT. Значение lpwReadData = WFS_IDC_CHIP – игнорируется. Если на момент начала исполнения команды в буфере устройства есть данные магнитной полосы, то команда сразу завершится успешно (WFS_SUCCESS).

Расчет поля wStatus структуры WFSIDCCARDDATA:

wDataSource

Значение

WFS_IDC_TRACK1, WFS_IDC_TRACK2, WFS_IDC_TRACK3

WFS_IDC_DATAOK – данные успешно прочитаны.

WFS_IDC_DATAMISSING – магнитная полоса не содержит данных по указанному ресурсу.

WFS_IDC_DATAINVALID – ошибка чтения магнитной полосы по указанному ресурсу.

WFS_IDC_CHIP

WFS_IDC_DATAOK – чип активирован, ATR данные успешно получены. WFS_IDC_DATASRCMISSING – карта не содержит чипа. WFS_IDC_DATAINVALID – ошибка активации чипа.

WFS_CMD_IDC_RESET

Назначение команды: сброс состояния оборудования.

Валидация контекста исполнения: сервис в состоянии готовности.

lpwResetIn = WFS_IDC_RETAIN не поддерживается. Команда завершится с результатом WFS_ERR_INVALID_DATA.

lpwResetIn = WFS_IDC_EJECT: если чип активирован, то произойдет деактивация чипа. Если карта заблокирована, то произойдет разблокировка карты, после чего карту можно будет изъять.

При SWIPE_READ_MODE = 1 через 1 секунду после исполнения запроса будет выполнено:

  1. очищен буфер данных магнитной полосы + изменен статус карты fwMedia = WFS_IDC_MEDIANOTPRESENT.

  2. отправлено событие WFS_SRVE_IDC_MEDIAREMOVED.

lpwResetIn = WFS_IDC_NOACTION: состояние чипа и защелки останется неизменным после выполнения аппаратного сброса.

lpwResetIn = NULL: Будет произведен аппаратный сброс аналогичный сбросу с параметром WFS_IDC_NOACTION.

WFS_CMD_IDC_CHIP_IO

Назначение команды: чтение данных чипа.

Валидация контекста исполнения:

  • SWIPE_READ_MODE = 0. Иначе WFS_ERR_UNSUPP_COMMAND;

  • сервис в состоянии готовности. Иначе WFS_ERR_DEV_NOT_READY;

  • карта внутри устройства. Иначе WFS_ERR_IDC_NOMEDIA;

  • карта должна иметь чип, поддерживающий интерфейс ISO7816. Иначе WFS_ERR_IDC_INVALIDMEDIA;

  • чип должен быть активирован. Иначе WFS_ERR_IDC_ATRNOTOBTAINED.

Валидация входных данных:

  • wChipProtocol – CEN/XFS 3.02: WFS_IDC_CHIPT0, WFS_IDC_CHIPT1; CEN/XFS 3.10: WFS_IDC_CHIPT0, WFS_IDC_CHIPT1, WFS_IDC_CHIP_PROTOCOL_NOT_REQUIRED;

  • lpbChipData – команда, отправляемая на чип, должна быть не менее 4-х байт.

WFS_CMD_IDC_CHIP_POWER

Назначение команды: активация/деактивация чипа.

Валидация контекста исполнения:

  • SWIPE_READ_MODE = 0. Иначе WFS_ERR_UNSUPP_COMMAND;

  • сервис в состоянии готовности;

  • карта внутри устройства.

Правила активации/деактивации чипов:

  1. WFS_IDC_CHIPPOWERCOLD возможно всегда.

  2. WFS_IDC_CHIPPOWERWARM возможно только на активированном чипе, в противном случае команда завершится с результатом WFS_ERR_IDC_INVALIDMEDIA.

  3. WFS_IDC_CHIPPOWEROFF возможно только на активированном чипе для его деактивации или если чип уже деактивирован (в данном случае команда будет иметь холостой характер), но он есть. В противном случае команда завершится с результатом WFS_ERR_IDC_INVALIDMEDIA.

Поддеживаются события

CEN/XFS 3.02, 3.10:

  • WFS_EXEE_IDC_MEDIAINSERTED – событие генерируется только в рамках исполнения команды WFS_CMD_IDC_READ_RAW_DATA.

  • WFS_SRVE_IDC_MEDIAREMOVED – событие генерируется либо только после того, как карта была вставлена в момент исполнения команды WFS_CMD_IDC_READ_RAW_DATA, либо после выполнения команд WFS_CMD_IDC_EJECT_CARD или WFS_CMD_IDC_RESET с параметром WFS_IDC_EJECT. При SWIPE_READ_MODE = 1 событие генерируется через 1 секунду после выполнения команд WFS_CMD_IDC_EJECT_CARD или WFS_CMD_IDC_RESET с параметром WFS_IDC_EJECT.

  • WFS_EXEE_IDC_INVALIDMEDIA.

  • WFS_SRVE_IDC_MEDIADETECTED.

CEN/XFS 3.10:

  • WFS_EXEE_IDC_INSERTCARD.

Управление световой индикацией

Сервис-провайдер управляет как внешней световой индикацией, через модуль специальной электроники (SIU), так и встроенной в устройство индикацией.

Состояние устройства

Внешний индикатор (SIU)

Встроенный индикатор

Ожидание вставки карты

Медленное моргание WFS_SIU_SLOW_FLASH

Синий непрерывный свет

Ожидание изъятия карты

Быстрое моргание WFS_SIU_QUICK_FLASH

Быстрое моргание синим

Холостой режим; карта вставлена

Погашен WFS_SIU_OFF

Красный непрерывный свет

Коды ошибок оборудования

Таблица 61. Коды ошибок оборудования CRT288-K001

ERROR CODE

DESCRIPTION

CLEAR

0x4E

Fail

-101 open the wrong interface

-1 other error

-2 parameter error when call the function

-3 communication data error

-4 time out of insertion or error of pull out the card

-5 user cancel

0x10

Cancel by Lower Machine (NAK)

0x20

Communication Error

0x30

Cancel by HOST machine (EOT)

Подробное описание статусов устройств приведено в документе «Specification. CRT-288-K001».