From a0638880b391b6fddb76a0d0cc76b9263ba6d76e Mon Sep 17 00:00:00 2001 From: Glenn Ruben Bakke Date: Sun, 30 Apr 2017 20:15:03 +0200 Subject: [PATCH] nrf5/modules/timer: Optimizing timer object structure and updating the module to use new hal_timer_init structures and parameters. --- nrf5/hal/hal_timer.c | 2 +- nrf5/hal/hal_timer.h | 16 ++++------------ nrf5/modules/machine/timer.c | 29 +++++++++++------------------ 3 files changed, 16 insertions(+), 31 deletions(-) diff --git a/nrf5/hal/hal_timer.c b/nrf5/hal/hal_timer.c index dd2cbfceef..ac0d20846c 100644 --- a/nrf5/hal/hal_timer.c +++ b/nrf5/hal/hal_timer.c @@ -29,7 +29,7 @@ #ifdef HAL_TIMER_MODULE_ENABLED -void hal_timer_init(NRF_TIMER_Type * p_instance, hal_timer_init_t const * p_timer_init) { +void hal_timer_init(hal_timer_conf_t const * p_timer_conf) { } diff --git a/nrf5/hal/hal_timer.h b/nrf5/hal/hal_timer.h index a9dffad2aa..245a33955b 100644 --- a/nrf5/hal/hal_timer.h +++ b/nrf5/hal/hal_timer.h @@ -58,18 +58,10 @@ * @brief Timer Configuration Structure definition */ typedef struct { -} hal_timer_init_t; + uint8_t id; + uint8_t irq_priority; +} hal_timer_conf_t; -/** - * @brief Timer handle Structure definition - */ -typedef struct __Timer_HandleTypeDef -{ - NRF_TIMER_Type *instance; /* Timer registers base address */ - hal_timer_init_t init; /* Timer initialization parameters */ - uint8_t id; /* Timer instance id */ -} Timer_HandleTypeDef; - -void hal_timer_init(NRF_TIMER_Type * p_instance, hal_timer_init_t const * p_timer_init); +void hal_timer_init(hal_timer_conf_t const * p_timer_config); #endif // HAL_TIMER_H__ diff --git a/nrf5/modules/machine/timer.c b/nrf5/modules/machine/timer.c index 6329aaab3d..9a3403b2b5 100644 --- a/nrf5/modules/machine/timer.c +++ b/nrf5/modules/machine/timer.c @@ -36,35 +36,28 @@ #if MICROPY_PY_MACHINE_TIMER typedef struct _machine_timer_obj_t { - mp_obj_base_t base; - Timer_HandleTypeDef *timer; + mp_obj_base_t base; + hal_timer_conf_t * p_config; } machine_timer_obj_t; -Timer_HandleTypeDef TimerHandle0 = {.instance = NULL, .id = 0}; -Timer_HandleTypeDef TimerHandle1 = {.instance = NULL, .id = 1}; -Timer_HandleTypeDef TimerHandle2 = {.instance = NULL, .id = 2}; +static hal_timer_conf_t timer_config0 = {.id = 0}; +static hal_timer_conf_t timer_config1 = {.id = 1}; +static hal_timer_conf_t timer_config2 = {.id = 2}; STATIC const machine_timer_obj_t machine_timer_obj[] = { - {{&machine_timer_type}, &TimerHandle0}, - {{&machine_timer_type}, &TimerHandle1}, - {{&machine_timer_type}, &TimerHandle2}, + {{&machine_timer_type}, &timer_config0}, + {{&machine_timer_type}, &timer_config1}, + {{&machine_timer_type}, &timer_config2}, }; void timer_init0(void) { - // reset the Timer handles - memset(&TimerHandle0, 0, sizeof(Timer_HandleTypeDef)); - TimerHandle0.instance = TIMER_BASE(0); - memset(&TimerHandle1, 0, sizeof(Timer_HandleTypeDef)); - TimerHandle0.instance = TIMER_BASE(1); - memset(&TimerHandle2, 0, sizeof(Timer_HandleTypeDef)); - TimerHandle0.instance = TIMER_BASE(2); } STATIC int timer_find(mp_obj_t id) { // given an integer id int timer_id = mp_obj_get_int(id); if (timer_id >= 0 && timer_id <= MP_ARRAY_SIZE(machine_timer_obj) - && machine_timer_obj[timer_id].timer != NULL) { + && machine_timer_obj[timer_id].p_config != NULL) { return timer_id; } nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError, @@ -73,7 +66,7 @@ STATIC int timer_find(mp_obj_t id) { STATIC void timer_print(const mp_print_t *print, mp_obj_t o, mp_print_kind_t kind) { machine_timer_obj_t *self = o; - mp_printf(print, "Timer(%u)", self->timer->id); + mp_printf(print, "Timer(%u)", self->p_config->id); } /******************************************************************************/ @@ -103,7 +96,7 @@ STATIC mp_obj_t machine_timer_make_new(const mp_obj_type_t *type, size_t n_args, int timer_id = timer_find(args[ARG_NEW_id].u_obj); const machine_timer_obj_t *self = &machine_timer_obj[timer_id]; - hal_timer_init(self->timer->instance, &self->timer->init); + hal_timer_init(self->p_config); return MP_OBJ_FROM_PTR(self); }