15 #ifndef CI_PROTOCOL_MBOX_H_
16 #define CI_PROTOCOL_MBOX_H_
32 #ifdef MBOX_ENABLE_CRC
33 #define MBOX_CRC_BYTE_SIZE (2)
35 #define MBOX_CRC_BYTE_SIZE (0)
44 #define ISF_APP_ID_NULL (0)
54 #define MB_HOST_APP_ID pciMailboxes[0]
55 #define MB_HOST_CMD pciMailboxes[1]
56 #define MB_HOST_OFFSET pciMailboxes[2]
57 #define MB_HOST_COUNT pciMailboxes[3]
58 #define MB_HOST_CMD_SIZE(x) (GET_EXTENSION_BIT(x) == 0) ? 4 : 5 // Host command is 4 bytes normal mode, 6 is for extension mode, MB0-3
59 #define MB_HOST_OFFSET_EXT (uint16)((pciMailboxes[2] << 8) | pciMailboxes[3])
60 #define MB_HOST_COUNT_EXT pciMailboxes[4]
61 #define MB_HOST_WR_DATA_START (4)
64 #define MB_RESP_APP_ID pciMailboxes[0]
65 #define MB_RESP_STATUS_CC pciMailboxes[1]
66 #define MB_RESP_BYTES_XFER pciMailboxes[2]
67 #define MB_RESP_COUNT pciMailboxes[3]
68 #define MB_RESP_INDEX_APP_ID (0)
69 #define MB_RESP_INDEX_STATUS_CC (1)
70 #define MB_RESP_INDEX_BYTES_XFER (2)
71 #define MB_RESP_INDEX_COUNT (3)
73 #define MB_APP_RESP_SIZE (4) // App response is 4 bytes, MB0-3
74 #define MB_APP_RESP_DATA_START (4)
76 #define CI_STREAMING_MODE (1)
77 #define CI_NON_STREAMING_MODE (0)
88 #define CMD_PACKET_BITS (0x0000000f)
95 #define COCO_BIT (7) // Bit position (starting at 0)
96 #define COCO_BIT_MASK (1 << COCO_BIT)
101 #define EXTENSION_LENGTH_BIT (1) // Bit for 1 byte extension for offset and length
102 #define EXTENSION_LENGTH_BIT_BIT_MASK (1 << 7)
103 #define GET_EXTENSION_BIT(x) (((x) & EXTENSION_LENGTH_BIT_BIT_MASK )>> 7)
110 #define WR_CMD_RSHIFT (0)
111 #define WR_CMD_MASK (0xff) // b[6:0]
112 #define WR_CMD_ID_MASK (0x7f)
119 #define MAX_NUM_MAILBOXES (32)
128 #define FIRST_DATA_MAILBOX_NUM (4) // First 4 mailboxes (0-3) reserved for command packet
136 #define NUM_DATA_MAILBOXES (MAX_NUM_MAILBOXES-FIRST_DATA_MAILBOX_NUM)
144 #define FIRST_QR_MAILBOX_NUM (4) // First 4 mailboxes (0-3) reserved for command packet
151 #define QR_MAILBOX_MASK ((uint32)0xffffffff << FIRST_QR_MAILBOX_NUM)
160 #define NUM_QR_MAILBOXES (MAX_NUM_MAILBOXES-FIRST_QR_MAILBOX_NUM)
163 #if (FIRST_QR_MAILBOX_NUM < FIRST_DATA_MAILBOX_NUM)
164 ERROR: Quick read starting mailbox cannot be less than first data mailbox!
225 #define CI_CMD_DEBUG_LOOPBACK (120) // Must be greater than CI_CMD_LAST
232 #define ci_get_wr_appid() ((uint8)MB_HOST_APP_ID)
233 #define ci_get_wr_appid() ((uint8)MB_HOST_APP_ID)
234 #define ci_get_wr_cmd() ((uint8)((MB_HOST_CMD & WR_CMD_MASK) >> WR_CMD_RSHIFT))
235 #define ci_get_wr_cmdId() ((uint8)((MB_HOST_CMD & WR_CMD_ID_MASK) >> WR_CMD_RSHIFT))
236 #define ci_get_wr_offset(x) (GET_EXTENSION_BIT(x) == 0)? (uint16)(MB_HOST_OFFSET) : (uint16)(MB_HOST_OFFSET_EXT)
237 #define ci_get_wr_cnt(x) (GET_EXTENSION_BIT(x) == 0)? (uint16)(MB_HOST_COUNT) : (uint16)(MB_HOST_COUNT_EXT)
238 #define ci_get_first_mailbox(x) (GET_EXTENSION_BIT(x) == 0)? 4 : 5
243 #define qr_config_clear() { \
244 int iii = MAX_NUM_MAILBOXES-1; \
247 ciRegisters.qr_config[iii].appId = 0; \
248 ciRegisters.qr_config[iii].byte_id = 0; \
249 } while(--iii >= 0); \
254 #define ci_insert_crc(insert_offset, crc16_value, pBuf) { \
255 pBuf[insert_offset + 0] = (uint8)((uint16)(crc16_value & 0xff00) >> 8);\
256 pBuf[insert_offset + 1] = (uint8)(crc16_value & 0xff);\
265 #endif // CI_PROTOCOL_MBOX_H_
unsigned char uint8
This defines uint8 as unsigned char.
Command Interpreter Registers Structure. Contains all CI registers. .
#define NUM_QR_MAILBOXES
Maximum number of mailboxes available on this system for quick read. Note that not all mailboxes de...
unsigned long uint32
This defines uint32 as unsigned long.
This structure holds the quick read configuration for all applicable mailboxes. The first 4 mailbox...
Command Interpreter Control Register Structure. .
isf_status_t ci_mbox_init(uint8 aprotocolID, void *apInitData)
Main ISF header file. Contains code common to all ISF components.
int32 isf_status_t
ISF return status type.
isf_status_t ci_protocol_CB_mbox(uint32 anumBytes, uint8 *apSrc, uint32 *apnumDestBytes, uint8 *apDest)