[FL-2230] SubGhz: protocol API refactoring (#969)
* SubGhz: protocols library refactoring * SubGhz: new architecture and refactoring * SubGhz: simplify protocol structure, remove unused types * SubGhz: rename Subghz to SubGhz * SubGhz: add environment concept Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com> Co-authored-by: DrZlo13 <who.just.the.doctor@gmail.com>
This commit is contained in:
		@@ -6,30 +6,29 @@
 | 
			
		||||
#include <furi_hal.h>
 | 
			
		||||
#include <input/input.h>
 | 
			
		||||
#include <notification/notification_messages.h>
 | 
			
		||||
#include <lib/subghz/protocols/subghz_protocol_princeton.h>
 | 
			
		||||
#include "../helpers/subghz_frequency_analyzer_worker.h"
 | 
			
		||||
 | 
			
		||||
#include <assets_icons.h>
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    SubghzFrequencyAnalyzerStatusIDLE,
 | 
			
		||||
} SubghzFrequencyAnalyzerStatus;
 | 
			
		||||
    SubGhzFrequencyAnalyzerStatusIDLE,
 | 
			
		||||
} SubGhzFrequencyAnalyzerStatus;
 | 
			
		||||
 | 
			
		||||
struct SubghzFrequencyAnalyzer {
 | 
			
		||||
struct SubGhzFrequencyAnalyzer {
 | 
			
		||||
    View* view;
 | 
			
		||||
    SubGhzFrequencyAnalyzerWorker* worker;
 | 
			
		||||
    SubghzFrequencyAnalyzerCallback callback;
 | 
			
		||||
    SubGhzFrequencyAnalyzerCallback callback;
 | 
			
		||||
    void* context;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    uint32_t frequency;
 | 
			
		||||
    float rssi;
 | 
			
		||||
} SubghzFrequencyAnalyzerModel;
 | 
			
		||||
} SubGhzFrequencyAnalyzerModel;
 | 
			
		||||
 | 
			
		||||
