jolly has uploaded this change for review.
CCID: Check if reader handles Abort correctly
This test fails with osmo-ccid-firmware, because it is not yet
implemented.
Change-Id: Iebe97e73497b8468ebf08faf2c4db700fc76997f
---
M ccid/CCID_Tests.ttcn
1 file changed, 53 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/06/42806/1
diff --git a/ccid/CCID_Tests.ttcn b/ccid/CCID_Tests.ttcn
index 6d4d6c9..a9d640e 100644
--- a/ccid/CCID_Tests.ttcn
+++ b/ccid/CCID_Tests.ttcn
@@ -803,6 +803,58 @@
f_start_and_wait();
}
+/* The SIM transfer is aborted. */
+private function f_TC_abort() runs on CardemSlot_CT
+{
+ var octetstring req := c_SIM_READ_BINARY;
+ var CCID_PDU ccid_pdu;
+
+ /* We need to emulate a SIM that does not respond, so we can be sure
+ * that the reader is still waiting while we abort.
+ */
+ f_cardem_manager();
+
+ f_ccid_power_on(CCID_PWRSEL_3V0);
+
+ /* Send a request towards reader. */
+ CCID.send(ts_CCID_XfrBlock(g_slot_nr, req, 0));
+ /* Receive the request by SIM. */
+ f_cardem_receive(tr_SIMTRACE_CEMU_RX_DATA(?, req));
+ /* Transmit NULL procedure byte by SIM. */
+ f_cardem_transmit(ts_SIMTRACE_CEMU_TX_DATA(ts_CardEmu_DataFlags(pb_and_tx := true, final := true),
+ req[1]));
+ /* Send abort toward reader. */
+ CCID.send(ts_CCID_Abort(g_slot_nr, 0));
+ /* Eat the possible 'DataBlock' that will be received after timeout. */
+ timer T := 1.0;
+ T.start;
+ alt {
+ [] CCID.receive(tr_CCID_DataBlock(g_slot_nr, ?, ?, ?)) {
+ log("Eating 'DataBlock'.");
+ repeat;
+ }
+ [] T.timeout { }
+ }
+ /* Receive the response from reader. */
+ ccid_pdu := f_ccid_receive(tr_CCID_SlotStatus(g_slot_nr, ?, ?, ?));
+ if (ccid_pdu.hdr_in.bStatus.bmCommandStatus != CCID_CMD_STATUS_OK) {
+ setverdict(fail, "Unexpected Response");
+ mtc.stop;
+ }
+
+ /* Stop simtrace emulation, to prevent race condition. */
+ vc_Cardem.stop;
+ vc_Cardem.done;
+}
+testcase TC_abort() runs on Test_CT
+{
+ f_init();
+
+ f_start_handler(refers(f_TC_abort), mp_simtrace_slot, true);
+
+ f_start_and_wait();
+}
+
/* TODO */
@@ -1205,6 +1257,7 @@
execute( TC_256_bytes_response() );
execute( TC_null_procedure_byte() );
execute( TC_255_bytes_request() );
+ execute( TC_abort() );
/* error handling */
execute( TC_inval_slot() );
To view, visit change 42806. To unsubscribe, or for help writing mail filters, visit settings.