diff options
author | Skorpionm <85568270+Skorpionm@users.noreply.github.com> | 2021-07-07 22:49:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-07 22:49:45 +0300 |
commit | 4ce41a3e6fcc5693f3891577ef552c6b1b8033f4 (patch) | |
tree | 9b7c8d894d057627d9d2eba84aa68ea7e99c203d /firmware | |
parent | a7283280eff93f22c8fc1b65573ae0a6447e94bf (diff) |
Skorp subghz capture refactoring (#569)
* SubGhz: changing the operation of the capture timer, and the logic of the work of parsers
* Add toolbox lib. Move levels to toolbox. Subghz switch to levels.
* Subghz: update worker signatures
* SubGhz: pluggable level duration implementations.
* SubGhz : test drawing pictures in Gui
* SubGhz: Added a callback with the parser structure as argument
* SubGhz: copy protocol data to model
* SubGhz: refactoing code
* SubGhz: cleanup and format sources
* SubGhz: remove comments
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Co-authored-by: DrZlo13 <who.just.the.doctor@gmail.com>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/targets/api-hal-include/api-hal-subghz.h | 16 | ||||
-rw-r--r-- | firmware/targets/f6/api-hal/api-hal-subghz.c | 10 |
2 files changed, 5 insertions, 21 deletions
diff --git a/firmware/targets/api-hal-include/api-hal-subghz.h b/firmware/targets/api-hal-include/api-hal-subghz.h index 1c26c2d4..d4e5cb5d 100644 --- a/firmware/targets/api-hal-include/api-hal-subghz.h +++ b/firmware/targets/api-hal-include/api-hal-subghz.h @@ -2,6 +2,7 @@ #include <stdbool.h> #include <stdint.h> +#include <toolbox/level_duration.h> #ifdef __cplusplus extern "C" { @@ -107,21 +108,8 @@ uint32_t api_hal_subghz_set_frequency(uint32_t value); */ void api_hal_subghz_set_path(ApiHalSubGhzPath path); -/** Front Definition for capture callback */ -typedef enum { - ApiHalSubGhzCaptureLevelHigh, - ApiHalSubGhzCaptureLevelLow, - ApiHalSubGhzCaptureLevelOverrun, - ApiHalSubGhzCaptureLevelUnderrun, -} ApiHalSubGhzCaptureLevel; - -typedef struct { - ApiHalSubGhzCaptureLevel level; - uint32_t duration; -} LevelPair; - /** Signal Timings Capture callback */ -typedef void (*ApiHalSubGhzCaptureCallback)(ApiHalSubGhzCaptureLevel level, uint32_t time, void* context); +typedef void (*ApiHalSubGhzCaptureCallback)(bool level, uint32_t duration, void* context); /** Set signal timings capture callback * @param callback - your callback for front capture diff --git a/firmware/targets/f6/api-hal/api-hal-subghz.c b/firmware/targets/f6/api-hal/api-hal-subghz.c index c9ba3353..eb9d4eab 100644 --- a/firmware/targets/f6/api-hal/api-hal-subghz.c +++ b/firmware/targets/f6/api-hal/api-hal-subghz.c @@ -292,9 +292,7 @@ static void api_hal_subghz_capture_ISR() { LL_TIM_ClearFlag_CC1(TIM2); api_hal_subghz_capture_delta_duration = LL_TIM_IC_GetCaptureCH1(TIM2); if (api_hal_subghz_capture_callback) { - api_hal_subghz_capture_callback( - ApiHalSubGhzCaptureLevelHigh, - api_hal_subghz_capture_delta_duration, + api_hal_subghz_capture_callback(true, api_hal_subghz_capture_delta_duration, (void*)api_hal_subghz_capture_callback_context ); } @@ -303,9 +301,7 @@ static void api_hal_subghz_capture_ISR() { if(LL_TIM_IsActiveFlag_CC2(TIM2)) { LL_TIM_ClearFlag_CC2(TIM2); if (api_hal_subghz_capture_callback) { - api_hal_subghz_capture_callback( - ApiHalSubGhzCaptureLevelLow, - LL_TIM_IC_GetCaptureCH2(TIM2) - api_hal_subghz_capture_delta_duration, + api_hal_subghz_capture_callback(false, LL_TIM_IC_GetCaptureCH2(TIM2) - api_hal_subghz_capture_delta_duration, (void*)api_hal_subghz_capture_callback_context ); } @@ -323,7 +319,7 @@ void api_hal_subghz_enable_capture() { LL_TIM_InitTypeDef TIM_InitStruct = {0}; TIM_InitStruct.Prescaler = 64-1; TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; - TIM_InitStruct.Autoreload = 0xFFFFFFFF; + TIM_InitStruct.Autoreload = 0x7FFFFFFE; TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; LL_TIM_Init(TIM2, &TIM_InitStruct); |