void subghz_frequency_analyzer_set_callback(
 | 
			
		||||
    SubghzFrequencyAnalyzer* subghz_frequency_analyzer,
 | 
			
		||||
    SubghzFrequencyAnalyzerCallback callback,
 | 
			
		||||
    SubGhzFrequencyAnalyzer* subghz_frequency_analyzer,
 | 
			
		||||
    SubGhzFrequencyAnalyzerCallback callback,
 | 
			
		||||
    void* context) {
 | 
			
		||||
    furi_assert(subghz_frequency_analyzer);
 | 
			
		||||
    furi_assert(callback);
 | 
			
		||||
@@ -53,7 +52,7 @@ void subghz_frequency_analyzer_draw_rssi(Canvas* canvas, float rssi) {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void subghz_frequency_analyzer_draw(Canvas* canvas, SubghzFrequencyAnalyzerModel* model) {
 | 
			
		||||
void subghz_frequency_analyzer_draw(Canvas* canvas, SubGhzFrequencyAnalyzerModel* model) {
 | 
			
		||||
    char buffer[64];
 | 
			
		||||
 | 
			
		||||
    canvas_set_color(canvas, ColorBlack);
 | 
			
		||||
@@ -77,7 +76,6 @@ void subghz_frequency_analyzer_draw(Canvas* canvas, SubghzFrequencyAnalyzerModel
 | 
			
		||||
 | 
			
		||||
bool subghz_frequency_analyzer_input(InputEvent* event, void* context) {
 | 
			
		||||
    furi_assert(context);
 | 
			
		||||
    //SubghzFrequencyAnalyzer* instance = context;
 | 
			
		||||
 | 
			
		||||
    if(event->key == InputKeyBack) {
 | 
			
		||||
        return false;
 | 
			
		||||
@@ -87,9 +85,9 @@ bool subghz_frequency_analyzer_input(InputEvent* event, void* context) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void subghz_frequency_analyzer_pair_callback(void* context, uint32_t frequency, float rssi) {
 | 
			
		||||
    SubghzFrequencyAnalyzer* instance = context;
 | 
			
		||||
    SubGhzFrequencyAnalyzer* instance = context;
 | 
			
		||||
    with_view_model(
 | 
			
		||||
        instance->view, (SubghzFrequencyAnalyzerModel * model) {
 | 
			
		||||
        instance->view, (SubGhzFrequencyAnalyzerModel * model) {
 | 
			
		||||
            model->rssi = rssi;
 | 
			
		||||
            model->frequency = frequency;
 | 
			
		||||
            return true;
 | 
			
		||||
@@ -98,7 +96,7 @@ void subghz_frequency_analyzer_pair_callback(void* context, uint32_t frequency,
 | 
			
		||||
 | 
			
		||||
void subghz_frequency_analyzer_enter(void* context) {
 | 
			
		||||
    furi_assert(context);
 | 
			
		||||
    SubghzFrequencyAnalyzer* instance = context;
 | 
			
		||||
    SubGhzFrequencyAnalyzer* instance = context;
 | 
			
		||||
 | 
			
		||||
    //Start worker
 | 
			
		||||
    instance->worker = subghz_frequency_analyzer_worker_alloc();
 | 
			
		||||
@@ -111,7 +109,7 @@ void subghz_frequency_analyzer_enter(void* context) {
 | 
			
		||||
    subghz_frequency_analyzer_worker_start(instance->worker);
 | 
			
		||||
 | 
			
		||||
    with_view_model(
 | 
			
		||||
        instance->view, (SubghzFrequencyAnalyzerModel * model) {
 | 
			
		||||
        instance->view, (SubGhzFrequencyAnalyzerModel * model) {
 | 
			
		||||
            model->rssi = 0;
 | 
			
		||||
            model->frequency = 0;
 | 
			
		||||
            return true;
 | 
			
		||||
@@ -120,7 +118,7 @@ void subghz_frequency_analyzer_enter(void* context) {
 | 
			
		||||
 | 
			
		||||
void subghz_frequency_analyzer_exit(void* context) {
 | 
			
		||||
    furi_assert(context);
 | 
			
		||||
    SubghzFrequencyAnalyzer* instance = context;
 | 
			
		||||
    SubGhzFrequencyAnalyzer* instance = context;
 | 
			
		||||
 | 
			
		||||
    //Stop worker
 | 
			
		||||
    if(subghz_frequency_analyzer_worker_is_running(instance->worker)) {
 | 
			
		||||
@@ -129,19 +127,19 @@ void subghz_frequency_analyzer_exit(void* context) {
 | 
			
		||||
    subghz_frequency_analyzer_worker_free(instance->worker);
 | 
			
		||||
 | 
			
		||||
    with_view_model(
 | 
			
		||||
        instance->view, (SubghzFrequencyAnalyzerModel * model) {
 | 
			
		||||
        instance->view, (SubGhzFrequencyAnalyzerModel * model) {
 | 
			
		||||
            model->rssi = 0;
 | 
			
		||||
            return true;
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubghzFrequencyAnalyzer* subghz_frequency_analyzer_alloc() {
 | 
			
		||||
    SubghzFrequencyAnalyzer* instance = malloc(sizeof(SubghzFrequencyAnalyzer));
 | 
			
		||||
SubGhzFrequencyAnalyzer* subghz_frequency_analyzer_alloc() {
 | 
			
		||||
    SubGhzFrequencyAnalyzer* instance = malloc(sizeof(SubGhzFrequencyAnalyzer));
 | 
			
		||||
 | 
			
		||||
    // View allocation and configuration
 | 
			
		||||
    instance->view = view_alloc();
 | 
			
		||||
    view_allocate_model(
 | 
			
		||||
        instance->view, ViewModelTypeLocking, sizeof(SubghzFrequencyAnalyzerModel));
 | 
			
		||||
        instance->view, ViewModelTypeLocking, sizeof(SubGhzFrequencyAnalyzerModel));
 | 
			
		||||
    view_set_context(instance->view, instance);
 | 
			
		||||
    view_set_draw_callback(instance->view, (ViewDrawCallback)subghz_frequency_analyzer_draw);
 | 
			
		||||
    view_set_input_callback(instance->view, subghz_frequency_analyzer_input);
 | 
			
		||||
@@ -149,7 +147,7 @@ SubghzFrequencyAnalyzer* subghz_frequency_analyzer_alloc() {
 | 
			
		||||
    view_set_exit_callback(instance->view, subghz_frequency_analyzer_exit);
 | 
			
		||||
 | 
			
		||||
    with_view_model(
 | 
			
		||||
        instance->view, (SubghzFrequencyAnalyzerModel * model) {
 | 
			
		||||
        instance->view, (SubGhzFrequencyAnalyzerModel * model) {
 | 
			
		||||
            model->rssi = 0;
 | 
			
		||||
            return true;
 | 
			
		||||
        });
 | 
			
		||||
@@ -157,14 +155,14 @@ SubghzFrequencyAnalyzer* subghz_frequency_analyzer_alloc() {
 | 
			
		||||
    return instance;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void subghz_frequency_analyzer_free(SubghzFrequencyAnalyzer* instance) {
 | 
			
		||||
void subghz_frequency_analyzer_free(SubGhzFrequencyAnalyzer* instance) {
 | 
			
		||||
    furi_assert(instance);
 | 
			
		||||
 | 
			
		||||
    view_free(instance->view);
 | 
			
		||||
    free(instance);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
View* subghz_frequency_analyzer_get_view(SubghzFrequencyAnalyzer* instance) {
 | 
			
		||||
View* subghz_frequency_analyzer_get_view(SubGhzFrequencyAnalyzer* instance) {
 | 
			
		||||
    furi_assert(instance);
 | 
			
		||||
    return instance->view;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user