@@ -19,31 +19,8 @@ const int sublen[] = {32, 48, 48};
1919
2020uint8_t last_value = 2 ;
2121
22- const GpioPin * mag_gpio_enum_to_pin (MagSettingPin pin ) {
23- switch (pin ) {
24- case MagSettingPinA7 :
25- return & gpio_ext_pa7 ;
26- case MagSettingPinA6 :
27- return & gpio_ext_pa6 ;
28- case MagSettingPinA4 :
29- return & gpio_ext_pa4 ;
30- case MagSettingPinB3 :
31- return & gpio_ext_pb3 ;
32- case MagSettingPinB2 :
33- return & gpio_ext_pb2 ;
34- case MagSettingPinC3 :
35- return & gpio_ext_pc3 ;
36- case MagSettingPinC1 :
37- return & gpio_ext_pc1 ;
38- case MagSettingPinC0 :
39- return & gpio_ext_pc0 ;
40- default :
41- return NULL ;
42- }
43- }
44-
45- void play_halfbit (bool value , MagSetting * setting ) {
46- switch (setting -> tx ) {
22+ void play_halfbit (bool value , MagState * state ) {
23+ switch (state -> tx ) {
4724 case MagTxStateRFID :
4825 furi_hal_gpio_write (RFID_PIN_OUT , value );
4926 /*furi_hal_gpio_write(RFID_PIN_OUT, !value);
@@ -111,7 +88,7 @@ void play_halfbit(bool value, MagSetting* setting) {
11188 last_value = value ;
11289}
11390
114- void play_track (uint8_t * bits_manchester , uint16_t n_bits , MagSetting * setting , bool reverse ) {
91+ void play_track (uint8_t * bits_manchester , uint16_t n_bits , MagState * state , bool reverse ) {
11592 for (uint16_t i = 0 ; i < n_bits ; i ++ ) {
11693 uint16_t j = (reverse ) ? (n_bits - i - 1 ) : i ;
11794 uint8_t byte = j / 8 ;
@@ -140,9 +117,9 @@ void play_track(uint8_t* bits_manchester, uint16_t n_bits, MagSetting* setting,
140117 // for DWT->CYCCNT. Note timer is aliased to 64us as per
141118 // #define FURI_HAL_CORTEX_INSTRUCTIONS_PER_MICROSECOND (SystemCoreClock / 1000000) | furi_hal_cortex.c
142119
143- play_halfbit (bit , setting );
144- furi_delay_us (setting -> us_clock );
145- // if (i % 2 == 1) furi_delay_us(setting ->us_interpacket);
120+ play_halfbit (bit , state );
121+ furi_delay_us (state -> us_clock );
122+ // if (i % 2 == 1) furi_delay_us(state ->us_interpacket);
146123 }
147124}
148125
@@ -154,7 +131,7 @@ void tx_init_rfid() {
154131 // furi_hal_ibutton_start_drive();
155132 furi_hal_ibutton_pin_write (false);
156133
157- // Initializing at GpioSpeedLow seems sufficient for our needs; no improvements seen by increasing speed setting
134+ // Initializing at GpioSpeedLow seems sufficient for our needs; no improvements seen by increasing speed state
158135
159136 // this doesn't seem to make a difference, leaving it in
160137 furi_hal_gpio_init (& gpio_rfid_data_in , GpioModeOutputPushPull , GpioPullNo , GpioSpeedLow );
@@ -202,9 +179,9 @@ void tx_deinit_piezo() {
202179 furi_hal_gpio_init (& gpio_speaker , GpioModeAnalog , GpioPullNo , GpioSpeedLow );
203180}
204181
205- bool tx_init (MagSetting * setting ) {
182+ bool tx_init (MagState * state ) {
206183 // Initialize configured TX method
207- switch (setting -> tx ) {
184+ switch (state -> tx ) {
208185 case MagTxStateRFID :
209186 tx_init_rfid ();
210187 break ;
@@ -242,9 +219,9 @@ bool tx_init(MagSetting* setting) {
242219 return true;
243220}
244221
245- bool tx_deinit (MagSetting * setting ) {
222+ bool tx_deinit (MagState * state ) {
246223 // Reset configured TX method
247- switch (setting -> tx ) {
224+ switch (state -> tx ) {
248225 case MagTxStateRFID :
249226 tx_deinit_rfid ();
250227 break ;
@@ -285,7 +262,7 @@ bool tx_deinit(MagSetting* setting) {
285262}
286263
287264void mag_spoof (Mag * mag ) {
288- MagSetting * setting = mag -> setting ;
265+ MagState * state = & mag -> state ;
289266
290267 // TODO: cleanup this section. Possibly move precompute + tx_init to emulate_on_enter?
291268 FuriString * ft1 = mag -> mag_dev -> dev_data .track [0 ].str ;
@@ -343,47 +320,47 @@ void mag_spoof(Mag* mag) {
343320 last_value = 2 ;
344321 bool bit = false;
345322
346- if (!tx_init (setting )) return ;
323+ if (!tx_init (state )) return ;
347324
348325 FURI_CRITICAL_ENTER ();
349326 for (uint16_t i = 0 ; i < (ZERO_PREFIX * 2 ); i ++ ) {
350327 // is this right?
351328 if (!!(i % 2 )) bit ^= 1 ;
352- play_halfbit (bit , setting );
353- furi_delay_us (setting -> us_clock );
329+ play_halfbit (bit , state );
330+ furi_delay_us (state -> us_clock );
354331 }
355332
356- if ((setting -> track == MagTrackStateOneAndTwo ) || (setting -> track == MagTrackStateOne ))
357- play_track ((uint8_t * )bits_t1_manchester , bits_t1_count , setting , false);
333+ if ((state -> track == MagTrackStateOneAndTwo ) || (state -> track == MagTrackStateOne ))
334+ play_track ((uint8_t * )bits_t1_manchester , bits_t1_count , state , false);
358335
359- if ((setting -> track == MagTrackStateOneAndTwo ))
336+ if ((state -> track == MagTrackStateOneAndTwo ))
360337 for (uint16_t i = 0 ; i < (ZERO_BETWEEN * 2 ); i ++ ) {
361338 if (!!(i % 2 )) bit ^= 1 ;
362- play_halfbit (bit , setting );
363- furi_delay_us (setting -> us_clock );
339+ play_halfbit (bit , state );
340+ furi_delay_us (state -> us_clock );
364341 }
365342
366- if ((setting -> track == MagTrackStateOneAndTwo ) || (setting -> track == MagTrackStateTwo ))
343+ if ((state -> track == MagTrackStateOneAndTwo ) || (state -> track == MagTrackStateTwo ))
367344 play_track (
368345 (uint8_t * )bits_t2_manchester ,
369346 bits_t2_count ,
370- setting ,
371- (setting -> reverse == MagReverseStateOn ));
347+ state ,
348+ (state -> reverse == MagReverseStateOn ));
372349
373- if ((setting -> track == MagTrackStateThree ))
374- play_track ((uint8_t * )bits_t3_manchester , bits_t3_count , setting , false);
350+ if ((state -> track == MagTrackStateThree ))
351+ play_track ((uint8_t * )bits_t3_manchester , bits_t3_count , state , false);
375352
376353 for (uint16_t i = 0 ; i < (ZERO_SUFFIX * 2 ); i ++ ) {
377354 if (!!(i % 2 )) bit ^= 1 ;
378- play_halfbit (bit , setting );
379- furi_delay_us (setting -> us_clock );
355+ play_halfbit (bit , state );
356+ furi_delay_us (state -> us_clock );
380357 }
381358 FURI_CRITICAL_EXIT ();
382359
383360 free (data1 );
384361 free (data2 );
385362 free (data3 );
386- tx_deinit (setting );
363+ tx_deinit (state );
387364}
388365
389366uint16_t add_bit (bool value , uint8_t * out , uint16_t count ) {
0 commit comments