|
发表于 2012-9-17 13:48:13
|
显示全部楼层
case SYNCHRONOUS:
msTicks = 0;
while(msTicks < 10); //wait 800ms
SysRam[0] = 0xFF; //send sync byte
CommPutChar(SysRam, 1);
msTicks = 0;
while(msTicks < 2); //wait 20ms
State = START_IDPS;
break;
//====================================================
// StartIDPS
//
case START_IDPS:
SysRam[0] = 0xFF;
SysRam[1] = 0x55;
SysRam[2] = 0x04;
SysRam[3] = 0x00;
SysRam[4] = 0x38;
SysRam[5] = 0x03;
SysRam[6] = 0xE9;
SysRam[7] = 0xD8;
CommPutChar(SysRam, 8);
State = START_IDPS_ACK;
break;
case START_IDPS_ACK:
AppleOutput();
if (SysRam[4]==0x02 && SysRam[7]==0x00) Error = FALSE; //Apple device respond ACK
else Error = TRUE;
if (Error==TRUE) State = START_IDPS;
else State = REQUEST_LINGO_PROTOCOL_VERSION;
#ifdef __DBG__
printf("\r\n");
printf("\r\nACKStartIDPS:\r");
for (i=0; i<PacketLengh+4; i++) {
if (i%16 == 0) printf("\r\n");
printf("0x%0.2X ", (int)SysRam[i]);
}
#endif
break; |
|