^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * TODO:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * - add smart card reader support for Conditional Access (CA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * Card reader in Anysee is nothing more than ISO 7816 card reader.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * There is no hardware CAM in any Anysee device sold.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * In my understanding it should be implemented by making own module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * for ISO 7816 card reader, like dvb_ca_en50221 is implemented. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * module registers serial interface that can be used to communicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * with any ISO 7816 smart card.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * Any help according to implement serial smart card reader support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * is highly welcome!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #ifndef _DVB_USB_ANYSEE_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define _DVB_USB_ANYSEE_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define DVB_USB_LOG_PREFIX "anysee"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #include "dvb_usb.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #include <media/dvb_ca_en50221.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) enum cmd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) CMD_I2C_READ = 0x33,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) CMD_I2C_WRITE = 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) CMD_REG_READ = 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) CMD_REG_WRITE = 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) CMD_STREAMING_CTRL = 0x12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) CMD_LED_AND_IR_CTRL = 0x16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) CMD_GET_IR_CODE = 0x41,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) CMD_GET_HW_INFO = 0x19,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) CMD_SMARTCARD = 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) CMD_CI = 0x37,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) struct anysee_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) u8 buf[64];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) u8 seq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) u8 hw; /* PCB ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define ANYSEE_I2C_CLIENT_MAX 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) struct i2c_client *i2c_client[ANYSEE_I2C_CLIENT_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) u8 fe_id:1; /* frondend ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) u8 has_ci:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) u8 has_tda18212:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) u8 ci_attached:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) struct dvb_ca_en50221 ci;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) unsigned long ci_cam_ready; /* jiffies */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define ANYSEE_HW_507T 2 /* E30 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define ANYSEE_HW_507CD 6 /* E30 Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define ANYSEE_HW_507DC 10 /* E30 C Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define ANYSEE_HW_507SI 11 /* E30 S2 Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define ANYSEE_HW_508TC 18 /* E7 TC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define ANYSEE_HW_508S2 19 /* E7 S2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define ANYSEE_HW_508T2C 20 /* E7 T2C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define ANYSEE_HW_508PTC 21 /* E7 PTC Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define ANYSEE_HW_508PS2 22 /* E7 PS2 Plus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define REG_IOA 0x80 /* Port A (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define REG_IOB 0x90 /* Port B (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define REG_IOC 0xa0 /* Port C (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define REG_IOD 0xb0 /* Port D (bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define REG_IOE 0xb1 /* Port E (NOT bit addressable) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #define REG_OEA 0xb2 /* Port A Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define REG_OEB 0xb3 /* Port B Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define REG_OEC 0xb4 /* Port C Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define REG_OED 0xb5 /* Port D Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define REG_OEE 0xb6 /* Port E Output Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) * USB API description (reverse engineered)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) ***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) Transaction flow:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) BULK[00001] >>> REQUEST PACKET 64 bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) General reply packet(s) are always used if not own reply defined.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) | 00-63 | GENERAL REPLY PACKET #1 (PREVIOUS REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) | 00 | reply data (if any) from previous transaction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) | | Just same reply packet as returned during previous transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) | | Needed only if reply is missed in previous transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) | | Just skip normally.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) | 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) | 00 | reply data (if any)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) | 00-63 | I2C WRITE REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) | 00 | 0x31 I2C write command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) | 01 | i2c address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) | 02 | data length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) | | 0x02 (for typical I2C reg / val pair)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) | 03 | 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) | 04- | data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) | -59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) | 00-63 | I2C READ REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) | 00 | 0x33 I2C read command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) | 01 | i2c address + 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) | 02 | register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) | 03 | 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) | 04 | 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) | 05 | data length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) | 06-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) | 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) | 00 | 0xb1 register write command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) | 01-02 | register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) | 03 | 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) | 04 | value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) | 05-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) | 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) | 00 | 0xb0 register read command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) | 01-02 | register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) | 03 | 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) | 04-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) | 00-63 | LED CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) | 00 | 0x16 LED and IR control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) | 01 | 0x01 (LED)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) | 03 | 0x00 blink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) | | 0x01 lights continuously
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) | 04 | blink interval
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) | | 0x00 fastest (looks like LED lights continuously)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) | | 0xff slowest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) | 05-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) | 00-63 | IR CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) | 00 | 0x16 LED and IR control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) | 01 | 0x02 (IR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) | 03 | 0x00 IR disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) | | 0x01 IR enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) | 04-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) | 00-63 | STREAMING CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) | 00 | 0x12 streaming control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) | 01 | 0x00 streaming disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) | | 0x01 streaming enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) | 02 | 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) | 03-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) | 00-63 | REMOTE CONTROL REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) | 00 | 0x41 remote control command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) | 00-63 | REMOTE CONTROL REPLY PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) | 00 | 0x00 code not received
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) | | 0x01 code received
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) | 01 | remote control code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) | 02-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) | 00-63 | GET HARDWARE INFO REQUEST PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) | 00 | 0x19 get hardware info command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) | 01-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) | 00-63 | GET HARDWARE INFO REPLY PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) | 00 | hardware id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) | 01-02 | firmware version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) | 03-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) | 00-63 | SMART CARD READER PACKET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) ============================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) | 00 | 0x34 smart card reader command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) | xx |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) | xx-59 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) | 60 | packet sequence number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) | 61-63 | don't care
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) ----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) */