求助,高手请进。。
#define ENDIAN_SWAP_WORD(x) (((x)>>8) | ((x)<<8))
typedef struct {
BYTE tRst; //5 bits
BYTE tRel; //7 bits
BYTE tSlw; //slew3[5:4], slew2[3:2], slew1[1:0]
BYTE tMsc; //pkdelay[4:3], pknum[2:1], autosw[0]
WORD vRst; //setting for V reset
WORD vRel; //setting for V release
WORD vBias; //setting for V bias
} SP_MR3001DESC;
BOOL spBEControl(BYTE cmd, VOID *pIn, BYTE flags) {
//According to different command, make different package!
BYTE size;
INT i;
BOOL res;
BYTE bMail[MAIL_SIZE];
res = SP_FALSE;
bMail[0] = OSDCMD_CONTROL;
bMail[1] = cmd;
switch(cmd) {
case SPCTLCMD_SETMR3001TIMING:
if (pIn) {
SP_MR3001DESC mr3001;
mr3001 = *(SP_MR3001DESC *)pIn;
mr3001.vBias = ENDIAN_SWAP_WORD(mr3001.vBias);
mr3001.vRst = ENDIAN_SWAP_WORD(mr3001.vRst);
mr3001.vRel = ENDIAN_SWAP_WORD(mr3001.vRel);
bMail[2] = flags;
*(SP_MR3001DESC *)&bMail[3] = mr3001;
size = 3 + sizeof(SP_MR3001DESC);
for (i = 0; i < MAIL_TRYS; i ++) { //try 3 times
res = halBESendMail(bMail, size);
if (res == SP_TRUE) break;
#if DEBUG_LEVEL >= 1
else printf("Send6 Mail error!");
#endif
}
return res;
}
break;
}
return res;
}
在调用涵数的SPCTLCMD_SETMR3001TIMING这个case时,bMail[3]的值为多少?
SP_MR3001DESC mr3001;
mr3001 = *(SP_MR3001DESC *)pIn;
mr3001.vBias = ENDIAN_SWAP_WORD(mr3001.vBias);
mr3001.vRst = ENDIAN_SWAP_WORD(mr3001.vRst);
mr3001.vRel = ENDIAN_SWAP_WORD(mr3001.vRel);
这个部分看不太明白,请各位指教。。