2023-05-09 09:07:36 +00:00
|
|
|
#pragma once
|
2023-05-09 16:10:56 +00:00
|
|
|
#include "subghz_types.h"
|
2023-05-09 09:07:36 +00:00
|
|
|
#include <lib/subghz/subghz_worker.h>
|
|
|
|
#include <lib/subghz/subghz_setting.h>
|
|
|
|
#include <lib/subghz/receiver.h>
|
|
|
|
#include <lib/subghz/transmitter.h>
|
2023-05-09 15:24:25 +00:00
|
|
|
#include <lib/subghz/protocols/raw.h>
|
2023-05-09 09:07:36 +00:00
|
|
|
|
|
|
|
typedef void (*SubGhzTxRxNeedSaveCallback)(void* context);
|
|
|
|
|
|
|
|
typedef struct SubGhzTxRx SubGhzTxRx;
|
|
|
|
|
2023-05-09 14:30:01 +00:00
|
|
|
SubGhzTxRx* subghz_txrx_alloc();
|
2023-05-09 16:10:56 +00:00
|
|
|
void subghz_txrx_free(SubGhzTxRx* instance);
|
|
|
|
bool subghz_txrx_is_load_database(SubGhzTxRx* instance);
|
2023-05-09 14:30:01 +00:00
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
void subghz_txrx_set_preset(
|
|
|
|
SubGhzTxRx* instance,
|
2023-05-09 09:07:36 +00:00
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint8_t* preset_data,
|
|
|
|
size_t preset_data_size);
|
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
const char* subghz_txrx_get_name_preset(SubGhzTxRx* instance, const char* preset);
|
|
|
|
SubGhzRadioPreset subghz_txrx_get_preset(SubGhzTxRx* instance);
|
2023-05-09 12:11:54 +00:00
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
void subghz_txrx_get_frequency_modulation(
|
|
|
|
SubGhzTxRx* instance,
|
2023-05-09 10:34:54 +00:00
|
|
|
FuriString* frequency,
|
|
|
|
FuriString* modulation,
|
|
|
|
bool long_name);
|
2023-05-09 16:10:56 +00:00
|
|
|
bool subghz_txrx_tx_start(SubGhzTxRx* instance, FlipperFormat* flipper_format);
|
|
|
|
void subghz_txrx_rx_start(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_stop(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_sleep(SubGhzTxRx* instance);
|
|
|
|
|
|
|
|
SubGhzTxRxState subghz_txrx_get_state(SubGhzTxRx* instance);
|
|
|
|
|
|
|
|
void subghz_txrx_hopper_update(SubGhzTxRx* instance);
|
|
|
|
SubGhzHopperState subghz_txrx_hopper_get_state(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_hopper_set_state(SubGhzTxRx* instance, SubGhzHopperState state);
|
|
|
|
void subghz_txrx_hopper_remove_pause(SubGhzTxRx* instance);
|
2023-05-09 16:33:45 +00:00
|
|
|
void subghz_txrx_hopper_pause(SubGhzTxRx* instance);
|
2023-05-09 16:10:56 +00:00
|
|
|
|
|
|
|
void subghz_txrx_speaker_on(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_speaker_off(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_speaker_mute(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_speaker_unmute(SubGhzTxRx* instance);
|
|
|
|
void subghz_txrx_speaker_set_state(SubGhzTxRx* instance, SubGhzSpeakerState state);
|
|
|
|
SubGhzSpeakerState subghz_txrx_speaker_get_state(SubGhzTxRx* instance);
|
|
|
|
bool subghz_txrx_load_decoder_by_name_protocol(SubGhzTxRx* instance, const char* name_protocol);
|
|
|
|
SubGhzProtocolDecoderBase* subghz_txrx_get_decoder(SubGhzTxRx* instance);
|
2023-05-09 09:07:36 +00:00
|
|
|
|
|
|
|
void subghz_txrx_need_save_callback_set(
|
2023-05-09 16:10:56 +00:00
|
|
|
SubGhzTxRx* instance,
|
2023-05-09 09:07:36 +00:00
|
|
|
SubGhzTxRxNeedSaveCallback callback,
|
|
|
|
void* context);
|
2023-05-09 16:10:56 +00:00
|
|
|
FlipperFormat* subghz_txtx_get_fff_data(SubGhzTxRx* instance);
|
|
|
|
SubGhzSetting* subghz_txrx_get_setting(SubGhzTxRx* instance);
|
2023-05-09 09:07:36 +00:00
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
bool subghz_txrx_protocol_is_preserved(SubGhzTxRx* instance);
|
|
|
|
bool subghz_txrx_protocol_is_send(SubGhzTxRx* instance, bool check_type);
|
2023-05-09 12:22:08 +00:00
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
void subghz_txrx_receiver_set_filter(SubGhzTxRx* instance, SubGhzProtocolFlag filter);
|
2023-05-09 12:58:56 +00:00
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
void subghz_txrx_set_rx_calback(
|
|
|
|
SubGhzTxRx* instance,
|
|
|
|
SubGhzReceiverCallback callback,
|
|
|
|
void* context);
|
2023-05-09 15:24:25 +00:00
|
|
|
void subghz_txrx_set_raw_file_encoder_worker_set_callback_end(
|
2023-05-09 16:10:56 +00:00
|
|
|
SubGhzTxRx* instance,
|
2023-05-09 15:24:25 +00:00
|
|
|
SubGhzProtocolEncoderRAWCallbackEnd callback,
|
|
|
|
void* context);
|
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
void subghz_txrx_set_debug_pin_state(SubGhzTxRx* instance, bool state);
|
|
|
|
bool subghz_txrx_get_debug_pin_state(SubGhzTxRx* instance);
|
2023-05-09 15:24:38 +00:00
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
SubGhzReceiver* subghz_txrx_get_receiver(SubGhzTxRx* instance); // TODO use only in DecodeRaw
|
2023-05-09 15:24:25 +00:00
|
|
|
|
2023-05-09 09:07:36 +00:00
|
|
|
//#############Create new Key##############
|
2023-05-09 16:10:56 +00:00
|
|
|
bool subghz_txrx_gen_data_protocol(
|
2023-05-09 09:07:36 +00:00
|
|
|
void* context,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
const char* protocol_name,
|
|
|
|
uint64_t key,
|
|
|
|
uint32_t bit);
|
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
bool subghz_txrx_gen_data_protocol_and_te(
|
|
|
|
SubGhzTxRx* instance,
|
2023-05-09 09:07:36 +00:00
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
const char* protocol_name,
|
|
|
|
uint64_t key,
|
|
|
|
uint32_t bit,
|
|
|
|
uint32_t te);
|
|
|
|
|
|
|
|
bool subghz_scene_set_type_submenu_gen_data_keeloq(
|
|
|
|
SubGhzTxRx* txrx,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint16_t cnt,
|
|
|
|
const char* manufacture_name);
|
|
|
|
|
|
|
|
bool subghz_scene_set_type_submenu_gen_data_keeloq_bft( //TODO rename
|
|
|
|
void* context,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint16_t cnt,
|
|
|
|
uint32_t seed,
|
|
|
|
const char* manufacture_name);
|
|
|
|
|
|
|
|
bool subghz_scene_set_type_submenu_gen_data_nice_flor( //TODO rename
|
|
|
|
void* context,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint16_t cnt,
|
|
|
|
bool nice_one);
|
|
|
|
|
|
|
|
bool subghz_scene_set_type_submenu_gen_data_faac_slh( //TODO rename
|
|
|
|
void* context,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint16_t cnt,
|
|
|
|
uint32_t seed,
|
|
|
|
const char* manufacture_name);
|
|
|
|
|
|
|
|
bool subghz_scene_set_type_submenu_gen_data_alutech_at_4n( //TODO rename
|
|
|
|
void* context,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint16_t cnt);
|
|
|
|
|
|
|
|
bool subghz_scene_set_type_submenu_gen_data_somfy_telis( //TODO rename
|
|
|
|
void* context,
|
|
|
|
const char* preset_name,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint16_t cnt);
|
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
bool subghz_txrx_gen_secplus_v2_protocol(
|
2023-05-09 09:07:36 +00:00
|
|
|
SubGhzTxRx* txrx,
|
|
|
|
const char* name_preset,
|
|
|
|
uint32_t frequency,
|
|
|
|
uint32_t serial,
|
|
|
|
uint8_t btn,
|
|
|
|
uint32_t cnt);
|
|
|
|
|
2023-05-09 16:10:56 +00:00
|
|
|
bool subghz_txrx_gen_secplus_v1_protocol(
|
|
|
|
SubGhzTxRx* txrx,
|
|
|
|
const char* name_preset,
|
|
|
|
uint32_t frequency);
|