SubGhz: fix frequency determination in a frequency analyzer (#762)
This commit is contained in:
		| @@ -1,9 +1,28 @@ | ||||
| #include "subghz_frequency_analyzer_worker.h" | ||||
| #include <lib/drivers/cc1101_regs.h> | ||||
|  | ||||
| #include <furi.h> | ||||
|  | ||||
| #include "../subghz_i.h" | ||||
|  | ||||
| static const uint8_t subghz_preset_ook_58khz[][2] = { | ||||
|     {CC1101_FIFOTHR, 0x47}, // The only important bit is ADC_RETENTION, FIFO Tx=33 Rx=32 | ||||
|     {CC1101_MDMCFG4, 0xF5}, // Rx BW filter is 58.035714kHz | ||||
|     {CC1101_TEST2, 0x81}, // FIFOTHR ADC_RETENTION=1 matched value | ||||
|     {CC1101_TEST1, 0x35}, // FIFOTHR ADC_RETENTION=1 matched value | ||||
|     /* End  */ | ||||
|     {0, 0}, | ||||
| }; | ||||
|  | ||||
| static const uint8_t subghz_preset_ook_650khz[][2] = { | ||||
|     {CC1101_FIFOTHR, 0x07}, // The only important bit is ADC_RETENTION | ||||
|     {CC1101_MDMCFG4, 0x17}, // Rx BW filter is 650.000kHz | ||||
|     {CC1101_TEST2, 0x88}, | ||||
|     {CC1101_TEST1, 0x31}, | ||||
|     /* End  */ | ||||
|     {0, 0}, | ||||
| }; | ||||
|  | ||||
| struct SubGhzFrequencyAnalyzerWorker { | ||||
|     FuriThread* thread; | ||||
|  | ||||
| @@ -56,6 +75,8 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) { | ||||
|     while(instance->worker_running) { | ||||
|         osDelay(10); | ||||
|         frequency_rssi.rssi = -127.0f; | ||||
|         furi_hal_subghz_idle(); | ||||
|         furi_hal_subghz_load_registers(subghz_preset_ook_650khz); | ||||
|         for(size_t i = 0; i < subghz_frequencies_count; i++) { | ||||
|             if(furi_hal_subghz_is_frequency_valid(subghz_frequencies[i])) { | ||||
|                 furi_hal_subghz_idle(); | ||||
| @@ -74,6 +95,9 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) { | ||||
|             //  -0.5 ... 433.92 ... +0.5 | ||||
|             frequency_start = frequency_rssi.frequency - 250000; | ||||
|             //step 10KHz | ||||
|             frequency_rssi.rssi = -127.0; | ||||
|             furi_hal_subghz_idle(); | ||||
|             furi_hal_subghz_load_registers(subghz_preset_ook_58khz); | ||||
|             for(uint32_t i = frequency_start; i < frequency_start + 500000; i += 10000) { | ||||
|                 if(furi_hal_subghz_is_frequency_valid(i)) { | ||||
|                     furi_hal_subghz_idle(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user