@@ -19,31 +19,8 @@ const int sublen[] = {32, 48, 48};
19
19
20
20
uint8_t last_value = 2 ;
21
21
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 ) {
47
24
case MagTxStateRFID :
48
25
furi_hal_gpio_write (RFID_PIN_OUT , value );
49
26
/*furi_hal_gpio_write(RFID_PIN_OUT, !value);
@@ -111,7 +88,7 @@ void play_halfbit(bool value, MagSetting* setting) {
111
88
last_value = value ;
112
89
}
113
90
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 ) {
115
92
for (uint16_t i = 0 ; i < n_bits ; i ++ ) {
116
93
uint16_t j = (reverse ) ? (n_bits - i - 1 ) : i ;
117
94
uint8_t byte = j / 8 ;
@@ -140,9 +117,9 @@ void play_track(uint8_t* bits_manchester, uint16_t n_bits, MagSetting* setting,
140
117
// for DWT->CYCCNT. Note timer is aliased to 64us as per
141
118
// #define FURI_HAL_CORTEX_INSTRUCTIONS_PER_MICROSECOND (SystemCoreClock / 1000000) | furi_hal_cortex.c
142
119
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);
146
123
}
147
124
}
148
125
@@ -154,7 +131,7 @@ void tx_init_rfid() {
154
131
// furi_hal_ibutton_start_drive();
155
132
furi_hal_ibutton_pin_write (false);
156
133
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
158
135
159
136
// this doesn't seem to make a difference, leaving it in
160
137
furi_hal_gpio_init (& gpio_rfid_data_in , GpioModeOutputPushPull , GpioPullNo , GpioSpeedLow );
@@ -202,9 +179,9 @@ void tx_deinit_piezo() {
202
179
furi_hal_gpio_init (& gpio_speaker , GpioModeAnalog , GpioPullNo , GpioSpeedLow );
203
180
}
204
181
205
- bool tx_init (MagSetting * setting ) {
182
+ bool tx_init (MagState * state ) {
206
183
// Initialize configured TX method
207
- switch (setting -> tx ) {
184
+ switch (state -> tx ) {
208
185
case MagTxStateRFID :
209
186
tx_init_rfid ();
210
187
break ;
@@ -242,9 +219,9 @@ bool tx_init(MagSetting* setting) {
242
219
return true;
243
220
}
244
221
245
- bool tx_deinit (MagSetting * setting ) {
222
+ bool tx_deinit (MagState * state ) {
246
223
// Reset configured TX method
247
- switch (setting -> tx ) {
224
+ switch (state -> tx ) {
248
225
case MagTxStateRFID :
249
226
tx_deinit_rfid ();
250
227
break ;
@@ -285,7 +262,7 @@ bool tx_deinit(MagSetting* setting) {
285
262
}
286
263
287
264
void mag_spoof (Mag * mag ) {
288
- MagSetting * setting = mag -> setting ;
265
+ MagState * state = & mag -> state ;
289
266
290
267
// TODO: cleanup this section. Possibly move precompute + tx_init to emulate_on_enter?
291
268
FuriString * ft1 = mag -> mag_dev -> dev_data .track [0 ].str ;
@@ -343,47 +320,47 @@ void mag_spoof(Mag* mag) {
343
320
last_value = 2 ;
344
321
bool bit = false;
345
322
346
- if (!tx_init (setting )) return ;
323
+ if (!tx_init (state )) return ;
347
324
348
325
FURI_CRITICAL_ENTER ();
349
326
for (uint16_t i = 0 ; i < (ZERO_PREFIX * 2 ); i ++ ) {
350
327
// is this right?
351
328
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 );
354
331
}
355
332
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);
358
335
359
- if ((setting -> track == MagTrackStateOneAndTwo ))
336
+ if ((state -> track == MagTrackStateOneAndTwo ))
360
337
for (uint16_t i = 0 ; i < (ZERO_BETWEEN * 2 ); i ++ ) {
361
338
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 );
364
341
}
365
342
366
- if ((setting -> track == MagTrackStateOneAndTwo ) || (setting -> track == MagTrackStateTwo ))
343
+ if ((state -> track == MagTrackStateOneAndTwo ) || (state -> track == MagTrackStateTwo ))
367
344
play_track (
368
345
(uint8_t * )bits_t2_manchester ,
369
346
bits_t2_count ,
370
- setting ,
371
- (setting -> reverse == MagReverseStateOn ));
347
+ state ,
348
+ (state -> reverse == MagReverseStateOn ));
372
349
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);
375
352
376
353
for (uint16_t i = 0 ; i < (ZERO_SUFFIX * 2 ); i ++ ) {
377
354
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 );
380
357
}
381
358
FURI_CRITICAL_EXIT ();
382
359
383
360
free (data1 );
384
361
free (data2 );
385
362
free (data3 );
386
- tx_deinit (setting );
363
+ tx_deinit (state );
387
364
}
388
365
389
366
uint16_t add_bit (bool value , uint8_t * out , uint16_t count ) {
0 commit comments