use sequences, but bake them before sending. required for shorter signal sequences, causing higher setup time

This commit is contained in:
g3gg0
2022-11-22 02:11:09 +01:00
parent 116528f871
commit 021695b2a3
3 changed files with 6 additions and 2 deletions

View File

@@ -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);

View File

@@ -31,6 +31,7 @@ typedef struct {
typedef struct {
uint8_t signals_size;
bool bake;
uint32_t sequence_used;
uint32_t sequence_size;
DigitalSignal** signals;

View File

@@ -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);