SubGhz: automatically select path based on frequency for static code emulation (#419)
This commit is contained in:
parent
239c174610
commit
1ae3bc1a2d
@ -6,6 +6,7 @@
|
|||||||
#include "subghz_static.h"
|
#include "subghz_static.h"
|
||||||
|
|
||||||
#include <furi.h>
|
#include <furi.h>
|
||||||
|
#include <api-hal.h>
|
||||||
#include <gui/gui.h>
|
#include <gui/gui.h>
|
||||||
#include <gui/view_dispatcher.h>
|
#include <gui/view_dispatcher.h>
|
||||||
#include <gui/modules/submenu.h>
|
#include <gui/modules/submenu.h>
|
||||||
@ -24,6 +25,20 @@ static const uint32_t subghz_frequencies[] = {
|
|||||||
925000000,
|
925000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const ApiHalSubGhzPath subghz_frequencies_paths[] = {
|
||||||
|
ApiHalSubGhzPath2,
|
||||||
|
ApiHalSubGhzPath2,
|
||||||
|
ApiHalSubGhzPath2,
|
||||||
|
ApiHalSubGhzPath2,
|
||||||
|
ApiHalSubGhzPath1,
|
||||||
|
ApiHalSubGhzPath1,
|
||||||
|
ApiHalSubGhzPath1,
|
||||||
|
ApiHalSubGhzPath3,
|
||||||
|
ApiHalSubGhzPath3,
|
||||||
|
ApiHalSubGhzPath3,
|
||||||
|
ApiHalSubGhzPath3,
|
||||||
|
};
|
||||||
|
|
||||||
static const uint32_t subghz_frequencies_count = sizeof(subghz_frequencies) / sizeof(uint32_t);
|
static const uint32_t subghz_frequencies_count = sizeof(subghz_frequencies) / sizeof(uint32_t);
|
||||||
|
|
||||||
struct SubGhz {
|
struct SubGhz {
|
||||||
|
@ -22,6 +22,7 @@ typedef enum {
|
|||||||
} SubghzStaticStatus;
|
} SubghzStaticStatus;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
uint8_t frequency;
|
||||||
uint32_t real_frequency;
|
uint32_t real_frequency;
|
||||||
ApiHalSubGhzPath path;
|
ApiHalSubGhzPath path;
|
||||||
uint8_t button;
|
uint8_t button;
|
||||||
@ -71,18 +72,28 @@ bool subghz_static_input(InputEvent* event, void* context) {
|
|||||||
|
|
||||||
with_view_model(
|
with_view_model(
|
||||||
subghz_static->view, (SubghzStaticModel * model) {
|
subghz_static->view, (SubghzStaticModel * model) {
|
||||||
|
bool reconfigure = false;
|
||||||
if(event->type == InputTypeShort) {
|
if(event->type == InputTypeShort) {
|
||||||
if(event->key == InputKeyLeft) {
|
if(event->key == InputKeyLeft) {
|
||||||
if(model->button > 0) model->button--;
|
if(model->frequency > 0) model->frequency--;
|
||||||
|
reconfigure = true;
|
||||||
} else if(event->key == InputKeyRight) {
|
} else if(event->key == InputKeyRight) {
|
||||||
if(model->button < 2) model->button++;
|
if(model->frequency < subghz_frequencies_count - 1) model->frequency++;
|
||||||
|
reconfigure = true;
|
||||||
} else if(event->key == InputKeyDown) {
|
} else if(event->key == InputKeyDown) {
|
||||||
if(model->path > 0) model->path--;
|
if(model->button > 0) model->button--;
|
||||||
} else if(event->key == InputKeyUp) {
|
} else if(event->key == InputKeyUp) {
|
||||||
if(model->path < ApiHalSubGhzPath3) model->path++;
|
if(model->button < 2) model->button++;
|
||||||
}
|
}
|
||||||
|
model->path = subghz_frequencies_paths[model->frequency];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(reconfigure) {
|
||||||
|
api_hal_subghz_idle();
|
||||||
|
model->real_frequency =
|
||||||
|
api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]);
|
||||||
api_hal_subghz_set_path(model->path);
|
api_hal_subghz_set_path(model->path);
|
||||||
|
api_hal_subghz_tx();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event->key == InputKeyOk) {
|
if(event->key == InputKeyOk) {
|
||||||
@ -138,9 +149,12 @@ void subghz_static_enter(void* context) {
|
|||||||
|
|
||||||
with_view_model(
|
with_view_model(
|
||||||
subghz_static->view, (SubghzStaticModel * model) {
|
subghz_static->view, (SubghzStaticModel * model) {
|
||||||
model->real_frequency = api_hal_subghz_set_frequency(433920000);
|
model->frequency = 4;
|
||||||
model->path = ApiHalSubGhzPathIsolate; // isolate
|
model->real_frequency =
|
||||||
|
api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]);
|
||||||
|
model->path = subghz_frequencies_paths[model->frequency];
|
||||||
model->button = 0;
|
model->button = 0;
|
||||||
|
api_hal_subghz_set_path(model->path);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user