subghz: add analyzer frequency logs (#1914)
* subghz: add analyzer frequency logs * SubGhz: switch to change on short press * SubGhz: use full RSSI bar for history view Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
#include "subghz_frequency_analyzer_log_item_array.h"
|
||||
|
||||
const char*
|
||||
subghz_frequency_analyzer_log_get_order_name(SubGhzFrequencyAnalyzerLogOrderBy order_by) {
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderBySeqAsc) {
|
||||
return "Seq. A";
|
||||
}
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderByCountDesc) {
|
||||
return "Count D";
|
||||
}
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderByCountAsc) {
|
||||
return "Count A";
|
||||
}
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderByRSSIDesc) {
|
||||
return "RSSI D";
|
||||
}
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderByRSSIAsc) {
|
||||
return "RSSI A";
|
||||
}
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderByFrequencyDesc) {
|
||||
return "Freq. D";
|
||||
}
|
||||
if(order_by == SubGhzFrequencyAnalyzerLogOrderByFrequencyAsc) {
|
||||
return "Freq. A";
|
||||
}
|
||||
return "Seq. D";
|
||||
}
|
@@ -0,0 +1,73 @@
|
||||
#pragma once
|
||||
|
||||
#include <m-tuple.h>
|
||||
#include <m-array.h>
|
||||
#include <m-algo.h>
|
||||
#include <m-funcobj.h>
|
||||
|
||||
typedef enum {
|
||||
SubGhzFrequencyAnalyzerLogOrderBySeqDesc,
|
||||
SubGhzFrequencyAnalyzerLogOrderBySeqAsc,
|
||||
SubGhzFrequencyAnalyzerLogOrderByCountDesc,
|
||||
SubGhzFrequencyAnalyzerLogOrderByCountAsc,
|
||||
SubGhzFrequencyAnalyzerLogOrderByRSSIDesc,
|
||||
SubGhzFrequencyAnalyzerLogOrderByRSSIAsc,
|
||||
SubGhzFrequencyAnalyzerLogOrderByFrequencyDesc,
|
||||
SubGhzFrequencyAnalyzerLogOrderByFrequencyAsc,
|
||||
} SubGhzFrequencyAnalyzerLogOrderBy;
|
||||
|
||||
const char*
|
||||
subghz_frequency_analyzer_log_get_order_name(SubGhzFrequencyAnalyzerLogOrderBy order_by);
|
||||
|
||||
TUPLE_DEF2(
|
||||
SubGhzFrequencyAnalyzerLogItem,
|
||||
(seq, uint8_t),
|
||||
(frequency, uint32_t),
|
||||
(count, uint8_t),
|
||||
(rssi_max, uint8_t))
|
||||
/* Register globaly the oplist */
|
||||
#define M_OPL_SubGhzFrequencyAnalyzerLogItem_t() \
|
||||
TUPLE_OPLIST(SubGhzFrequencyAnalyzerLogItem, M_POD_OPLIST, M_DEFAULT_OPLIST, M_DEFAULT_OPLIST)
|
||||
|
||||
/* Define the array, register the oplist and define further algorithms on it */
|
||||
ARRAY_DEF(SubGhzFrequencyAnalyzerLogItemArray, SubGhzFrequencyAnalyzerLogItem_t)
|
||||
#define M_OPL_SubGhzFrequencyAnalyzerLogItemArray_t() \
|
||||
ARRAY_OPLIST(SubGhzFrequencyAnalyzerLogItemArray, M_OPL_SubGhzFrequencyAnalyzerLogItem_t())
|
||||
ALGO_DEF(SubGhzFrequencyAnalyzerLogItemArray, SubGhzFrequencyAnalyzerLogItemArray_t)
|
||||
|
||||
FUNC_OBJ_INS_DEF(
|
||||
SubGhzFrequencyAnalyzerLogItemArray_compare_by /* name of the instance */,
|
||||
SubGhzFrequencyAnalyzerLogItemArray_cmp_obj /* name of the interface */,
|
||||
(a,
|
||||
b) /* name of the input parameters of the function like object. The type are inherited from the interface. */
|
||||
,
|
||||
{
|
||||
/* code of the function object */
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderByFrequencyAsc) {
|
||||
return a->frequency < b->frequency ? -1 : a->frequency > b->frequency;
|
||||
}
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderByFrequencyDesc) {
|
||||
return a->frequency > b->frequency ? -1 : a->frequency < b->frequency;
|
||||
}
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderByRSSIAsc) {
|
||||
return a->rssi_max < b->rssi_max ? -1 : a->rssi_max > b->rssi_max;
|
||||
}
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderByRSSIDesc) {
|
||||
return a->rssi_max > b->rssi_max ? -1 : a->rssi_max < b->rssi_max;
|
||||
}
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderByCountAsc) {
|
||||
return a->count < b->count ? -1 : a->count > b->count;
|
||||
}
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderByCountDesc) {
|
||||
return a->count > b->count ? -1 : a->count < b->count;
|
||||
}
|
||||
if(self->order_by == SubGhzFrequencyAnalyzerLogOrderBySeqAsc) {
|
||||
return a->seq < b->seq ? -1 : a->seq > b->seq;
|
||||
}
|
||||
|
||||
return a->seq > b->seq ? -1 : a->seq < b->seq;
|
||||
},
|
||||
/* Additional fields stored in the function object */
|
||||
(order_by, SubGhzFrequencyAnalyzerLogOrderBy))
|
||||
#define M_OPL_SubGhzFrequencyAnalyzerLogItemArray_compare_by_t() \
|
||||
FUNC_OBJ_INS_OPLIST(SubGhzFrequencyAnalyzerLogItemArray_compare_by, M_DEFAULT_OPLIST)
|
Reference in New Issue
Block a user