mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 03:48:35 -07:00
Merge branch 'dev' of https://github.com/Flipper-XFW/Xtreme-Firmware into new-app-system
This commit is contained in:
@@ -25,8 +25,12 @@ typedef enum {
|
|||||||
SubmenuIndexStilmatic,
|
SubmenuIndexStilmatic,
|
||||||
SubmenuIndexDTMNeo433,
|
SubmenuIndexDTMNeo433,
|
||||||
SubmenuIndexGibidi433,
|
SubmenuIndexGibidi433,
|
||||||
|
SubmenuIndexNiceMHouse_433_92,
|
||||||
|
SubmenuIndexJCM_433_92,
|
||||||
|
SubmenuIndexNormstahl_433_92,
|
||||||
SubmenuIndexGSN,
|
SubmenuIndexGSN,
|
||||||
SubmenuIndexAprimatic,
|
SubmenuIndexAprimatic,
|
||||||
|
SubmenuIndexHCS101_433_92,
|
||||||
SubmenuIndexANMotorsAT4,
|
SubmenuIndexANMotorsAT4,
|
||||||
SubmenuIndexAlutechAT4N,
|
SubmenuIndexAlutechAT4N,
|
||||||
SubmenuIndexNiceFlo12bit,
|
SubmenuIndexNiceFlo12bit,
|
||||||
@@ -51,9 +55,9 @@ typedef enum {
|
|||||||
SubmenuIndexGateTX,
|
SubmenuIndexGateTX,
|
||||||
SubmenuIndexDoorHan_315_00,
|
SubmenuIndexDoorHan_315_00,
|
||||||
SubmenuIndexDoorHan_433_92,
|
SubmenuIndexDoorHan_433_92,
|
||||||
SubmenuIndexLiftMaster_315_00,
|
SubmenuIndexSecPlus_v1_315_00,
|
||||||
SubmenuIndexLiftMaster_390_00,
|
SubmenuIndexSecPlus_v1_390_00,
|
||||||
SubmenuIndexLiftMaster_433_00,
|
SubmenuIndexSecPlus_v1_433_00,
|
||||||
SubmenuIndexSecPlus_v2_310_00,
|
SubmenuIndexSecPlus_v2_310_00,
|
||||||
SubmenuIndexSecPlus_v2_315_00,
|
SubmenuIndexSecPlus_v2_315_00,
|
||||||
SubmenuIndexSecPlus_v2_390_00,
|
SubmenuIndexSecPlus_v2_390_00,
|
||||||
|
|||||||
@@ -5,19 +5,21 @@
|
|||||||
|
|
||||||
enum SubGhzSettingIndex {
|
enum SubGhzSettingIndex {
|
||||||
SubGhzSettingIndexFrequency,
|
SubGhzSettingIndexFrequency,
|
||||||
SubGhzSettingIndexHopping,
|
|
||||||
SubGhzSettingIndexModulation,
|
SubGhzSettingIndexModulation,
|
||||||
|
SubGhzSettingIndexHopping,
|
||||||
|
SubGhzSettingIndexRAWSound = SubGhzSettingIndexHopping,
|
||||||
SubGhzSettingIndexBinRAW,
|
SubGhzSettingIndexBinRAW,
|
||||||
|
SubGhzSettingIndexRAWRSSIThreshold = SubGhzSettingIndexBinRAW,
|
||||||
SubGhzSettingIndexIgnoreStarline,
|
SubGhzSettingIndexIgnoreStarline,
|
||||||
SubGhzSettingIndexIgnoreCars,
|
SubGhzSettingIndexIgnoreCars,
|
||||||
SubGhzSettingIndexIgnoreMagellan,
|
SubGhzSettingIndexIgnoreMagellan,
|
||||||
|
SubGhzSettingIndexIgnorePrinceton,
|
||||||
|
SubGhzSettingIndexIgnoreNiceFlorS,
|
||||||
SubGhzSettingIndexIgnoreWeather,
|
SubGhzSettingIndexIgnoreWeather,
|
||||||
SubGhzSettingIndexIgnoreTPMS,
|
SubGhzSettingIndexIgnoreTPMS,
|
||||||
SubGhzSettingIndexIgnorePrinceton,
|
|
||||||
SubGhzSettingIndexSound,
|
SubGhzSettingIndexSound,
|
||||||
SubGhzSettingIndexResetToDefault,
|
SubGhzSettingIndexResetToDefault,
|
||||||
SubGhzSettingIndexLock,
|
SubGhzSettingIndexLock,
|
||||||
SubGhzSettingIndexRAWThresholdRSSI,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RAW_THRESHOLD_RSSI_COUNT 11
|
#define RAW_THRESHOLD_RSSI_COUNT 11
|
||||||
@@ -71,8 +73,9 @@ const char* const combobox_text[COMBO_BOX_COUNT] = {
|
|||||||
"ON",
|
"ON",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void subghz_scene_receiver_config_set_ignore_filter(
|
||||||
subghz_scene_receiver_config_set_ignore_filter(VariableItem* item, SubGhzProtocolFlag filter) {
|
VariableItem* item,
|
||||||
|
SubGhzProtocolFilter filter) {
|
||||||
SubGhz* subghz = variable_item_get_context(item);
|
SubGhz* subghz = variable_item_get_context(item);
|
||||||
uint8_t index = variable_item_get_current_value_index(item);
|
uint8_t index = variable_item_get_current_value_index(item);
|
||||||
|
|
||||||
@@ -265,32 +268,36 @@ static void subghz_scene_receiver_config_set_raw_threshold_rssi(VariableItem* it
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline bool subghz_scene_receiver_config_ignore_filter_get_index(
|
static inline bool subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
SubGhzProtocolFlag filter,
|
SubGhzProtocolFilter filter,
|
||||||
SubGhzProtocolFlag flag) {
|
SubGhzProtocolFilter flag) {
|
||||||
return READ_BIT(filter, flag) > 0;
|
return READ_BIT(filter, flag) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void subghz_scene_receiver_config_set_starline(VariableItem* item) {
|
static void subghz_scene_receiver_config_set_starline(VariableItem* item) {
|
||||||
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_StarLine);
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_StarLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void subghz_scene_receiver_config_set_auto_alarms(VariableItem* item) {
|
static void subghz_scene_receiver_config_set_auto_alarms(VariableItem* item) {
|
||||||
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_AutoAlarms);
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_AutoAlarms);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void subghz_scene_receiver_config_set_magellan(VariableItem* item) {
|
static void subghz_scene_receiver_config_set_magellan(VariableItem* item) {
|
||||||
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_Magellan);
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Magellan);
|
||||||
}
|
|
||||||
|
|
||||||
static void subghz_scene_receiver_config_set_weather(VariableItem* item) {
|
|
||||||
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_Weather);
|
|
||||||
}
|
|
||||||
static void subghz_scene_receiver_config_set_tpms(VariableItem* item) {
|
|
||||||
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_TPMS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void subghz_scene_receiver_config_set_princeton(VariableItem* item) {
|
static void subghz_scene_receiver_config_set_princeton(VariableItem* item) {
|
||||||
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_Princeton);
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Princeton);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void subghz_scene_receiver_config_set_niceflors(VariableItem* item) {
|
||||||
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_NiceFlorS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void subghz_scene_receiver_config_set_weather(VariableItem* item) {
|
||||||
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Weather);
|
||||||
|
}
|
||||||
|
static void subghz_scene_receiver_config_set_tpms(VariableItem* item) {
|
||||||
|
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_TPMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
|
static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
|
||||||
@@ -351,7 +358,7 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Frequency:",
|
"Frequency",
|
||||||
subghz_setting_get_frequency_count(setting),
|
subghz_setting_get_frequency_count(setting),
|
||||||
subghz_scene_receiver_config_set_frequency,
|
subghz_scene_receiver_config_set_frequency,
|
||||||
subghz);
|
subghz);
|
||||||
@@ -371,7 +378,7 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Modulation:",
|
"Modulation",
|
||||||
subghz_setting_get_preset_count(setting),
|
subghz_setting_get_preset_count(setting),
|
||||||
subghz_scene_receiver_config_set_preset,
|
subghz_scene_receiver_config_set_preset,
|
||||||
subghz);
|
subghz);
|
||||||
@@ -386,7 +393,7 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||||||
// Hopping
|
// Hopping
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Hopping:",
|
"Hopping",
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_hopping_running,
|
subghz_scene_receiver_config_set_hopping_running,
|
||||||
subghz);
|
subghz);
|
||||||
@@ -400,7 +407,7 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||||||
SubGhzCustomEventManagerSet) {
|
SubGhzCustomEventManagerSet) {
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Bin RAW:",
|
"Bin RAW",
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_bin_raw,
|
subghz_scene_receiver_config_set_bin_raw,
|
||||||
subghz);
|
subghz);
|
||||||
@@ -414,73 +421,85 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||||||
SubGhzCustomEventManagerSet) {
|
SubGhzCustomEventManagerSet) {
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Ignore Starline:",
|
"Ignore Starline",
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_starline,
|
subghz_scene_receiver_config_set_starline,
|
||||||
subghz);
|
subghz);
|
||||||
|
|
||||||
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
subghz->ignore_filter, SubGhzProtocolFlag_StarLine);
|
subghz->ignore_filter, SubGhzProtocolFilter_StarLine);
|
||||||
variable_item_set_current_value_index(item, value_index);
|
variable_item_set_current_value_index(item, value_index);
|
||||||
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Ignore Cars:",
|
"Ignore Cars",
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_auto_alarms,
|
subghz_scene_receiver_config_set_auto_alarms,
|
||||||
subghz);
|
subghz);
|
||||||
|
|
||||||
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
subghz->ignore_filter, SubGhzProtocolFlag_AutoAlarms);
|
subghz->ignore_filter, SubGhzProtocolFilter_AutoAlarms);
|
||||||
variable_item_set_current_value_index(item, value_index);
|
variable_item_set_current_value_index(item, value_index);
|
||||||
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Ignore Magellan:",
|
"Ignore Magellan",
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_magellan,
|
subghz_scene_receiver_config_set_magellan,
|
||||||
subghz);
|
subghz);
|
||||||
|
|
||||||
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
subghz->ignore_filter, SubGhzProtocolFlag_Magellan);
|
subghz->ignore_filter, SubGhzProtocolFilter_Magellan);
|
||||||
variable_item_set_current_value_index(item, value_index);
|
variable_item_set_current_value_index(item, value_index);
|
||||||
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Ignore Weather:",
|
"Ignore Princeton",
|
||||||
COMBO_BOX_COUNT,
|
|
||||||
subghz_scene_receiver_config_set_weather,
|
|
||||||
subghz);
|
|
||||||
|
|
||||||
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
|
||||||
subghz->ignore_filter, SubGhzProtocolFlag_Weather);
|
|
||||||
variable_item_set_current_value_index(item, value_index);
|
|
||||||
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
|
||||||
|
|
||||||
item = variable_item_list_add(
|
|
||||||
subghz->variable_item_list,
|
|
||||||
"Ignore TPMS:",
|
|
||||||
COMBO_BOX_COUNT,
|
|
||||||
subghz_scene_receiver_config_set_tpms,
|
|
||||||
subghz);
|
|
||||||
|
|
||||||
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
|
||||||
subghz->ignore_filter, SubGhzProtocolFlag_TPMS);
|
|
||||||
variable_item_set_current_value_index(item, value_index);
|
|
||||||
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
|
||||||
|
|
||||||
item = variable_item_list_add(
|
|
||||||
subghz->variable_item_list,
|
|
||||||
"Ignore Princeton:",
|
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_princeton,
|
subghz_scene_receiver_config_set_princeton,
|
||||||
subghz);
|
subghz);
|
||||||
|
|
||||||
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
subghz->ignore_filter, SubGhzProtocolFlag_Princeton);
|
subghz->ignore_filter, SubGhzProtocolFilter_Princeton);
|
||||||
|
variable_item_set_current_value_index(item, value_index);
|
||||||
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
|
|
||||||
|
item = variable_item_list_add(
|
||||||
|
subghz->variable_item_list,
|
||||||
|
"Ignore Nice Flor-S / Nice One",
|
||||||
|
COMBO_BOX_COUNT,
|
||||||
|
subghz_scene_receiver_config_set_niceflors,
|
||||||
|
subghz);
|
||||||
|
|
||||||
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
|
subghz->ignore_filter, SubGhzProtocolFilter_NiceFlorS);
|
||||||
|
variable_item_set_current_value_index(item, value_index);
|
||||||
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
|
|
||||||
|
item = variable_item_list_add(
|
||||||
|
subghz->variable_item_list,
|
||||||
|
"Ignore Weather",
|
||||||
|
COMBO_BOX_COUNT,
|
||||||
|
subghz_scene_receiver_config_set_weather,
|
||||||
|
subghz);
|
||||||
|
|
||||||
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
|
subghz->ignore_filter, SubGhzProtocolFilter_Weather);
|
||||||
|
variable_item_set_current_value_index(item, value_index);
|
||||||
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
|
|
||||||
|
item = variable_item_list_add(
|
||||||
|
subghz->variable_item_list,
|
||||||
|
"Ignore TPMS",
|
||||||
|
COMBO_BOX_COUNT,
|
||||||
|
subghz_scene_receiver_config_set_tpms,
|
||||||
|
subghz);
|
||||||
|
|
||||||
|
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
|
||||||
|
subghz->ignore_filter, SubGhzProtocolFilter_TPMS);
|
||||||
variable_item_set_current_value_index(item, value_index);
|
variable_item_set_current_value_index(item, value_index);
|
||||||
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
variable_item_set_current_value_text(item, combobox_text[value_index]);
|
||||||
}
|
}
|
||||||
@@ -488,7 +507,7 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
|||||||
// Enable speaker, will send all incoming noises and signals to speaker so you can listen how your remote sounds like :)
|
// Enable speaker, will send all incoming noises and signals to speaker so you can listen how your remote sounds like :)
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
subghz->variable_item_list,
|
subghz->variable_item_list,
|
||||||
"Sound:",
|
"Sound",
|
||||||
COMBO_BOX_COUNT,
|
COMBO_BOX_COUNT,
|
||||||
subghz_scene_receiver_config_set_speaker,
|
subghz_scene_receiver_config_set_speaker,
|
||||||
subghz);
|
subghz);
|
||||||
|
|||||||
@@ -67,6 +67,12 @@ void subghz_scene_set_type_on_enter(void* context) {
|
|||||||
SubmenuIndexAlutechAT4N,
|
SubmenuIndexAlutechAT4N,
|
||||||
subghz_scene_set_type_submenu_callback,
|
subghz_scene_set_type_submenu_callback,
|
||||||
subghz);
|
subghz);
|
||||||
|
submenu_add_item(
|
||||||
|
subghz->submenu,
|
||||||
|
"KL: HCS101 433MHz",
|
||||||
|
SubmenuIndexHCS101_433_92,
|
||||||
|
subghz_scene_set_type_submenu_callback,
|
||||||
|
subghz);
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
subghz->submenu,
|
subghz->submenu,
|
||||||
"KL: DoorHan 315MHz",
|
"KL: DoorHan 315MHz",
|
||||||
@@ -163,6 +169,24 @@ void subghz_scene_set_type_on_enter(void* context) {
|
|||||||
SubmenuIndexElmesElectronic,
|
SubmenuIndexElmesElectronic,
|
||||||
subghz_scene_set_type_submenu_callback,
|
subghz_scene_set_type_submenu_callback,
|
||||||
subghz);
|
subghz);
|
||||||
|
submenu_add_item(
|
||||||
|
subghz->submenu,
|
||||||
|
"KL: Normstahl 433MHz",
|
||||||
|
SubmenuIndexNormstahl_433_92,
|
||||||
|
subghz_scene_set_type_submenu_callback,
|
||||||
|
subghz);
|
||||||
|
submenu_add_item(
|
||||||
|
subghz->submenu,
|
||||||
|
"KL: JCM Tech 433MHz",
|
||||||
|
SubmenuIndexJCM_433_92,
|
||||||
|
subghz_scene_set_type_submenu_callback,
|
||||||
|
subghz);
|
||||||
|
submenu_add_item(
|
||||||
|
subghz->submenu,
|
||||||
|
"KL: Nice Mhouse 433MHz",
|
||||||
|
SubmenuIndexNiceMHouse_433_92,
|
||||||
|
subghz_scene_set_type_submenu_callback,
|
||||||
|
subghz);
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
subghz->submenu,
|
subghz->submenu,
|
||||||
"KL: Nice Smilo 433MHz",
|
"KL: Nice Smilo 433MHz",
|
||||||
@@ -278,19 +302,19 @@ void subghz_scene_set_type_on_enter(void* context) {
|
|||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
subghz->submenu,
|
subghz->submenu,
|
||||||
"Security+1.0 315MHz",
|
"Security+1.0 315MHz",
|
||||||
SubmenuIndexLiftMaster_315_00,
|
SubmenuIndexSecPlus_v1_315_00,
|
||||||
subghz_scene_set_type_submenu_callback,
|
subghz_scene_set_type_submenu_callback,
|
||||||
subghz);
|
subghz);
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
subghz->submenu,
|
subghz->submenu,
|
||||||
"Security+1.0 390MHz",
|
"Security+1.0 390MHz",
|
||||||
SubmenuIndexLiftMaster_390_00,
|
SubmenuIndexSecPlus_v1_390_00,
|
||||||
subghz_scene_set_type_submenu_callback,
|
subghz_scene_set_type_submenu_callback,
|
||||||
subghz);
|
subghz);
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
subghz->submenu,
|
subghz->submenu,
|
||||||
"Security+1.0 433MHz",
|
"Security+1.0 433MHz",
|
||||||
SubmenuIndexLiftMaster_433_00,
|
SubmenuIndexSecPlus_v1_433_00,
|
||||||
subghz_scene_set_type_submenu_callback,
|
subghz_scene_set_type_submenu_callback,
|
||||||
subghz);
|
subghz);
|
||||||
submenu_add_item(
|
submenu_add_item(
|
||||||
@@ -371,7 +395,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
|
|||||||
subghz->txrx, "AM650", 433920000, SUBGHZ_PROTOCOL_CAME_NAME, key, 24);
|
subghz->txrx, "AM650", 433920000, SUBGHZ_PROTOCOL_CAME_NAME, key, 24);
|
||||||
break;
|
break;
|
||||||
case SubmenuIndexCAME12bit868:
|
case SubmenuIndexCAME12bit868:
|
||||||
key = (key & 0x0000FFF0) | 0x1; //btn 0x1, 0x2, 0x4
|
key = (key & 0x00000FF0) | 0x1; //btn 0x1, 0x2, 0x4
|
||||||
generated_protocol = subghz_txrx_gen_data_protocol(
|
generated_protocol = subghz_txrx_gen_data_protocol(
|
||||||
subghz->txrx, "AM650", 868350000, SUBGHZ_PROTOCOL_CAME_NAME, key, 12);
|
subghz->txrx, "AM650", 868350000, SUBGHZ_PROTOCOL_CAME_NAME, key, 12);
|
||||||
break;
|
break;
|
||||||
@@ -702,15 +726,51 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
|
|||||||
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
|
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SubmenuIndexLiftMaster_315_00:
|
case SubmenuIndexNiceMHouse_433_92:
|
||||||
|
generated_protocol = subghz_txrx_gen_keeloq_protocol(
|
||||||
|
subghz->txrx, "AM650", 433920000, key & 0x00FFFFFF, 0x2, 0x0003, "NICE_MHOUSE");
|
||||||
|
if(!generated_protocol) {
|
||||||
|
furi_string_set(
|
||||||
|
subghz->error_str, "Function requires\nan SD card with\nfresh databases.");
|
||||||
|
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SubmenuIndexJCM_433_92:
|
||||||
|
generated_protocol = subghz_txrx_gen_keeloq_protocol(
|
||||||
|
subghz->txrx, "AM650", 433920000, key & 0x00FFFFFF, 0x2, 0x0003, "JCM_Tech");
|
||||||
|
if(!generated_protocol) {
|
||||||
|
furi_string_set(
|
||||||
|
subghz->error_str, "Function requires\nan SD card with\nfresh databases.");
|
||||||
|
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SubmenuIndexNormstahl_433_92:
|
||||||
|
generated_protocol = subghz_txrx_gen_keeloq_protocol(
|
||||||
|
subghz->txrx, "AM650", 433920000, key & 0x00FFFFFF, 0x2, 0x0003, "Normstahl");
|
||||||
|
if(!generated_protocol) {
|
||||||
|
furi_string_set(
|
||||||
|
subghz->error_str, "Function requires\nan SD card with\nfresh databases.");
|
||||||
|
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SubmenuIndexHCS101_433_92:
|
||||||
|
generated_protocol = subghz_txrx_gen_keeloq_protocol(
|
||||||
|
subghz->txrx, "AM650", 433920000, key & 0x000FFFFF, 0x2, 0x0003, "HCS101");
|
||||||
|
if(!generated_protocol) {
|
||||||
|
furi_string_set(
|
||||||
|
subghz->error_str, "Function requires\nan SD card with\nfresh databases.");
|
||||||
|
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SubmenuIndexSecPlus_v1_315_00:
|
||||||
generated_protocol =
|
generated_protocol =
|
||||||
subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 315000000);
|
subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 315000000);
|
||||||
break;
|
break;
|
||||||
case SubmenuIndexLiftMaster_390_00:
|
case SubmenuIndexSecPlus_v1_390_00:
|
||||||
generated_protocol =
|
generated_protocol =
|
||||||
subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 390000000);
|
subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 390000000);
|
||||||
break;
|
break;
|
||||||
case SubmenuIndexLiftMaster_433_00:
|
case SubmenuIndexSecPlus_v1_433_00:
|
||||||
generated_protocol =
|
generated_protocol =
|
||||||
subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 433920000);
|
subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 433920000);
|
||||||
break;
|
break;
|
||||||
@@ -730,6 +790,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
|
|||||||
subghz->txrx, "AM650", 390000000, key, 0x68, 0xE500000);
|
subghz->txrx, "AM650", 390000000, key, 0x68, 0xE500000);
|
||||||
break;
|
break;
|
||||||
case SubmenuIndexSecPlus_v2_433_00:
|
case SubmenuIndexSecPlus_v2_433_00:
|
||||||
|
key = (key & 0x7FFFF3FC); // 850LM pairing
|
||||||
generated_protocol = subghz_txrx_gen_secplus_v2_protocol(
|
generated_protocol = subghz_txrx_gen_secplus_v2_protocol(
|
||||||
subghz->txrx, "AM650", 433920000, key, 0x68, 0xE500000);
|
subghz->txrx, "AM650", 433920000, key, 0x68, 0xE500000);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ struct SubGhz {
|
|||||||
SubGhzLastSettings* last_settings;
|
SubGhzLastSettings* last_settings;
|
||||||
|
|
||||||
SubGhzProtocolFlag filter;
|
SubGhzProtocolFlag filter;
|
||||||
SubGhzProtocolFlag ignore_filter;
|
SubGhzProtocolFilter ignore_filter;
|
||||||
FuriString* error_str;
|
FuriString* error_str;
|
||||||
SubGhzLock lock;
|
SubGhzLock lock;
|
||||||
|
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ void subghz_last_settings_log(SubGhzLastSettings* instance) {
|
|||||||
TAG,
|
TAG,
|
||||||
"Frequency: %03ld.%02ld, FeedbackLevel: %ld, FATrigger: %.2f, External: %s, ExtPower: %s, TimestampNames: %s, ExtPowerAmp: %s,\n"
|
"Frequency: %03ld.%02ld, FeedbackLevel: %ld, FATrigger: %.2f, External: %s, ExtPower: %s, TimestampNames: %s, ExtPowerAmp: %s,\n"
|
||||||
"GPSBaudrate: %ld, Hopping: %s,\nPreset: %ld, RSSI: %.2f, "
|
"GPSBaudrate: %ld, Hopping: %s,\nPreset: %ld, RSSI: %.2f, "
|
||||||
"Starline: %s, Cars: %s, Magellan: %s, BinRAW: %s",
|
"BinRAW: %s, Starline: %s, Cars: %s, Magellan: %s, NiceFloR-S: %s, Weather: %s, TPMS: %s",
|
||||||
instance->frequency / 1000000 % 1000,
|
instance->frequency / 1000000 % 1000,
|
||||||
instance->frequency / 10000 % 100,
|
instance->frequency / 10000 % 100,
|
||||||
instance->frequency_analyzer_feedback_level,
|
instance->frequency_analyzer_feedback_level,
|
||||||
@@ -327,11 +327,17 @@ void subghz_last_settings_log(SubGhzLastSettings* instance) {
|
|||||||
bool_to_char(instance->enable_hopping),
|
bool_to_char(instance->enable_hopping),
|
||||||
instance->preset_index,
|
instance->preset_index,
|
||||||
(double)instance->rssi,
|
(double)instance->rssi,
|
||||||
|
subghz_last_settings_log_filter_get_index(instance->filter, SubGhzProtocolFlag_BinRAW),
|
||||||
subghz_last_settings_log_filter_get_index(
|
subghz_last_settings_log_filter_get_index(
|
||||||
instance->ignore_filter, SubGhzProtocolFlag_StarLine),
|
instance->ignore_filter, SubGhzProtocolFilter_StarLine),
|
||||||
subghz_last_settings_log_filter_get_index(
|
subghz_last_settings_log_filter_get_index(
|
||||||
instance->ignore_filter, SubGhzProtocolFlag_AutoAlarms),
|
instance->ignore_filter, SubGhzProtocolFilter_AutoAlarms),
|
||||||
subghz_last_settings_log_filter_get_index(
|
subghz_last_settings_log_filter_get_index(
|
||||||
instance->ignore_filter, SubGhzProtocolFlag_Magellan),
|
instance->ignore_filter, SubGhzProtocolFilter_Magellan),
|
||||||
subghz_last_settings_log_filter_get_index(instance->filter, SubGhzProtocolFlag_BinRAW));
|
subghz_last_settings_log_filter_get_index(
|
||||||
|
instance->ignore_filter, SubGhzProtocolFilter_NiceFlorS),
|
||||||
|
subghz_last_settings_log_filter_get_index(
|
||||||
|
instance->ignore_filter, SubGhzProtocolFilter_Weather),
|
||||||
|
subghz_last_settings_log_filter_get_index(
|
||||||
|
instance->ignore_filter, SubGhzProtocolFilter_TPMS));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,10 +136,12 @@ FURI_NORETURN void __furi_crash() {
|
|||||||
|
|
||||||
if(__furi_check_message == NULL) {
|
if(__furi_check_message == NULL) {
|
||||||
__furi_check_message = "Fatal Error";
|
__furi_check_message = "Fatal Error";
|
||||||
|
#ifndef __FURI_TRACE
|
||||||
} else if(__furi_check_message == (void*)__FURI_ASSERT_MESSAGE_FLAG) {
|
} else if(__furi_check_message == (void*)__FURI_ASSERT_MESSAGE_FLAG) {
|
||||||
__furi_check_message = "furi_assert failed";
|
__furi_check_message = "furi_assert failed";
|
||||||
} else if(__furi_check_message == (void*)__FURI_CHECK_MESSAGE_FLAG) {
|
} else if(__furi_check_message == (void*)__FURI_CHECK_MESSAGE_FLAG) {
|
||||||
__furi_check_message = "furi_check failed";
|
__furi_check_message = "furi_check failed";
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
furi_hal_console_puts("\r\n\033[0;31m[CRASH]");
|
furi_hal_console_puts("\r\n\033[0;31m[CRASH]");
|
||||||
|
|||||||
@@ -23,9 +23,16 @@ extern "C" {
|
|||||||
#define FURI_NORETURN noreturn
|
#define FURI_NORETURN noreturn
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define __FURI_TRACE
|
||||||
|
|
||||||
// Flags instead of pointers will save ~4 bytes on furi_assert and furi_check calls.
|
// Flags instead of pointers will save ~4 bytes on furi_assert and furi_check calls.
|
||||||
|
#ifndef __FURI_TRACE
|
||||||
#define __FURI_ASSERT_MESSAGE_FLAG (0x01)
|
#define __FURI_ASSERT_MESSAGE_FLAG (0x01)
|
||||||
#define __FURI_CHECK_MESSAGE_FLAG (0x02)
|
#define __FURI_CHECK_MESSAGE_FLAG (0x02)
|
||||||
|
#else
|
||||||
|
#define __FURI_ASSERT_MESSAGE_FLAG __FILE__
|
||||||
|
#define __FURI_CHECK_MESSAGE_FLAG __FILE__
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Crash system */
|
/** Crash system */
|
||||||
FURI_NORETURN void __furi_crash();
|
FURI_NORETURN void __furi_crash();
|
||||||
|
|||||||
@@ -86,11 +86,13 @@ const SubGhzProtocol ws_protocol_acurite_592txr = {
|
|||||||
.name = WS_PROTOCOL_ACURITE_592TXR_NAME,
|
.name = WS_PROTOCOL_ACURITE_592TXR_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
||||||
|
|
||||||
.decoder = &ws_protocol_acurite_592txr_decoder,
|
.decoder = &ws_protocol_acurite_592txr_decoder,
|
||||||
.encoder = &ws_protocol_acurite_592txr_encoder,
|
.encoder = &ws_protocol_acurite_592txr_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_acurite_592txr_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_acurite_592txr_alloc(SubGhzEnvironment* environment) {
|
||||||
@@ -415,4 +417,4 @@ LevelDuration ws_protocol_encoder_acurite_592txr_yield(void* context) {
|
|||||||
void ws_protocol_encoder_acurite_592txr_stop(void* context) {
|
void ws_protocol_encoder_acurite_592txr_stop(void* context) {
|
||||||
WSProtocolEncoderAcurite_592TXR* instance = context;
|
WSProtocolEncoderAcurite_592TXR* instance = context;
|
||||||
instance->encoder.is_running = false;
|
instance->encoder.is_running = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,11 +69,13 @@ const SubGhzProtocol ws_protocol_acurite_606tx = {
|
|||||||
.name = WS_PROTOCOL_ACURITE_606TX_NAME,
|
.name = WS_PROTOCOL_ACURITE_606TX_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_acurite_606tx_decoder,
|
.decoder = &ws_protocol_acurite_606tx_decoder,
|
||||||
.encoder = &ws_protocol_acurite_606tx_encoder,
|
.encoder = &ws_protocol_acurite_606tx_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_acurite_606tx_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_acurite_606tx_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -70,11 +70,13 @@ const SubGhzProtocol ws_protocol_acurite_609txc = {
|
|||||||
.name = WS_PROTOCOL_ACURITE_609TXC_NAME,
|
.name = WS_PROTOCOL_ACURITE_609TXC_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_acurite_609txc_decoder,
|
.decoder = &ws_protocol_acurite_609txc_decoder,
|
||||||
.encoder = &ws_protocol_acurite_609txc_encoder,
|
.encoder = &ws_protocol_acurite_609txc_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_acurite_609txc_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_acurite_609txc_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -84,11 +84,13 @@ const SubGhzProtocol ws_protocol_ambient_weather = {
|
|||||||
.name = WS_PROTOCOL_AMBIENT_WEATHER_NAME,
|
.name = WS_PROTOCOL_AMBIENT_WEATHER_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_ambient_weather_decoder,
|
.decoder = &ws_protocol_ambient_weather_decoder,
|
||||||
.encoder = &ws_protocol_ambient_weather_encoder,
|
.encoder = &ws_protocol_ambient_weather_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_ambient_weather_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_ambient_weather_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -81,11 +81,13 @@ const SubGhzProtocol ws_protocol_auriol_ahfl = {
|
|||||||
.name = WS_PROTOCOL_AURIOL_AHFL_NAME,
|
.name = WS_PROTOCOL_AURIOL_AHFL_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_auriol_ahfl_decoder,
|
.decoder = &ws_protocol_auriol_ahfl_decoder,
|
||||||
.encoder = &ws_protocol_auriol_ahfl_encoder,
|
.encoder = &ws_protocol_auriol_ahfl_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_auriol_ahfl_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_auriol_ahfl_alloc(SubGhzEnvironment* environment) {
|
||||||
@@ -252,4 +254,4 @@ void ws_protocol_decoder_auriol_ahfl_get_string(void* context, FuriString* outpu
|
|||||||
instance->generic.battery_low,
|
instance->generic.battery_low,
|
||||||
(double)instance->generic.temp,
|
(double)instance->generic.temp,
|
||||||
instance->generic.humidity);
|
instance->generic.humidity);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,11 +80,13 @@ const SubGhzProtocol ws_protocol_auriol_th = {
|
|||||||
.name = WS_PROTOCOL_AURIOL_TH_NAME,
|
.name = WS_PROTOCOL_AURIOL_TH_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_auriol_th_decoder,
|
.decoder = &ws_protocol_auriol_th_decoder,
|
||||||
.encoder = &ws_protocol_auriol_th_encoder,
|
.encoder = &ws_protocol_auriol_th_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_auriol_th_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_auriol_th_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -83,11 +83,13 @@ const SubGhzProtocol ws_protocol_gt_wt_02 = {
|
|||||||
.name = WS_PROTOCOL_GT_WT_02_NAME,
|
.name = WS_PROTOCOL_GT_WT_02_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_gt_wt_02_decoder,
|
.decoder = &ws_protocol_gt_wt_02_decoder,
|
||||||
.encoder = &ws_protocol_gt_wt_02_encoder,
|
.encoder = &ws_protocol_gt_wt_02_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_gt_wt_02_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_gt_wt_02_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -109,11 +109,13 @@ const SubGhzProtocol ws_protocol_gt_wt_03 = {
|
|||||||
.name = WS_PROTOCOL_GT_WT_03_NAME,
|
.name = WS_PROTOCOL_GT_WT_03_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_gt_wt_03_decoder,
|
.decoder = &ws_protocol_gt_wt_03_decoder,
|
||||||
.encoder = &ws_protocol_gt_wt_03_encoder,
|
.encoder = &ws_protocol_gt_wt_03_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_gt_wt_03_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_gt_wt_03_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -94,11 +94,13 @@ const SubGhzProtocol ws_protocol_infactory = {
|
|||||||
.name = WS_PROTOCOL_INFACTORY_NAME,
|
.name = WS_PROTOCOL_INFACTORY_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_infactory_decoder,
|
.decoder = &ws_protocol_infactory_decoder,
|
||||||
.encoder = &ws_protocol_infactory_encoder,
|
.encoder = &ws_protocol_infactory_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_infactory_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_infactory_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -63,11 +63,12 @@ const SubGhzProtocolEncoder subghz_protocol_kia_encoder = {
|
|||||||
const SubGhzProtocol subghz_protocol_kia = {
|
const SubGhzProtocol subghz_protocol_kia = {
|
||||||
.name = SUBGHZ_PROTOCOL_KIA_NAME,
|
.name = SUBGHZ_PROTOCOL_KIA_NAME,
|
||||||
.type = SubGhzProtocolTypeDynamic,
|
.type = SubGhzProtocolTypeDynamic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable,
|
||||||
SubGhzProtocolFlag_AutoAlarms,
|
|
||||||
|
|
||||||
.decoder = &subghz_protocol_kia_decoder,
|
.decoder = &subghz_protocol_kia_decoder,
|
||||||
.encoder = &subghz_protocol_kia_encoder,
|
.encoder = &subghz_protocol_kia_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_AutoAlarms,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* subghz_protocol_decoder_kia_alloc(SubGhzEnvironment* environment) {
|
void* subghz_protocol_decoder_kia_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -98,10 +98,12 @@ const SubGhzProtocol ws_protocol_lacrosse_tx = {
|
|||||||
.name = WS_PROTOCOL_LACROSSE_TX_NAME,
|
.name = WS_PROTOCOL_LACROSSE_TX_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather,
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable,
|
||||||
|
|
||||||
.decoder = &ws_protocol_lacrosse_tx_decoder,
|
.decoder = &ws_protocol_lacrosse_tx_decoder,
|
||||||
.encoder = &ws_protocol_lacrosse_tx_encoder,
|
.encoder = &ws_protocol_lacrosse_tx_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_lacrosse_tx_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_lacrosse_tx_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -76,11 +76,13 @@ const SubGhzProtocol ws_protocol_lacrosse_tx141thbv2 = {
|
|||||||
.name = WS_PROTOCOL_LACROSSE_TX141THBV2_NAME,
|
.name = WS_PROTOCOL_LACROSSE_TX141THBV2_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_lacrosse_tx141thbv2_decoder,
|
.decoder = &ws_protocol_lacrosse_tx141thbv2_decoder,
|
||||||
.encoder = &ws_protocol_lacrosse_tx141thbv2_encoder,
|
.encoder = &ws_protocol_lacrosse_tx141thbv2_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_lacrosse_tx141thbv2_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_lacrosse_tx141thbv2_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -64,11 +64,12 @@ const SubGhzProtocol subghz_protocol_magellan = {
|
|||||||
.name = SUBGHZ_PROTOCOL_MAGELLAN_NAME,
|
.name = SUBGHZ_PROTOCOL_MAGELLAN_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send |
|
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
||||||
SubGhzProtocolFlag_Magellan,
|
|
||||||
|
|
||||||
.decoder = &subghz_protocol_magellan_decoder,
|
.decoder = &subghz_protocol_magellan_decoder,
|
||||||
.encoder = &subghz_protocol_magellan_encoder,
|
.encoder = &subghz_protocol_magellan_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Magellan,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* subghz_protocol_encoder_magellan_alloc(SubGhzEnvironment* environment) {
|
void* subghz_protocol_encoder_magellan_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -356,9 +356,11 @@ const SubGhzProtocol ws_protocol_nexus_th = {
|
|||||||
.name = WS_PROTOCOL_NEXUS_TH_NAME,
|
.name = WS_PROTOCOL_NEXUS_TH_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
||||||
|
|
||||||
.decoder = &ws_protocol_nexus_th_decoder,
|
.decoder = &ws_protocol_nexus_th_decoder,
|
||||||
.encoder = &ws_protocol_nexus_th_encoder,
|
.encoder = &ws_protocol_nexus_th_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -84,6 +84,8 @@ const SubGhzProtocol subghz_protocol_nice_flor_s = {
|
|||||||
|
|
||||||
.decoder = &subghz_protocol_nice_flor_s_decoder,
|
.decoder = &subghz_protocol_nice_flor_s_decoder,
|
||||||
.encoder = &subghz_protocol_nice_flor_s_encoder,
|
.encoder = &subghz_protocol_nice_flor_s_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_NiceFlorS,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void subghz_protocol_nice_flor_s_remote_controller(
|
static void subghz_protocol_nice_flor_s_remote_controller(
|
||||||
|
|||||||
@@ -424,7 +424,9 @@ const SubGhzProtocol ws_protocol_oregon2 = {
|
|||||||
.name = WS_PROTOCOL_OREGON2_NAME,
|
.name = WS_PROTOCOL_OREGON2_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
||||||
SubGhzProtocolFlag_Weather | SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_oregon2_decoder,
|
.decoder = &ws_protocol_oregon2_decoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -360,7 +360,9 @@ const SubGhzProtocol ws_protocol_oregon3 = {
|
|||||||
.name = WS_PROTOCOL_OREGON3_NAME,
|
.name = WS_PROTOCOL_OREGON3_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
||||||
SubGhzProtocolFlag_Weather | SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_oregon3_decoder,
|
.decoder = &ws_protocol_oregon3_decoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -95,11 +95,13 @@ const SubGhzProtocol ws_protocol_oregon_v1 = {
|
|||||||
.name = WS_PROTOCOL_OREGON_V1_NAME,
|
.name = WS_PROTOCOL_OREGON_V1_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_oregon_v1_decoder,
|
.decoder = &ws_protocol_oregon_v1_decoder,
|
||||||
.encoder = &ws_protocol_oregon_v1_encoder,
|
.encoder = &ws_protocol_oregon_v1_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_oregon_v1_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_oregon_v1_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -73,10 +73,12 @@ const SubGhzProtocol subghz_protocol_princeton = {
|
|||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_868 | SubGhzProtocolFlag_315 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_868 | SubGhzProtocolFlag_315 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send | SubGhzProtocolFlag_Princeton,
|
SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
||||||
|
|
||||||
.decoder = &subghz_protocol_princeton_decoder,
|
.decoder = &subghz_protocol_princeton_decoder,
|
||||||
.encoder = &subghz_protocol_princeton_encoder,
|
.encoder = &subghz_protocol_princeton_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Princeton,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* subghz_protocol_encoder_princeton_alloc(SubGhzEnvironment* environment) {
|
void* subghz_protocol_encoder_princeton_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -70,10 +70,12 @@ const SubGhzProtocol subghz_protocol_scher_khan = {
|
|||||||
.name = SUBGHZ_PROTOCOL_SCHER_KHAN_NAME,
|
.name = SUBGHZ_PROTOCOL_SCHER_KHAN_NAME,
|
||||||
.type = SubGhzProtocolTypeDynamic,
|
.type = SubGhzProtocolTypeDynamic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable |
|
||||||
SubGhzProtocolFlag_Save | SubGhzProtocolFlag_AutoAlarms,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &subghz_protocol_scher_khan_decoder,
|
.decoder = &subghz_protocol_scher_khan_decoder,
|
||||||
.encoder = &subghz_protocol_scher_khan_encoder,
|
.encoder = &subghz_protocol_scher_khan_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_AutoAlarms,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* subghz_protocol_decoder_scher_khan_alloc(SubGhzEnvironment* environment) {
|
void* subghz_protocol_decoder_scher_khan_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -101,11 +101,12 @@ const SubGhzProtocol tpms_protocol_schrader_gg4 = {
|
|||||||
.name = TPMS_PROTOCOL_SCHRADER_GG4_NAME,
|
.name = TPMS_PROTOCOL_SCHRADER_GG4_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_AM |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_AM |
|
||||||
SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_TPMS | SubGhzProtocolFlag_Load |
|
SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
||||||
SubGhzProtocolFlag_Save,
|
|
||||||
|
|
||||||
.decoder = &tpms_protocol_schrader_gg4_decoder,
|
.decoder = &tpms_protocol_schrader_gg4_decoder,
|
||||||
.encoder = &tpms_protocol_schrader_gg4_encoder,
|
.encoder = &tpms_protocol_schrader_gg4_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_TPMS,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* tpms_protocol_decoder_schrader_gg4_alloc(SubGhzEnvironment* environment) {
|
void* tpms_protocol_decoder_schrader_gg4_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -79,11 +79,12 @@ const SubGhzProtocol subghz_protocol_star_line = {
|
|||||||
.name = SUBGHZ_PROTOCOL_STAR_LINE_NAME,
|
.name = SUBGHZ_PROTOCOL_STAR_LINE_NAME,
|
||||||
.type = SubGhzProtocolTypeDynamic,
|
.type = SubGhzProtocolTypeDynamic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send |
|
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
|
||||||
SubGhzProtocolFlag_StarLine,
|
|
||||||
|
|
||||||
.decoder = &subghz_protocol_star_line_decoder,
|
.decoder = &subghz_protocol_star_line_decoder,
|
||||||
.encoder = &subghz_protocol_star_line_encoder,
|
.encoder = &subghz_protocol_star_line_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_StarLine,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -79,11 +79,13 @@ const SubGhzProtocol ws_protocol_thermopro_tx4 = {
|
|||||||
.name = WS_PROTOCOL_THERMOPRO_TX4_NAME,
|
.name = WS_PROTOCOL_THERMOPRO_TX4_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_thermopro_tx4_decoder,
|
.decoder = &ws_protocol_thermopro_tx4_decoder,
|
||||||
.encoder = &ws_protocol_thermopro_tx4_encoder,
|
.encoder = &ws_protocol_thermopro_tx4_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_thermopro_tx4_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_thermopro_tx4_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -90,11 +90,13 @@ const SubGhzProtocol ws_protocol_tx_8300 = {
|
|||||||
.name = WS_PROTOCOL_TX_8300_NAME,
|
.name = WS_PROTOCOL_TX_8300_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_tx_8300_decoder,
|
.decoder = &ws_protocol_tx_8300_decoder,
|
||||||
.encoder = &ws_protocol_tx_8300_encoder,
|
.encoder = &ws_protocol_tx_8300_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_tx_8300_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_tx_8300_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -84,11 +84,13 @@ const SubGhzProtocol ws_protocol_wendox_w6726 = {
|
|||||||
.name = WS_PROTOCOL_WENDOX_W6726_NAME,
|
.name = WS_PROTOCOL_WENDOX_W6726_NAME,
|
||||||
.type = SubGhzProtocolTypeStatic,
|
.type = SubGhzProtocolTypeStatic,
|
||||||
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 |
|
||||||
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather |
|
SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load |
|
||||||
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save,
|
SubGhzProtocolFlag_Save,
|
||||||
|
|
||||||
.decoder = &ws_protocol_wendox_w6726_decoder,
|
.decoder = &ws_protocol_wendox_w6726_decoder,
|
||||||
.encoder = &ws_protocol_wendox_w6726_encoder,
|
.encoder = &ws_protocol_wendox_w6726_encoder,
|
||||||
|
|
||||||
|
.filter = SubGhzProtocolFilter_Weather,
|
||||||
};
|
};
|
||||||
|
|
||||||
void* ws_protocol_decoder_wendox_w6726_alloc(SubGhzEnvironment* environment) {
|
void* ws_protocol_decoder_wendox_w6726_alloc(SubGhzEnvironment* environment) {
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ typedef enum {
|
|||||||
SubGhzProtocolTypeStatic,
|
SubGhzProtocolTypeStatic,
|
||||||
SubGhzProtocolTypeDynamic,
|
SubGhzProtocolTypeDynamic,
|
||||||
SubGhzProtocolTypeRAW,
|
SubGhzProtocolTypeRAW,
|
||||||
|
SubGhzProtocolWeatherStation, // Unused, kept for compatibility
|
||||||
SubGhzProtocolCustom,
|
SubGhzProtocolCustom,
|
||||||
SubGhzProtocolTypeBinRAW,
|
SubGhzProtocolTypeBinRAW,
|
||||||
} SubGhzProtocolType;
|
} SubGhzProtocolType;
|
||||||
@@ -128,14 +129,18 @@ typedef enum {
|
|||||||
SubGhzProtocolFlag_Load = (1 << 8),
|
SubGhzProtocolFlag_Load = (1 << 8),
|
||||||
SubGhzProtocolFlag_Send = (1 << 9),
|
SubGhzProtocolFlag_Send = (1 << 9),
|
||||||
SubGhzProtocolFlag_BinRAW = (1 << 10),
|
SubGhzProtocolFlag_BinRAW = (1 << 10),
|
||||||
SubGhzProtocolFlag_StarLine = (1 << 11),
|
|
||||||
SubGhzProtocolFlag_AutoAlarms = (1 << 12),
|
|
||||||
SubGhzProtocolFlag_Magellan = (1 << 13),
|
|
||||||
SubGhzProtocolFlag_Princeton = (1 << 14),
|
|
||||||
SubGhzProtocolFlag_Weather = (1 << 15),
|
|
||||||
SubGhzProtocolFlag_TPMS = (1 << 16),
|
|
||||||
} SubGhzProtocolFlag;
|
} SubGhzProtocolFlag;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SubGhzProtocolFilter_StarLine = (1 << 0),
|
||||||
|
SubGhzProtocolFilter_AutoAlarms = (1 << 1),
|
||||||
|
SubGhzProtocolFilter_Magellan = (1 << 2),
|
||||||
|
SubGhzProtocolFilter_Princeton = (1 << 3),
|
||||||
|
SubGhzProtocolFilter_NiceFlorS = (1 << 4),
|
||||||
|
SubGhzProtocolFilter_Weather = (1 << 5),
|
||||||
|
SubGhzProtocolFilter_TPMS = (1 << 6),
|
||||||
|
} SubGhzProtocolFilter;
|
||||||
|
|
||||||
struct SubGhzProtocol {
|
struct SubGhzProtocol {
|
||||||
const char* name;
|
const char* name;
|
||||||
SubGhzProtocolType type;
|
SubGhzProtocolType type;
|
||||||
@@ -143,4 +148,6 @@ struct SubGhzProtocol {
|
|||||||
|
|
||||||
const SubGhzProtocolEncoder* encoder;
|
const SubGhzProtocolEncoder* encoder;
|
||||||
const SubGhzProtocolDecoder* decoder;
|
const SubGhzProtocolDecoder* decoder;
|
||||||
|
|
||||||
|
SubGhzProtocolFilter filter;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user