diff --git a/lib/subghz/blocks/generic.c b/lib/subghz/blocks/generic.c index f13e4aa9b..f12124669 100644 --- a/lib/subghz/blocks/generic.c +++ b/lib/subghz/blocks/generic.c @@ -10,6 +10,8 @@ void subghz_block_generic_get_preset_name(const char* preset_name, FuriString* p preset_name_temp = "FuriHalSubGhzPresetOok270Async"; } else if(!strcmp(preset_name, "AM650")) { preset_name_temp = "FuriHalSubGhzPresetOok650Async"; + } else if(!strcmp(preset_name, "AM_Q")) { + preset_name_temp = "FuriHalSubGhzPresetOok650Async_q"; } else if(!strcmp(preset_name, "FM238")) { preset_name_temp = "FuriHalSubGhzPreset2FSKDev238Async"; } else if(!strcmp(preset_name, "FM476")) { diff --git a/lib/subghz/devices/cc1101_configs.c b/lib/subghz/devices/cc1101_configs.c index 6b5b9f1f7..688b4cd6c 100644 --- a/lib/subghz/devices/cc1101_configs.c +++ b/lib/subghz/devices/cc1101_configs.c @@ -149,6 +149,13 @@ const uint8_t subghz_device_cc1101_preset_ook_650khz_async_regs[] = { 0x00, }; +const uint8_t subghz_device_cc1101_preset_ook_650khz_async_regs_better_q[] = { + // https://www.youtube.com/@MrDerekJamison + //0x02, 0x0D, 0x03, 0x07, 0x08, 0x32, 0x0B, 0x06, 0x14, 0x00, 0x13, 0x00, 0x12, 0x30, 0x11, 0x22, 0x10, 0x1C, 0x18, 0x18, 0x19, 0x18, 0x1D, 0x91, 0x1C, 0x00, 0x1B, 0x07, 0x20, 0xFB, 0x22, 0x11, 0x21, 0xB6, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + // correzione e ulteriore implementazione da HAISENTECK + CC1101_IOCFG0, 0x0D, CC1101_FIFOTHR, 0x07, CC1101_PKTCTRL0, 0x32, 0x0B, 0x06, 0x14, 0x00, 0x13, 0x00, 0x12, 0x30, 0x11, 0x32, 0x10, 0x17, 0x18, 0x18, 0x19, 0x18, 0x1D, 0x91, 0x1C, 0x00, 0x1B, 0x07, 0x20, 0xFB, 0x22, 0x11, 0x21, 0xB6, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + const uint8_t subghz_device_cc1101_preset_2fsk_dev2_38khz_async_regs[] = { /* GPIO GD0 */ diff --git a/lib/subghz/devices/cc1101_configs.h b/lib/subghz/devices/cc1101_configs.h index 0e1ffb0c7..858dc8be0 100644 --- a/lib/subghz/devices/cc1101_configs.h +++ b/lib/subghz/devices/cc1101_configs.h @@ -7,6 +7,7 @@ extern "C" { extern const uint8_t subghz_device_cc1101_preset_ook_270khz_async_regs[]; extern const uint8_t subghz_device_cc1101_preset_ook_650khz_async_regs[]; +extern const uint8_t subghz_device_cc1101_preset_ook_650khz_async_regs_better_q[]; extern const uint8_t subghz_device_cc1101_preset_2fsk_dev2_38khz_async_regs[]; extern const uint8_t subghz_device_cc1101_preset_2fsk_dev47_6khz_async_regs[]; extern const uint8_t subghz_device_cc1101_preset_msk_99_97kb_async_regs[]; diff --git a/lib/subghz/devices/cc1101_int/cc1101_int_interconnect.c b/lib/subghz/devices/cc1101_int/cc1101_int_interconnect.c index 284c717fd..60336b91b 100644 --- a/lib/subghz/devices/cc1101_int/cc1101_int_interconnect.c +++ b/lib/subghz/devices/cc1101_int/cc1101_int_interconnect.c @@ -35,6 +35,9 @@ static void subghz_device_cc1101_int_interconnect_load_preset( case FuriHalSubGhzPresetOok270Async: furi_hal_subghz_load_custom_preset(subghz_device_cc1101_preset_ook_270khz_async_regs); break; + case FuriHalSubGhzPresetOok650Async_q: + furi_hal_subghz_load_custom_preset(subghz_device_cc1101_preset_ook_650khz_async_regs_better_q); + break; case FuriHalSubGhzPreset2FSKDev238Async: furi_hal_subghz_load_custom_preset(subghz_device_cc1101_preset_2fsk_dev2_38khz_async_regs); break; @@ -93,4 +96,4 @@ const SubGhzDeviceInterconnect subghz_device_cc1101_int_interconnect = { const SubGhzDevice subghz_device_cc1101_int = { .name = SUBGHZ_DEVICE_CC1101_INT_NAME, .interconnect = &subghz_device_cc1101_int_interconnect, -}; +}; \ No newline at end of file diff --git a/lib/subghz/devices/preset.h b/lib/subghz/devices/preset.h index 8716f2e23..6764cc3c8 100644 --- a/lib/subghz/devices/preset.h +++ b/lib/subghz/devices/preset.h @@ -5,9 +5,10 @@ typedef enum { FuriHalSubGhzPresetIDLE, /**< default configuration */ FuriHalSubGhzPresetOok270Async, /**< OOK, bandwidth 270kHz, asynchronous */ FuriHalSubGhzPresetOok650Async, /**< OOK, bandwidth 650kHz, asynchronous */ + FuriHalSubGhzPresetOok650Async_q, /** AM_Q*/ FuriHalSubGhzPreset2FSKDev238Async, /**< FM, deviation 2.380371 kHz, asynchronous */ FuriHalSubGhzPreset2FSKDev476Async, /**< FM, deviation 47.60742 kHz, asynchronous */ FuriHalSubGhzPresetMSK99_97KbAsync, /**< MSK, deviation 47.60742 kHz, 99.97Kb/s, asynchronous */ FuriHalSubGhzPresetGFSK9_99KbAsync, /**< GFSK, deviation 19.042969 kHz, 9.996Kb/s, asynchronous */ FuriHalSubGhzPresetCustom, /**Custom Preset*/ -} FuriHalSubGhzPreset; +} FuriHalSubGhzPreset; \ No newline at end of file diff --git a/lib/subghz/subghz_setting.c b/lib/subghz/subghz_setting.c index 6911793fc..2dd787d9d 100644 --- a/lib/subghz/subghz_setting.c +++ b/lib/subghz/subghz_setting.c @@ -185,6 +185,8 @@ static void subghz_setting_load_default_region( instance, "AM270", subghz_device_cc1101_preset_ook_270khz_async_regs); subghz_setting_load_default_preset( instance, "AM650", subghz_device_cc1101_preset_ook_650khz_async_regs); + subghz_setting_load_default_preset( + instance, "AM_Q", subghz_device_cc1101_preset_ook_650khz_async_regs_better_q); subghz_setting_load_default_preset( instance, "FM238", subghz_device_cc1101_preset_2fsk_dev2_38khz_async_regs); subghz_setting_load_default_preset( diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 1c7a8f8b4..8816fb0d9 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -3903,6 +3903,7 @@ Variable,+,subghz_device_cc1101_preset_gfsk_9_99kb_async_regs,const uint8_t[], Variable,+,subghz_device_cc1101_preset_msk_99_97kb_async_regs,const uint8_t[], Variable,+,subghz_device_cc1101_preset_ook_270khz_async_regs,const uint8_t[], Variable,+,subghz_device_cc1101_preset_ook_650khz_async_regs,const uint8_t[], +Variable,+,subghz_device_cc1101_preset_ook_650khz_async_regs_better_q,const uint8_t[], Variable,+,subghz_protocol_raw,const SubGhzProtocol, Variable,+,subghz_protocol_raw_decoder,const SubGhzProtocolDecoder, Variable,+,subghz_protocol_raw_encoder,const SubGhzProtocolEncoder,