mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-26 22:40:25 +00:00
[FL-2706, FL-2709] SubGhz: checking saved key files for length (#1485)
* [FL-2706] SubGhz: checking saved key files for length * SubGhz: fix RAW file upload error * [FL-2709] GubGhz: RAW screen fix Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
84550d5878
commit
4da6eba395
28 changed files with 390 additions and 46 deletions
|
@ -331,8 +331,10 @@ bool subghz_key_load(SubGhz* subghz, const char* file_path, bool show_dialog) {
|
||||||
subghz->txrx->decoder_result = subghz_receiver_search_decoder_base_by_name(
|
subghz->txrx->decoder_result = subghz_receiver_search_decoder_base_by_name(
|
||||||
subghz->txrx->receiver, string_get_cstr(temp_str));
|
subghz->txrx->receiver, string_get_cstr(temp_str));
|
||||||
if(subghz->txrx->decoder_result) {
|
if(subghz->txrx->decoder_result) {
|
||||||
subghz_protocol_decoder_base_deserialize(
|
if(!subghz_protocol_decoder_base_deserialize(
|
||||||
subghz->txrx->decoder_result, subghz->txrx->fff_data);
|
subghz->txrx->decoder_result, subghz->txrx->fff_data)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
FURI_LOG_E(TAG, "Protocol not found");
|
FURI_LOG_E(TAG, "Protocol not found");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -216,8 +216,8 @@ void subghz_read_raw_draw(Canvas* canvas, SubGhzReadRAWModel* model) {
|
||||||
uint8_t graphics_mode = 1;
|
uint8_t graphics_mode = 1;
|
||||||
canvas_set_color(canvas, ColorBlack);
|
canvas_set_color(canvas, ColorBlack);
|
||||||
canvas_set_font(canvas, FontSecondary);
|
canvas_set_font(canvas, FontSecondary);
|
||||||
canvas_draw_str(canvas, 5, 8, string_get_cstr(model->frequency_str));
|
canvas_draw_str(canvas, 5, 7, string_get_cstr(model->frequency_str));
|
||||||
canvas_draw_str(canvas, 40, 8, string_get_cstr(model->preset_str));
|
canvas_draw_str(canvas, 40, 7, string_get_cstr(model->preset_str));
|
||||||
canvas_draw_str_aligned(
|
canvas_draw_str_aligned(
|
||||||
canvas, 126, 0, AlignRight, AlignTop, string_get_cstr(model->sample_write));
|
canvas, 126, 0, AlignRight, AlignTop, string_get_cstr(model->sample_write));
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,13 @@ bool subghz_protocol_encoder_came_deserialize(void* context, FlipperFormat* flip
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if((instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_came_const.min_count_bit_for_found) &&
|
||||||
|
(instance->generic.data_count_bit !=
|
||||||
|
2 * subghz_protocol_came_const.min_count_bit_for_found)) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -293,7 +299,21 @@ bool subghz_protocol_decoder_came_serialize(
|
||||||
bool subghz_protocol_decoder_came_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_came_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderCame* instance = context;
|
SubGhzProtocolDecoderCame* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if((instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_came_const.min_count_bit_for_found) &&
|
||||||
|
(instance->generic.data_count_bit !=
|
||||||
|
2 * subghz_protocol_came_const.min_count_bit_for_found)) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_came_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_came_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -310,7 +310,19 @@ bool subghz_protocol_decoder_came_atomo_serialize(
|
||||||
bool subghz_protocol_decoder_came_atomo_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_came_atomo_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderCameAtomo* instance = context;
|
SubGhzProtocolDecoderCameAtomo* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_came_atomo_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_came_atomo_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_came_atomo_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -250,7 +250,11 @@ bool subghz_protocol_encoder_came_twee_deserialize(void* context, FlipperFormat*
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_came_twee_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -427,7 +431,19 @@ bool subghz_protocol_decoder_came_twee_serialize(
|
||||||
bool subghz_protocol_decoder_came_twee_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_came_twee_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderCameTwee* instance = context;
|
SubGhzProtocolDecoderCameTwee* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_came_twee_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_came_twee_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_came_twee_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -215,7 +215,11 @@ bool subghz_protocol_encoder_chamb_code_deserialize(void* context, FlipperFormat
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit <
|
||||||
|
subghz_protocol_chamb_code_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -432,7 +436,19 @@ bool subghz_protocol_decoder_chamb_code_serialize(
|
||||||
bool subghz_protocol_decoder_chamb_code_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_chamb_code_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderChamb_Code* instance = context;
|
SubGhzProtocolDecoderChamb_Code* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit <
|
||||||
|
subghz_protocol_chamb_code_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_chamb_code_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_chamb_code_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -115,7 +115,7 @@ void subghz_protocol_decoder_faac_slh_feed(void* context, bool level, uint32_t d
|
||||||
if(duration >= ((uint32_t)subghz_protocol_faac_slh_const.te_short * 3 +
|
if(duration >= ((uint32_t)subghz_protocol_faac_slh_const.te_short * 3 +
|
||||||
subghz_protocol_faac_slh_const.te_delta)) {
|
subghz_protocol_faac_slh_const.te_delta)) {
|
||||||
instance->decoder.parser_step = FaacSLHDecoderStepFoundPreambula;
|
instance->decoder.parser_step = FaacSLHDecoderStepFoundPreambula;
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_faac_slh_const.min_count_bit_for_found) {
|
subghz_protocol_faac_slh_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -192,7 +192,19 @@ bool subghz_protocol_decoder_faac_slh_serialize(
|
||||||
bool subghz_protocol_decoder_faac_slh_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_faac_slh_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderFaacSLH* instance = context;
|
SubGhzProtocolDecoderFaacSLH* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_faac_slh_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_faac_slh_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_faac_slh_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -138,7 +138,11 @@ bool subghz_protocol_encoder_gate_tx_deserialize(void* context, FlipperFormat* f
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_gate_tx_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -298,7 +302,19 @@ bool subghz_protocol_decoder_gate_tx_serialize(
|
||||||
bool subghz_protocol_decoder_gate_tx_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_gate_tx_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderGateTx* instance = context;
|
SubGhzProtocolDecoderGateTx* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_gate_tx_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_gate_tx_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_gate_tx_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -151,7 +151,11 @@ bool subghz_protocol_encoder_holtek_deserialize(void* context, FlipperFormat* fl
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_holtek_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -331,7 +335,19 @@ bool subghz_protocol_decoder_holtek_serialize(
|
||||||
bool subghz_protocol_decoder_holtek_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_holtek_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderHoltek* instance = context;
|
SubGhzProtocolDecoderHoltek* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_holtek_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_holtek_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_holtek_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -154,7 +154,11 @@ bool subghz_protocol_encoder_hormann_deserialize(void* context, FlipperFormat* f
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_hormann_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -319,7 +323,19 @@ bool subghz_protocol_decoder_hormann_serialize(
|
||||||
bool subghz_protocol_decoder_hormann_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_hormann_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderHormann* instance = context;
|
SubGhzProtocolDecoderHormann* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_hormann_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_hormann_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_hormann_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -191,7 +191,18 @@ bool subghz_protocol_decoder_ido_serialize(
|
||||||
bool subghz_protocol_decoder_ido_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_ido_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderIDo* instance = context;
|
SubGhzProtocolDecoderIDo* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit != subghz_protocol_ido_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_ido_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_ido_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -264,7 +264,11 @@ bool subghz_protocol_encoder_keeloq_deserialize(void* context, FlipperFormat* fl
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_keeloq_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
subghz_protocol_keeloq_check_remote_controller(
|
subghz_protocol_keeloq_check_remote_controller(
|
||||||
&instance->generic, instance->keystore, &instance->manufacture_name);
|
&instance->generic, instance->keystore, &instance->manufacture_name);
|
||||||
|
|
||||||
|
@ -656,6 +660,11 @@ bool subghz_protocol_decoder_keeloq_deserialize(void* context, FlipperFormat* fl
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_keeloq_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
res = true;
|
res = true;
|
||||||
} while(false);
|
} while(false);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ static const SubGhzBlockConst subghz_protocol_kia_const = {
|
||||||
.te_short = 250,
|
.te_short = 250,
|
||||||
.te_long = 500,
|
.te_long = 500,
|
||||||
.te_delta = 100,
|
.te_delta = 100,
|
||||||
.min_count_bit_for_found = 60,
|
.min_count_bit_for_found = 61,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SubGhzProtocolDecoderKIA {
|
struct SubGhzProtocolDecoderKIA {
|
||||||
|
@ -145,7 +145,7 @@ void subghz_protocol_decoder_kia_feed(void* context, bool level, uint32_t durati
|
||||||
(uint32_t)(subghz_protocol_kia_const.te_long + subghz_protocol_kia_const.te_delta * 2)) {
|
(uint32_t)(subghz_protocol_kia_const.te_long + subghz_protocol_kia_const.te_delta * 2)) {
|
||||||
//Found stop bit
|
//Found stop bit
|
||||||
instance->decoder.parser_step = KIADecoderStepReset;
|
instance->decoder.parser_step = KIADecoderStepReset;
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_kia_const.min_count_bit_for_found) {
|
subghz_protocol_kia_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -242,7 +242,18 @@ bool subghz_protocol_decoder_kia_serialize(
|
||||||
bool subghz_protocol_decoder_kia_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_kia_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderKIA* instance = context;
|
SubGhzProtocolDecoderKIA* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit != subghz_protocol_kia_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_kia_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_kia_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -156,7 +156,11 @@ bool subghz_protocol_encoder_linear_deserialize(void* context, FlipperFormat* fl
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_linear_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -308,7 +312,19 @@ bool subghz_protocol_decoder_linear_serialize(
|
||||||
bool subghz_protocol_decoder_linear_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_linear_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderLinear* instance = context;
|
SubGhzProtocolDecoderLinear* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_linear_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_linear_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_linear_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -184,7 +184,11 @@ bool subghz_protocol_encoder_megacode_deserialize(void* context, FlipperFormat*
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_megacode_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -270,7 +274,7 @@ void subghz_protocol_decoder_megacode_feed(void* context, bool level, uint32_t d
|
||||||
if(!level) { //save interval
|
if(!level) { //save interval
|
||||||
if(duration >= (subghz_protocol_megacode_const.te_short * 10)) {
|
if(duration >= (subghz_protocol_megacode_const.te_short * 10)) {
|
||||||
instance->decoder.parser_step = MegaCodeDecoderStepReset;
|
instance->decoder.parser_step = MegaCodeDecoderStepReset;
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_megacode_const.min_count_bit_for_found) {
|
subghz_protocol_megacode_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -389,7 +393,19 @@ bool subghz_protocol_decoder_megacode_serialize(
|
||||||
bool subghz_protocol_decoder_megacode_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_megacode_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderMegaCode* instance = context;
|
SubGhzProtocolDecoderMegaCode* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_megacode_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_megacode_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_megacode_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -163,7 +163,11 @@ bool subghz_protocol_encoder_nero_radio_deserialize(void* context, FlipperFormat
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nero_radio_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -294,7 +298,7 @@ void subghz_protocol_decoder_nero_radio_feed(void* context, bool level, uint32_t
|
||||||
subghz_protocol_blocks_add_bit(&instance->decoder, 1);
|
subghz_protocol_blocks_add_bit(&instance->decoder, 1);
|
||||||
}
|
}
|
||||||
instance->decoder.parser_step = NeroRadioDecoderStepReset;
|
instance->decoder.parser_step = NeroRadioDecoderStepReset;
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_nero_radio_const.min_count_bit_for_found) {
|
subghz_protocol_nero_radio_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -351,7 +355,19 @@ bool subghz_protocol_decoder_nero_radio_serialize(
|
||||||
bool subghz_protocol_decoder_nero_radio_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_nero_radio_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderNeroRadio* instance = context;
|
SubGhzProtocolDecoderNeroRadio* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nero_radio_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_nero_radio_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_nero_radio_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -157,7 +157,11 @@ bool subghz_protocol_encoder_nero_sketch_deserialize(void* context, FlipperForma
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nero_sketch_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -271,7 +275,7 @@ void subghz_protocol_decoder_nero_sketch_feed(void* context, bool level, uint32_
|
||||||
subghz_protocol_nero_sketch_const.te_delta * 2)) {
|
subghz_protocol_nero_sketch_const.te_delta * 2)) {
|
||||||
//Found stop bit
|
//Found stop bit
|
||||||
instance->decoder.parser_step = NeroSketchDecoderStepReset;
|
instance->decoder.parser_step = NeroSketchDecoderStepReset;
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_nero_sketch_const.min_count_bit_for_found) {
|
subghz_protocol_nero_sketch_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -336,7 +340,19 @@ bool subghz_protocol_decoder_nero_sketch_serialize(
|
||||||
bool subghz_protocol_decoder_nero_sketch_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_nero_sketch_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderNeroSketch* instance = context;
|
SubGhzProtocolDecoderNeroSketch* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nero_sketch_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_nero_sketch_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_nero_sketch_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -138,7 +138,13 @@ bool subghz_protocol_encoder_nice_flo_deserialize(void* context, FlipperFormat*
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if((instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nice_flo_const.min_count_bit_for_found) &&
|
||||||
|
(instance->generic.data_count_bit !=
|
||||||
|
2 * subghz_protocol_nice_flo_const.min_count_bit_for_found)) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -286,7 +292,21 @@ bool subghz_protocol_decoder_nice_flo_serialize(
|
||||||
bool subghz_protocol_decoder_nice_flo_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_nice_flo_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderNiceFlo* instance = context;
|
SubGhzProtocolDecoderNiceFlo* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if((instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nice_flo_const.min_count_bit_for_found) &&
|
||||||
|
(instance->generic.data_count_bit !=
|
||||||
|
2 * subghz_protocol_nice_flo_const.min_count_bit_for_found)) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_nice_flo_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_nice_flo_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -237,7 +237,7 @@ void subghz_protocol_decoder_nice_flor_s_feed(void* context, bool level, uint32_
|
||||||
subghz_protocol_nice_flor_s_const.te_delta) {
|
subghz_protocol_nice_flor_s_const.te_delta) {
|
||||||
//Found STOP bit
|
//Found STOP bit
|
||||||
instance->decoder.parser_step = NiceFlorSDecoderStepReset;
|
instance->decoder.parser_step = NiceFlorSDecoderStepReset;
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_nice_flor_s_const.min_count_bit_for_found) {
|
subghz_protocol_nice_flor_s_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -339,7 +339,19 @@ bool subghz_protocol_decoder_nice_flor_s_serialize(
|
||||||
bool subghz_protocol_decoder_nice_flor_s_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_nice_flor_s_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderNiceFlorS* instance = context;
|
SubGhzProtocolDecoderNiceFlorS* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_nice_flor_s_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_nice_flor_s_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_nice_flor_s_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -201,7 +201,11 @@ bool subghz_protocol_encoder_power_smart_deserialize(void* context, FlipperForma
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_power_smart_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -354,7 +358,19 @@ bool subghz_protocol_decoder_power_smart_serialize(
|
||||||
bool subghz_protocol_decoder_power_smart_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_power_smart_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderPowerSmart* instance = context;
|
SubGhzProtocolDecoderPowerSmart* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_power_smart_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_power_smart_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_power_smart_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -158,6 +158,11 @@ bool subghz_protocol_encoder_princeton_deserialize(void* context, FlipperFormat*
|
||||||
FURI_LOG_E(TAG, "Missing TE");
|
FURI_LOG_E(TAG, "Missing TE");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_princeton_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -320,6 +325,11 @@ bool subghz_protocol_decoder_princeton_deserialize(void* context, FlipperFormat*
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_princeton_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(!flipper_format_rewind(flipper_format)) {
|
if(!flipper_format_rewind(flipper_format)) {
|
||||||
FURI_LOG_E(TAG, "Rewind error");
|
FURI_LOG_E(TAG, "Rewind error");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -57,6 +57,7 @@ const SubGhzProtocolDecoder subghz_protocol_raw_decoder = {
|
||||||
|
|
||||||
.get_hash_data = NULL,
|
.get_hash_data = NULL,
|
||||||
.serialize = NULL,
|
.serialize = NULL,
|
||||||
|
.deserialize = subghz_protocol_decoder_raw_deserialize,
|
||||||
.get_string = subghz_protocol_decoder_raw_get_string,
|
.get_string = subghz_protocol_decoder_raw_get_string,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -246,9 +247,18 @@ void subghz_protocol_decoder_raw_feed(void* context, bool level, uint32_t durati
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool subghz_protocol_decoder_raw_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
|
furi_assert(context);
|
||||||
|
UNUSED(context);
|
||||||
|
UNUSED(flipper_format);
|
||||||
|
//ToDo stub, for backwards compatibility
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_raw_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_raw_get_string(void* context, string_t output) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
//SubGhzProtocolDecoderRAW* instance = context;
|
//SubGhzProtocolDecoderRAW* instance = context;
|
||||||
|
UNUSED(context);
|
||||||
//ToDo no use
|
//ToDo no use
|
||||||
string_cat_printf(output, "RAW Date");
|
string_cat_printf(output, "RAW Date");
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,14 @@ void subghz_protocol_decoder_raw_reset(void* context);
|
||||||
*/
|
*/
|
||||||
void subghz_protocol_decoder_raw_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_raw_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderRAW.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
|
bool subghz_protocol_decoder_raw_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Getting a textual representation of the received data.
|
* Getting a textual representation of the received data.
|
||||||
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
|
|
@ -273,7 +273,11 @@ bool subghz_protocol_encoder_secplus_v1_deserialize(void* context, FlipperFormat
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
2 * subghz_protocol_secplus_v1_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
//optional parameter parameter
|
//optional parameter parameter
|
||||||
flipper_format_read_uint32(
|
flipper_format_read_uint32(
|
||||||
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1);
|
||||||
|
@ -524,7 +528,19 @@ bool subghz_protocol_decoder_secplus_v1_serialize(
|
||||||
bool subghz_protocol_decoder_secplus_v1_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_secplus_v1_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderSecPlus_v1* instance = context;
|
SubGhzProtocolDecoderSecPlus_v1* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
2 * subghz_protocol_secplus_v1_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool subghz_protocol_secplus_v1_check_fixed(uint32_t fixed) {
|
bool subghz_protocol_secplus_v1_check_fixed(uint32_t fixed) {
|
||||||
|
|
|
@ -514,7 +514,11 @@ bool subghz_protocol_encoder_secplus_v2_deserialize(void* context, FlipperFormat
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_secplus_v2_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
uint8_t key_data[sizeof(uint64_t)] = {0};
|
uint8_t key_data[sizeof(uint64_t)] = {0};
|
||||||
if(!flipper_format_read_hex(
|
if(!flipper_format_read_hex(
|
||||||
flipper_format, "Secplus_packet_1", key_data, sizeof(uint64_t))) {
|
flipper_format, "Secplus_packet_1", key_data, sizeof(uint64_t))) {
|
||||||
|
@ -689,7 +693,7 @@ void subghz_protocol_decoder_secplus_v2_feed(void* context, bool level, uint32_t
|
||||||
} else if(
|
} else if(
|
||||||
duration >= (uint32_t)(subghz_protocol_secplus_v2_const.te_long * 2 +
|
duration >= (uint32_t)(subghz_protocol_secplus_v2_const.te_long * 2 +
|
||||||
subghz_protocol_secplus_v2_const.te_delta)) {
|
subghz_protocol_secplus_v2_const.te_delta)) {
|
||||||
if(instance->decoder.decode_count_bit >=
|
if(instance->decoder.decode_count_bit ==
|
||||||
subghz_protocol_secplus_v2_const.min_count_bit_for_found) {
|
subghz_protocol_secplus_v2_const.min_count_bit_for_found) {
|
||||||
instance->generic.data = instance->decoder.decode_data;
|
instance->generic.data = instance->decoder.decode_data;
|
||||||
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
instance->generic.data_count_bit = instance->decoder.decode_count_bit;
|
||||||
|
@ -782,6 +786,11 @@ bool subghz_protocol_decoder_secplus_v2_deserialize(void* context, FlipperFormat
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_secplus_v2_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(!flipper_format_rewind(flipper_format)) {
|
if(!flipper_format_rewind(flipper_format)) {
|
||||||
FURI_LOG_E(TAG, "Rewind error");
|
FURI_LOG_E(TAG, "Rewind error");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -403,6 +403,11 @@ bool subghz_protocol_decoder_somfy_keytis_deserialize(void* context, FlipperForm
|
||||||
FURI_LOG_E(TAG, "Deserialize error");
|
FURI_LOG_E(TAG, "Deserialize error");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_somfy_keytis_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(!flipper_format_rewind(flipper_format)) {
|
if(!flipper_format_rewind(flipper_format)) {
|
||||||
FURI_LOG_E(TAG, "Rewind error");
|
FURI_LOG_E(TAG, "Rewind error");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -348,7 +348,19 @@ bool subghz_protocol_decoder_somfy_telis_serialize(
|
||||||
bool subghz_protocol_decoder_somfy_telis_deserialize(void* context, FlipperFormat* flipper_format) {
|
bool subghz_protocol_decoder_somfy_telis_deserialize(void* context, FlipperFormat* flipper_format) {
|
||||||
furi_assert(context);
|
furi_assert(context);
|
||||||
SubGhzProtocolDecoderSomfyTelis* instance = context;
|
SubGhzProtocolDecoderSomfyTelis* instance = context;
|
||||||
return subghz_block_generic_deserialize(&instance->generic, flipper_format);
|
bool ret = false;
|
||||||
|
do {
|
||||||
|
if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_somfy_telis_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
} while(false);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void subghz_protocol_decoder_somfy_telis_get_string(void* context, string_t output) {
|
void subghz_protocol_decoder_somfy_telis_get_string(void* context, string_t output) {
|
||||||
|
|
|
@ -332,6 +332,11 @@ bool subghz_protocol_decoder_star_line_serialize(
|
||||||
FURI_LOG_E(TAG, "Unable to add manufacture name");
|
FURI_LOG_E(TAG, "Unable to add manufacture name");
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
|
if(res && instance->generic.data_count_bit !=
|
||||||
|
subghz_protocol_star_line_const.min_count_bit_for_found) {
|
||||||
|
FURI_LOG_E(TAG, "Wrong number of bits in key");
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue