12 #if defined(CUBESIM) && defined(_DEBUG)
14 #define SE3_TRACE(msg) printf msg
16 #define SE3_TRACE(msg)
19 #define SE3_CONF_CRC 0
21 #define SE3_SET64(x, pos, val) do{ memcpy(((uint8_t*)(x))+pos, (void*)&(val), 8); }while(0)
22 #define SE3_SET32(x, pos, val) do{ memcpy(((uint8_t*)(x))+pos, (void*)&(val), 4); }while(0)
23 #define SE3_SET16(x, pos, val) do{ memcpy(((uint8_t*)(x))+pos, (void*)&(val), 2); }while(0)
24 #define SE3_GET64(x, pos, val) do{ memcpy((void*)&(val), ((uint8_t*)(x))+pos, 8); }while(0)
25 #define SE3_GET32(x, pos, val) do{ memcpy((void*)&(val), ((uint8_t*)(x))+pos, 4); }while(0)
26 #define SE3_GET16(x, pos, val) do{ memcpy((void*)&(val), ((uint8_t*)(x))+pos, 2); }while(0)
28 #define SE3_BIT_SET(val, n) do{ val |= (1 << (n)); }while(0)
29 #define SE3_BIT_CLEAR(val, n) do{ val &= ~(1 << (n)); }while(0)
30 #define SE3_BIT_TEST(val, n) (val & (1<< (n)))
47 SE3_ERR_COMM = 0xF002,
48 SE3_ERR_BUSY = 0xF003,
49 SE3_ERR_STATE = 0xF004,
51 SE3_ERR_PARAMS = 0xF006,
56 SE3_CMD0_FACTORY_INIT = 1,
63 SE3_CMDFLAG_ENCRYPT = (1 << 15),
64 SE3_CMDFLAG_SIGN = (1 << 14)
69 SE3_REQ_SIZE_HEADER = 16,
70 SE3_REQDATA_SIZE_HEADER = 4,
71 SE3_REQ_SIZE_DATA = SE3_COMM_BLOCK - SE3_REQ_SIZE_HEADER,
72 SE3_REQDATA_SIZE_DATA = SE3_COMM_BLOCK - SE3_REQDATA_SIZE_HEADER,
74 SE3_REQ_OFFSET_CMD = 0,
75 SE3_REQ_OFFSET_CMDFLAGS = 2,
76 SE3_REQ_OFFSET_LEN = 4,
77 SE3_REQ_OFFSET_CMDTOKEN = 6,
78 SE3_REQ_OFFSET_PADDING = 10,
79 SE3_REQ_OFFSET_CRC = 14,
80 SE3_REQ_OFFSET_DATA = 16,
82 SE3_REQDATA_OFFSET_CMDTOKEN = 0,
83 SE3_REQDATA_OFFSET_DATA = 4,
85 SE3_REQ_MAX_DATA = ((SE3_COMM_BLOCK-SE3_REQ_SIZE_HEADER) + (SE3_COMM_N-2)*(SE3_COMM_BLOCK-SE3_REQDATA_SIZE_HEADER) - 8)
90 SE3_RESP_SIZE_HEADER = 16,
91 SE3_RESPDATA_SIZE_HEADER = 4,
92 SE3_RESP_SIZE_DATA = SE3_COMM_BLOCK - SE3_REQ_SIZE_HEADER,
93 SE3_RESPDATA_SIZE_DATA = SE3_COMM_BLOCK - SE3_REQDATA_SIZE_HEADER,
95 SE3_RESP_OFFSET_READY = 0,
96 SE3_RESP_OFFSET_STATUS = 2,
97 SE3_RESP_OFFSET_LEN = 4,
98 SE3_RESP_OFFSET_CMDTOKEN = 6,
99 SE3_RESP_OFFSET_CRC = 14,
101 SE3_RESPDATA_OFFSET_CMDTOKEN = 0,
102 SE3_RESPDATA_OFFSET_DATA = 4,
104 SE3_RESP_MAX_DATA = ((SE3_COMM_BLOCK-SE3_REQ_SIZE_HEADER) + (SE3_COMM_N-2)*(SE3_COMM_BLOCK-SE3_REQDATA_SIZE_HEADER) - 8)
109 SE3_DISCO_OFFSET_MAGIC = 0,
110 SE3_DISCO_OFFSET_SERIAL = 32,
111 SE3_DISCO_OFFSET_HELLO = 2*32,
112 SE3_DISCO_OFFSET_STATUS = 3*32
117 #if (SE3_REQ_MAX_DATA % 16 != 0)
118 #error "SE3_REQ_MAX_DATA is not a multiple of 16"
120 #if (SE3_RESP_MAX_DATA % 16 != 0)
121 #error "SE3_RESP_MAX_DATA is not a multiple of 16"