@@ -2729,26 +2729,29 @@ void SendRawCommand15693(iso15_raw_cmd_t *packet) {
2729
2729
} else {
2730
2730
2731
2731
// if tag answers with an error code, it don't care about EOF packet
2732
- if (recvlen ) {
2733
- recvlen = MIN (recvlen , ISO15693_MAX_RESPONSE_LENGTH );
2734
- reply_ng (CMD_HF_ISO15693_COMMAND , res , buf , recvlen );
2735
- }
2736
-
2737
- // looking at the first byte of the RAW bytes to determine Subcarrier, datarate, request option
2738
- bool fsk = ((packet -> raw [0 ] & ISO15_REQ_SUBCARRIER_TWO ) == ISO15_REQ_SUBCARRIER_TWO );
2739
- bool recv_speed = ((packet -> raw [0 ] & ISO15_REQ_DATARATE_HIGH ) == ISO15_REQ_DATARATE_HIGH );
2732
+ // normal tag answer without Option_flag also processed here
2733
+ if (recvlen || !request_answer ) {
2734
+ if (request_answer || read_respone ) {
2735
+ recvlen = MIN (recvlen , ISO15693_MAX_RESPONSE_LENGTH );
2736
+ reply_ng (CMD_HF_ISO15693_COMMAND , res , buf , recvlen );
2737
+ } else {
2738
+ reply_ng (CMD_HF_ISO15693_COMMAND , PM3_SUCCESS , NULL , 0 );
2739
+ }
2740
+ } else {
2741
+ // looking at the first byte of the RAW bytes to determine Subcarrier, datarate, request option
2742
+ bool fsk = ((packet -> raw [0 ] & ISO15_REQ_SUBCARRIER_TWO ) == ISO15_REQ_SUBCARRIER_TWO );
2743
+ bool recv_speed = ((packet -> raw [0 ] & ISO15_REQ_DATARATE_HIGH ) == ISO15_REQ_DATARATE_HIGH );
2740
2744
2741
- // send a single EOF to get the tag response
2742
- if (request_answer ) {
2745
+ // send a single EOF to get the tag response
2743
2746
start_time = eof_time + DELAY_ISO15693_VICC_TO_VCD_READER ;
2744
2747
res = SendDataTagEOF ((read_respone ? buf : NULL ), sizeof (buf ), start_time , ISO15693_READER_TIMEOUT , & eof_time , fsk , recv_speed , & recvlen );
2745
- }
2746
2748
2747
- if (read_respone ) {
2748
- recvlen = MIN (recvlen , ISO15693_MAX_RESPONSE_LENGTH );
2749
- reply_ng (CMD_HF_ISO15693_COMMAND , res , buf , recvlen );
2750
- } else {
2751
- reply_ng (CMD_HF_ISO15693_COMMAND , PM3_SUCCESS , NULL , 0 );
2749
+ if (read_respone ) {
2750
+ recvlen = MIN (recvlen , ISO15693_MAX_RESPONSE_LENGTH );
2751
+ reply_ng (CMD_HF_ISO15693_COMMAND , res , buf , recvlen );
2752
+ } else {
2753
+ reply_ng (CMD_HF_ISO15693_COMMAND , PM3_SUCCESS , NULL , 0 );
2754
+ }
2752
2755
}
2753
2756
}
2754
2757
0 commit comments