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 секунду после исполнения запроса будет выполнено:
очищен буфер данных магнитной полосы + изменен статуса карты fwMedia = WFS_IDC_MEDIANOTPRESENT.
отправлено событие 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 секунду после исполнения запроса будет выполнено:
очищен буфер данных магнитной полосы + изменен статус карты fwMedia = WFS_IDC_MEDIANOTPRESENT.
отправлено событие 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;
сервис в состоянии готовности;
карта внутри устройства.
Правила активации/деактивации чипов:
WFS_IDC_CHIPPOWERCOLD возможно всегда.
WFS_IDC_CHIPPOWERWARM возможно только на активированном чипе, в противном случае команда завершится с результатом WFS_ERR_IDC_INVALIDMEDIA.
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 |
Красный непрерывный свет |
Коды ошибок оборудования¶
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».