From 48026bb824fd2d9cfb00ecd040db6ef3a416bae9 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 22 Jan 2021 21:43:36 -0500 Subject: upload initial port --- ChibiOS_20.3.2/os/various/evtimer.c | 85 +++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 ChibiOS_20.3.2/os/various/evtimer.c (limited to 'ChibiOS_20.3.2/os/various/evtimer.c') diff --git a/ChibiOS_20.3.2/os/various/evtimer.c b/ChibiOS_20.3.2/os/various/evtimer.c new file mode 100644 index 0000000..e9dcb93 --- /dev/null +++ b/ChibiOS_20.3.2/os/various/evtimer.c @@ -0,0 +1,85 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file evtimer.c + * @brief Events Generator Timer code. + * + * @addtogroup event_timer + * @{ + */ + +#include "ch.h" +#include "evtimer.h" + +/*===========================================================================*/ +/* Module local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local functions. */ +/*===========================================================================*/ + +static void tmrcb(void *p) { + event_timer_t *etp = p; + + chSysLockFromISR(); + chEvtBroadcastI(&etp->et_es); + chVTDoSetI(&etp->et_vt, etp->et_interval, tmrcb, etp); + chSysUnlockFromISR(); +} + +/*===========================================================================*/ +/* Module exported functions. */ +/*===========================================================================*/ + +/** + * @brief Initializes an @p event_timer_t structure. + * + * @param[out] etp the @p event_timer_t structure to be initialized + * @param[in] time the interval in system ticks + */ +void evtObjectInit(event_timer_t *etp, systime_t time) { + + chEvtObjectInit(&etp->et_es); + chVTObjectInit(&etp->et_vt); + etp->et_interval = time; +} + +/** + * @brief Starts the timer + * @details If the timer was already running then the function has no effect. + * + * @param[in] etp pointer to an initialized @p event_timer_t structure. + */ +void evtStart(event_timer_t *etp) { + + chVTSet(&etp->et_vt, etp->et_interval, tmrcb, etp); +} + +/** @} */ -- cgit v1.2.3