void AppLayerTest::SendUp(FunctionCodes aCode, bool aFIR, bool aFIN, bool aCON, bool aUNS, int aSEQ) { APDU f; f.SetFunction(aCode); f.SetControl(aFIR, aFIN, aCON, aUNS, aSEQ); lower.SendUp(f.GetBuffer(), f.Size()); }
void ACS_Idle::Send(AppLayerChannel* c, APDU& arAPDU, size_t aNumRetry) { AppControlField acf = arAPDU.GetControl(); FunctionCodes func = arAPDU.GetFunction(); acf.SEQ = (acf.FIR && func == FC_RESPONSE) ? c->Sequence() : c->IncrSequence(); arAPDU.SetControl(acf); c->ChangeState(NextState(c, arAPDU.GetFunction(), acf.CON)); c->SetRetry(aNumRetry); c->QueueSend(arAPDU); }
bool AppLayerTest::CheckSentAPDU(FunctionCodes aCode, bool aFIR, bool aFIN, bool aCON, bool aUNS, int aSEQ) { APDU f; f.SetFunction(aCode); f.SetControl(aFIR, aFIN, aCON, aUNS, aSEQ); if(aCode == FC_UNSOLICITED_RESPONSE || aCode == FC_RESPONSE) { IINField iin; f.SetIIN(iin); } bool ret = lower.BufferEquals(f.GetBuffer(), f.Size()); if(ret) lower.ClearBuffer(); return ret; }