mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Check same protocol when counting duplicate signals
This commit is contained in:
@@ -86,7 +86,8 @@ static void subghz_scene_add_to_history_callback(
|
||||
subghz_view_receiver_disable_draw_callback(subghz->subghz_receiver);
|
||||
for(uint16_t i = idx; i > 0; i--) {
|
||||
i--; // Iterating in reverse with off by one
|
||||
if(subghz_history_get_hash_data(subghz->history, i) == hash_data) {
|
||||
if(subghz_history_get_hash_data(subghz->history, i) == hash_data &&
|
||||
subghz_history_get_protocol(subghz->history, i) == decoder_base->protocol) {
|
||||
// Remove previous instance and update menu index
|
||||
subghz_history_delete_item(subghz->history, i);
|
||||
subghz_view_receiver_delete_item(subghz->subghz_receiver, i);
|
||||
|
||||
@@ -171,7 +171,9 @@ static void subghz_scene_add_to_history_callback(
|
||||
subghz_view_receiver_disable_draw_callback(subghz->subghz_receiver);
|
||||
for(uint16_t i = idx; i > 0; i--) {
|
||||
i--; // Iterating in reverse with off by one
|
||||
if(subghz_history_get_hash_data(subghz->history, i) == hash_data) {
|
||||
if(subghz_history_get_hash_data(subghz->history, i) == hash_data &&
|
||||
subghz_history_get_protocol(subghz->history, i) ==
|
||||
decoder_base->protocol) {
|
||||
// Remove previous instance and update menu index
|
||||
subghz_history_delete_item(subghz->history, i);
|
||||
subghz_view_receiver_delete_item(subghz->subghz_receiver, i);
|
||||
|
||||
@@ -15,6 +15,7 @@ typedef struct {
|
||||
SubGhzRadioPreset* preset;
|
||||
FuriHalRtcDateTime datetime;
|
||||
uint32_t hash_data;
|
||||
const SubGhzProtocol* protocol;
|
||||
uint16_t repeats;
|
||||
float latitude;
|
||||
float longitude;
|
||||
@@ -69,6 +70,12 @@ uint32_t subghz_history_get_hash_data(SubGhzHistory* instance, uint16_t idx) {
|
||||
return item->hash_data;
|
||||
}
|
||||
|
||||
const SubGhzProtocol* subghz_history_get_protocol(SubGhzHistory* instance, uint16_t idx) {
|
||||
furi_assert(instance);
|
||||
SubGhzHistoryItem* item = SubGhzHistoryItemArray_get(instance->history->data, idx);
|
||||
return item->protocol;
|
||||
}
|
||||
|
||||
uint16_t subghz_history_get_repeats(SubGhzHistory* instance, uint16_t idx) {
|
||||
furi_assert(instance);
|
||||
SubGhzHistoryItem* item = SubGhzHistoryItemArray_get(instance->history->data, idx);
|
||||
@@ -252,7 +259,7 @@ bool subghz_history_add_to_history(
|
||||
SubGhzHistoryItemArray_it_last(it, instance->history->data);
|
||||
while(!SubGhzHistoryItemArray_end_p(it)) {
|
||||
SubGhzHistoryItem* search = SubGhzHistoryItemArray_ref(it);
|
||||
if(search->hash_data == hash_data) {
|
||||
if(search->hash_data == hash_data && search->protocol == decoder_base->protocol) {
|
||||
repeats = search->repeats + 1;
|
||||
break;
|
||||
}
|
||||
@@ -273,6 +280,7 @@ bool subghz_history_add_to_history(
|
||||
item->preset->data_size = preset->data_size;
|
||||
furi_hal_rtc_get_datetime(&item->datetime);
|
||||
item->hash_data = hash_data;
|
||||
item->protocol = decoder_base->protocol;
|
||||
item->repeats = repeats;
|
||||
item->latitude = preset->latitude;
|
||||
item->longitude = preset->longitude;
|
||||
@@ -357,7 +365,7 @@ void subghz_history_remove_duplicates(SubGhzHistory* instance) {
|
||||
while(!SubGhzHistoryItemArray_end_p(jt)) {
|
||||
SubGhzHistoryItem* j = SubGhzHistoryItemArray_ref(jt);
|
||||
|
||||
if(j->hash_data == i->hash_data) {
|
||||
if(j->hash_data == i->hash_data && j->protocol == i->protocol) {
|
||||
subghz_history_delete_item(instance, jt->index);
|
||||
}
|
||||
SubGhzHistoryItemArray_previous(jt);
|
||||
|
||||
@@ -37,6 +37,14 @@ void subghz_history_delete_item(SubGhzHistory* instance, uint16_t idx);
|
||||
*/
|
||||
uint32_t subghz_history_get_hash_data(SubGhzHistory* instance, uint16_t idx);
|
||||
|
||||
/** Get protocol pointer to history[idx]
|
||||
*
|
||||
* @param instance - SubGhzHistory instance
|
||||
* @param idx - record index
|
||||
* @return proto - protocol pointer
|
||||
*/
|
||||
const SubGhzProtocol* subghz_history_get_protocol(SubGhzHistory* instance, uint16_t idx);
|
||||
|
||||
/** Get repeat count to history[idx]
|
||||
*
|
||||
* @param instance - SubGhzHistory instance
|
||||
|
||||
Reference in New Issue
Block a user