Zachary Weiss 3 лет назад
Родитель
Сommit
376436cc52
2 измененных файлов с 13 добавлено и 2 удалено
  1. 9 1
      README.md
  2. 4 1
      scenes/mag_scene_emulate_test.c

+ 9 - 1
README.md

@@ -7,5 +7,13 @@ Courses of action to try in the event the LF coil signal is too weak:
 - Attempt downstream modulation techniques, in addition to upstream, like the LF RFID worker does when writing
 - Introduce a subcarrier at ~125kHz, and OOK modulate it at the desired freq of bits (~4kHz)
 - Implement using the timer system, rather than direct-writing to pins
-- Use the NFC (HF RFID) coil instead of or in addition to the LF coil
+- Use the NFC (HF RFID) coil instead of or in addition to the LF coil (this is promising in my mind; Samsung Wallet's discontinued magstripe emulation would've been over their NFC coil, most likely)
 - Scrap all this and stick to using an external module for TX (could likely simplify to just a resistor and some coiled wire, rather than the full H-bridge build)
+
+Other misc things to investigate / build:
+- File format, manual add, saving / loading
+- Ideal timing / speed
+- Precomputing bit output, and then sending ("RedSpoof" by devBioS does this, as they say they had timing issues when computing the bits live)
+- Reverse-track emulate?
+- Tuning of parameters like pre-signal zeros?
+- "Interpacket delay" like the RedSpoof implementation?

+ 4 - 1
scenes/mag_scene_emulate_test.c

@@ -2,7 +2,7 @@
 
 #define PIN_A 0
 #define PIN_B 1      // currently unused
-#define CLOCK_US 250 // typically set between 200-500us
+#define CLOCK_US 240 // typically set between 200-500us
 #define TEST_STR "%B123456781234567^LASTNAME/FIRST^YYMMSSSDDDDDDDDDDDDDDDDDDDDDDDDD?;1234567812?"
 // TODO: better way of setting temp test str,
 //       text wrapping on screen? (Will be relevant for any loaded data too)
@@ -167,9 +167,12 @@ bool mag_scene_emulate_test_on_event(void *context, SceneManagerEvent event) {
             // Hardcoding a test string for the time being, while we debug/improve LF RFID TX
             FuriString *v = furi_string_alloc();
             furi_string_set_str(v, test_str);
+
+            // blink led while spoofing
             notification_message(mag->notifications, &sequence_blink_start_magenta);
             mag_spoof(v, 0);
             notification_message(mag->notifications, &sequence_blink_stop);
+
             furi_string_free(v);
         } else if (event.event == GuiButtonTypeLeft) {
             consumed = true;