mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-20 04:54:45 -07:00
use sequences, but bake them before sending. required for shorter signal sequences, causing higher setup time
This commit is contained in:
@@ -352,7 +352,7 @@ bool digital_sequence_send(DigitalSequence* sequence, const GpioPin* gpio) {
|
||||
//gpio = &gpio_ext_pb2;
|
||||
furi_hal_gpio_init(gpio, GpioModeOutputPushPull, GpioPullNo, GpioSpeedVeryHigh);
|
||||
|
||||
if(true) {
|
||||
if(sequence->bake) {
|
||||
DigitalSignal* sig = digital_sequence_bake(sequence);
|
||||
|
||||
digital_signal_send(sig, gpio);
|
||||
|
||||
@@ -31,6 +31,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
uint8_t signals_size;
|
||||
bool bake;
|
||||
uint32_t sequence_used;
|
||||
uint32_t sequence_size;
|
||||
DigitalSignal** signals;
|
||||
|
||||
@@ -91,7 +91,7 @@ static void nfca_add_modulation(DigitalSignal* signal, size_t phases) {
|
||||
}
|
||||
|
||||
static void nfca_add_silence(DigitalSignal* signal, size_t phases) {
|
||||
bool end_level = signal->start_level ^ (signal->edge_cnt % 2);
|
||||
bool end_level = signal->start_level ^ ((signal->edge_cnt % 2) == 0);
|
||||
|
||||
if((signal->edge_cnt == 0) || end_level) {
|
||||
signal->edge_timings[signal->edge_cnt++] = DIGITAL_SIGNAL_PS(phases * T_SUB_PHASE);
|
||||
@@ -124,6 +124,9 @@ NfcaSignal* nfca_signal_alloc() {
|
||||
|
||||
nfca_signal->tx_signal = digital_sequence_alloc(NFCA_SIGNAL_MAX_EDGES);
|
||||
|
||||
/* we are dealing with shorter sequences, enable bake-before-sending */
|
||||
nfca_signal->tx_signal->bake = true;
|
||||
|
||||
digital_sequence_set_signal(nfca_signal->tx_signal, SEQ_SOF, nfca_signal->seq_d);
|
||||
digital_sequence_set_signal(nfca_signal->tx_signal, SEQ_BIT0, nfca_signal->seq_e);
|
||||
digital_sequence_set_signal(nfca_signal->tx_signal, SEQ_BIT1, nfca_signal->seq_d);
|
||||
|
||||
Reference in New Issue
Block a user