SubGhz: fix todo (#2984)

* [FL-3501] SubGhz: fix Handle multiple external cc1101 modules
* [FL-3502] SubGhz: fix Protocol not found error message
* [FL-3503] SubGhz: fix Handle rx buffer overflow
* {FL-3520] SubGhz: Handle RX buffer overflow with external cc1101
* [FL-3548] SubGhz: Security+ 2.0 counter start value
* [FL-3552] Sub-GHz: Check saved file
* [FL-3555] [FL-3554] Sub-GHz: RX buffer overflow handling and check that buffer has been properly written
* [FL-3557] Sub-GHz: No optimization required
* [FL-3558] Sub-GHz: Keeloq 0 discriminator
* [FL-3559] Sub-GHz: Keeloq unknown learning
* [FL-3560] Sub-GHz: callback for updating keeloq data on display
* SubGhz: fix RXFIFO_OVERFLOW

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
Skorpionm
2023-08-24 04:51:32 +09:00
committed by GitHub
co-authored by Aleksandr Kutuzov
parent 60182aa2cd
commit 940ec36a0b
12 changed files with 83 additions and 74 deletions
-2
View File
@@ -744,7 +744,6 @@ static bool
bin_raw_debug("\r\n\r\n");
#endif
//TODO FL-3557: can be optimized
BinRAW_Markup markup_temp[BIN_RAW_MAX_MARKUP_COUNT];
memcpy(
markup_temp,
@@ -770,7 +769,6 @@ static bool
}
}
}
//TODO FL-3557: can be optimized
if(bin_raw_type == BinRAWTypeGap) {
if(data_temp != 0) { //there are sequences with the same number of bits
+4 -5
View File
@@ -122,7 +122,7 @@ static bool subghz_protocol_keeloq_gen_data(SubGhzProtocolEncoderKeeloq* instanc
uint32_t fix = (uint32_t)btn << 28 | instance->generic.serial;
uint32_t decrypt = (uint32_t)btn << 28 |
(instance->generic.serial & 0x3FF)
<< 16 | //TODO FL-3558: in some protocols the discriminator is 0
<< 16 | // In some protocols the discriminator is 0
instance->generic.cnt;
uint32_t hop = 0;
uint64_t man = 0;
@@ -149,7 +149,8 @@ static bool subghz_protocol_keeloq_gen_data(SubGhzProtocolEncoderKeeloq* instanc
hop = subghz_protocol_keeloq_common_encrypt(decrypt, man);
break;
case KEELOQ_LEARNING_UNKNOWN:
hop = 0; //TODO FL-3559
//Invalid or missing encoding type in keeloq_mfcodes
hop = 0;
break;
}
break;
@@ -199,9 +200,7 @@ static bool
furi_assert(instance);
//gen new key
if(subghz_protocol_keeloq_gen_data(instance, btn)) {
//TODO FL-3560: if you need to add a callback to automatically update the data on the display
} else {
if(!subghz_protocol_keeloq_gen_data(instance, btn)) {
return false;
}
-1
View File
@@ -380,7 +380,6 @@ static void subghz_protocol_secplus_v2_encode(SubGhzProtocolEncoderSecPlus_v2* i
uint8_t roll_2[9] = {0};
instance->generic.cnt++;
//TODO Fl-3548: it is not known what value the counter starts
if(instance->generic.cnt > 0xFFFFFFF) instance->generic.cnt = 0xE500000;
uint32_t rolling = subghz_protocol_blocks_reverse_key(instance->generic.cnt, 28);
+1 -3
View File
@@ -165,7 +165,6 @@ static int32_t subghz_tx_rx_worker_thread(void* context) {
SUBGHZ_TXRX_WORKER_TIMEOUT_READ_WRITE_BUF);
subghz_tx_rx_worker_tx(instance, data, SUBGHZ_TXRX_WORKER_MAX_TXRX_SIZE);
} else {
//TODO FL-3554: checking that it managed to write all the data to the TX buffer
furi_stream_buffer_receive(
instance->stream_tx, &data, size_tx, SUBGHZ_TXRX_WORKER_TIMEOUT_READ_WRITE_BUF);
subghz_tx_rx_worker_tx(instance, data, size_tx);
@@ -178,7 +177,6 @@ static int32_t subghz_tx_rx_worker_thread(void* context) {
furi_stream_buffer_bytes_available(instance->stream_rx) == 0) {
callback_rx = true;
}
//TODO FL-3554: checking that it managed to write all the data to the RX buffer
furi_stream_buffer_send(
instance->stream_rx,
&data,
@@ -189,7 +187,7 @@ static int32_t subghz_tx_rx_worker_thread(void* context) {
callback_rx = false;
}
} else {
//TODO FL-3555: RX buffer overflow
FURI_LOG_E(TAG, "Receive buffer overflow, over-the-air transmission too fast");
}
}
}
+1
View File
@@ -57,6 +57,7 @@ typedef enum {
// Encoder issue
SubGhzProtocolStatusErrorEncoderGetUpload = (-12), ///< Payload encoder failure
// Special Values
SubGhzProtocolStatusErrorProtocolNotFound = (-13), ///< Protocol not found
SubGhzProtocolStatusReserved = 0x7FFFFFFF, ///< Prevents enum down-size compiler optimization.
} SubGhzProtocolStatus;