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>
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user