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"