frux-c 2 лет назад
Родитель
Сommit
440ac1bd6d
2 измененных файлов с 7 добавлено и 10 удалено
  1. 5 5
      uhf_module.c
  2. 2 5
      uhf_worker.c

+ 5 - 5
uhf_module.c

@@ -126,10 +126,11 @@ char* m100_get_manufacturers(M100Module* module) {
 }
 
 M100ResponseType m100_single_poll(M100Module* module, UHFTag* uhf_tag) {
-    setup_and_send_rx(module, (uint8_t*)&CMD_SINGLE_POLLING.cmd[0], CMD_SINGLE_POLLING.length);
+    M100ResponseType rp_type =
+        setup_and_send_rx(module, (uint8_t*)&CMD_SINGLE_POLLING.cmd[0], CMD_SINGLE_POLLING.length);
+    if(rp_type != M100SuccessResponse) return rp_type;
     uint8_t* data = buffer_get_data(module->buf);
     size_t length = buffer_get_size(module->buf);
-    if(length <= 8 && data[2] == 0xFF) return M100NoTagResponse;
     uint16_t pc = data[6];
     uint16_t crc = 0;
     // mask out epc length from protocol control
@@ -233,8 +234,8 @@ M100ResponseType m100_read_label_data_storage(
     // calc checksum
     cmd[cmd_length - 2] = checksum(cmd + 1, cmd_length - 3);
 
-    while(setup_and_send_rx(module, cmd, cmd_length) != M100SuccessResponse) {
-    }
+    M100ResponseType rp_type = setup_and_send_rx(module, cmd, cmd_length);
+    if(rp_type != M100SuccessResponse) return rp_type;
 
     uint8_t* data = buffer_get_data(module->buf);
 
@@ -357,7 +358,6 @@ bool m100_set_working_region(M100Module* module, WorkingRegion region) {
     return true;
 }
 
-
 bool m100_set_transmitting_power(M100Module* module, uint16_t power) {
     size_t length = CMD_SET_TRANSMITTING_POWER.length;
     uint8_t cmd[length];

+ 2 - 5
uhf_worker.c

@@ -26,7 +26,7 @@ UHFTag* send_polling_command(UHFWorker* uhf_worker) {
 }
 
 UHFWorkerEvent read_bank_till_max_length(UHFWorker* uhf_worker, UHFTag* uhf_tag, BankType bank) {
-    unsigned int retry = 3, word_low = 0, word_high = 64;
+    unsigned int word_low = 0, word_high = 64;
     unsigned int word_size;
     M100ResponseType status;
     do {
@@ -38,11 +38,8 @@ UHFWorkerEvent read_bank_till_max_length(UHFWorker* uhf_worker, UHFTag* uhf_tag,
             word_low = word_size + 1;
         } else if(status == M100MemoryOverrun) {
             word_high = word_size - 1;
-        } else if(status == M100NoTagResponse) {
-            retry--;
         }
-    } while(retry);
-    if(!retry) return UHFWorkerEventFail;
+    } while(true);
     return UHFWorkerEventSuccess;
 }