int YMODEMCLASS::WaitFinalACK (void) { int rVal ; rVal = WaitACK() ; if (rVal==FT_FILEEND) { rVal = EndOrContinueSendBinaryFile() ; } return(rVal); }
//**内部函数.输出数据字节 入口:B=数据 static void writebyte(UINT8 wdata) { UINT8 i; for(i=0;i<8;i++) { if(wdata&0x80) gpio_set(SDA_PORT,1); else gpio_set(SDA_PORT,0); wdata<<=1; gpio_set(SCL_PORT,1); Delay(); gpio_set(SCL_PORT,0); } WaitACK(); }
int YMODEMCLASS::ProcessBufferData (void) { int rVal = FT_SUCCESS ; switch (fltr_state) { case YMODEM_INIT: rVal = WaitFirstChar () ; break; case WAIT_ACK: rVal = WaitACK() ; break; case WAIT_FINAL_ACK : rVal = WaitFinalACK () ; break; case SEND_INIT: SendInitChar () ; break; case WAIT_SOH: rVal = WaitSOH () ; break; case WAIT_SEQ: rVal = WaitSEQChar() ; break; case WAIT_DATA: ReceiveDataBlock() ; break; case WAIT_CHECK: rVal = CheckDataBlock () ; break; } if (rVal !=FT_SUCCESS) { KillTimerEvent (oiFT, setPollTimer) ; KillTimerEvent (oiFT, setDataTimer) ; ActiveIdleEvent (oiFT) ; if (rVal==FT_FILEEND) AEvtPostSignalAtMark (oiFT, 0) ; else AEvtPostSignalAtMark (oiFT, 6) ; } return(rVal); }