Sfoglia il codice sorgente

Save SN to QR code file

Eric Betts 1 anno fa
parent
commit
112d1b690e
1 ha cambiato i file con 33 aggiunte e 0 eliminazioni
  1. 33 0
      sam_api.c

+ 33 - 0
sam_api.c

@@ -459,6 +459,38 @@ bool seader_sam_save_serial(Seader* seader, uint8_t* buf, size_t size) {
     return saved;
 }
 
+bool seader_sam_save_serial_QR(Seader* seader, uint8_t* buf, size_t size) {
+    SeaderCredential* cred = seader->credential;
+
+    const char* file_header = "QRCode";
+    const uint32_t file_version = 0;
+
+    bool saved = false;
+    FlipperFormat* file = flipper_format_file_alloc(cred->storage);
+    FuriString* temp_str;
+    temp_str = furi_string_alloc();
+
+    do {
+        storage_simply_mkdir(cred->storage, EXT_PATH("qrcodes"));
+        furi_string_printf(
+            temp_str, "%s/%s%s", EXT_PATH("qrcodes"), "seader_sam_serial", ".qrcode");
+
+        // Open file
+        if(!flipper_format_file_open_always(file, furi_string_get_cstr(temp_str))) break;
+        if(!flipper_format_write_header_cstr(file, file_header, file_version)) break;
+
+        if(!flipper_format_write_hex(file, "Message", buf, size)) break;
+        saved = true;
+    } while(false);
+
+    if(!saved) {
+        dialog_message_show_storage_error(cred->dialogs, "Can not save\nQR file");
+    }
+    furi_string_free(temp_str);
+    flipper_format_free(file);
+    return saved;
+}
+
 bool seader_parse_serial_number(Seader* seader, uint8_t* buf, size_t size) {
     memset(display, 0, sizeof(display));
     for(uint8_t i = 0; i < size; i++) {
@@ -467,6 +499,7 @@ bool seader_parse_serial_number(Seader* seader, uint8_t* buf, size_t size) {
 
     FURI_LOG_D(TAG, "Received serial: %s", display);
 
+    seader_sam_save_serial_QR(seader, buf, size);
     return seader_sam_save_serial(seader, buf, size);
 }