Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSkorpionm <85568270+Skorpionm@users.noreply.github.com>2021-07-07 22:49:45 +0300
committerGitHub <noreply@github.com>2021-07-07 22:49:45 +0300
commit4ce41a3e6fcc5693f3891577ef552c6b1b8033f4 (patch)
tree9b7c8d894d057627d9d2eba84aa68ea7e99c203d /firmware
parenta7283280eff93f22c8fc1b65573ae0a6447e94bf (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.h16
-rw-r--r--firmware/targets/f6/api-hal/api-hal-subghz.c10
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);