@@ -22,17 +22,44 @@ void play_halfbit(bool value, MagSetting* setting) {
2222 switch (setting -> tx ) {
2323 case MagTxStateRFID :
2424 furi_hal_gpio_write (RFID_PIN_OUT , value );
25+ /*furi_hal_gpio_write(RFID_PIN_OUT, !value);
26+ furi_hal_gpio_write(RFID_PIN_OUT, value);
27+ furi_hal_gpio_write(RFID_PIN_OUT, !value);
28+ furi_hal_gpio_write(RFID_PIN_OUT, value);*/
2529 break ;
2630 case MagTxStateGPIO :
2731 furi_hal_gpio_write (GPIO_PIN_A , value );
2832 furi_hal_gpio_write (GPIO_PIN_B , !value );
2933 break ;
3034 case MagTxStatePiezo :
3135 furi_hal_gpio_write (& gpio_speaker , value );
36+ /*furi_hal_gpio_write(&gpio_speaker, !value);
37+ furi_hal_gpio_write(&gpio_speaker, value);
38+ furi_hal_gpio_write(&gpio_speaker, !value);
39+ furi_hal_gpio_write(&gpio_speaker, value);*/
40+
3241 break ;
3342 case MagTxStateLF_P :
3443 furi_hal_gpio_write (RFID_PIN_OUT , value );
3544 furi_hal_gpio_write (& gpio_speaker , value );
45+
46+ /* // Weaker but cleaner signal
47+ if(value) {
48+ furi_hal_gpio_write(RFID_PIN_OUT, value);
49+ furi_hal_gpio_write(&gpio_speaker, value);
50+ furi_delay_us(10);
51+ furi_hal_gpio_write(RFID_PIN_OUT, !value);
52+ furi_hal_gpio_write(&gpio_speaker, !value);
53+ } else {
54+ furi_delay_us(10);
55+ }*/
56+
57+ /*furi_hal_gpio_write(RFID_PIN_OUT, value);
58+ furi_hal_gpio_write(&gpio_speaker, value);
59+ furi_hal_gpio_write(RFID_PIN_OUT, !value);
60+ furi_hal_gpio_write(&gpio_speaker, !value);
61+ furi_hal_gpio_write(RFID_PIN_OUT, value);
62+ furi_hal_gpio_write(&gpio_speaker, value);*/
3663 break ;
3764 case MagTxStateNFC :
3865 // turn on for duration of half-bit? or "blip" the field on / off?
@@ -269,7 +296,11 @@ void mag_spoof(Mag* mag) {
269296 data3 , (uint8_t * )bits_t3_manchester , (uint8_t * )bits_t3_raw , bitlen [2 ], sublen [2 ]);
270297
271298 if (furi_log_get_level () >= FuriLogLevelDebug ) {
272- printf ("Manchester bitcount: T1: %d, T2: %d\r\n" , bits_t1_count , bits_t2_count );
299+ printf (
300+ "Manchester bitcount: T1: %d, T2: %d, T3: %d\r\n" ,
301+ bits_t1_count ,
302+ bits_t2_count ,
303+ bits_t3_count );
273304 printf ("T1 raw: " );
274305 for (int i = 0 ; i < bits_t1_count / 16 ; i ++ ) printf ("%02x " , bits_t1_raw [i ]);
275306 printf ("\r\nT1 manchester: " );
@@ -293,7 +324,7 @@ void mag_spoof(Mag* mag) {
293324 FURI_CRITICAL_ENTER ();
294325 for (uint16_t i = 0 ; i < (ZERO_PREFIX * 2 ); i ++ ) {
295326 // is this right?
296- bit ^= 0xFF ;
327+ if (!!( i % 2 )) bit ^= 1 ;
297328 play_halfbit (bit , setting );
298329 furi_delay_us (setting -> us_clock );
299330 }
@@ -303,7 +334,7 @@ void mag_spoof(Mag* mag) {
303334
304335 if ((setting -> track == MagTrackStateOneAndTwo ))
305336 for (uint16_t i = 0 ; i < (ZERO_BETWEEN * 2 ); i ++ ) {
306- bit ^= 0xFF ;
337+ if (!!( i % 2 )) bit ^= 1 ;
307338 play_halfbit (bit , setting );
308339 furi_delay_us (setting -> us_clock );
309340 }
@@ -319,7 +350,7 @@ void mag_spoof(Mag* mag) {
319350 play_track ((uint8_t * )bits_t3_manchester , bits_t3_count , setting , false);
320351
321352 for (uint16_t i = 0 ; i < (ZERO_SUFFIX * 2 ); i ++ ) {
322- bit ^= 0xFF ;
353+ if (!!( i % 2 )) bit ^= 1 ;
323354 play_halfbit (bit , setting );
324355 furi_delay_us (setting -> us_clock );
325356 }
0 commit comments