PES4 / Mbed OS Queue_02
Committer:
demayer
Date:
Sat Mar 28 15:28:19 2020 +0000
Revision:
0:6bf0743ece18
IMU Thread with an event-queue running parallel to handle tasks like a 5 times blinking LED. Button with interrupt detected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
demayer 0:6bf0743ece18 1
demayer 0:6bf0743ece18 2 /** \addtogroup hal */
demayer 0:6bf0743ece18 3 /** @{*/
demayer 0:6bf0743ece18 4 /* mbed Microcontroller Library
demayer 0:6bf0743ece18 5 * Copyright (c) 2015 ARM Limited
demayer 0:6bf0743ece18 6 *
demayer 0:6bf0743ece18 7 * Licensed under the Apache License, Version 2.0 (the "License");
demayer 0:6bf0743ece18 8 * you may not use this file except in compliance with the License.
demayer 0:6bf0743ece18 9 * You may obtain a copy of the License at
demayer 0:6bf0743ece18 10 *
demayer 0:6bf0743ece18 11 * http://www.apache.org/licenses/LICENSE-2.0
demayer 0:6bf0743ece18 12 *
demayer 0:6bf0743ece18 13 * Unless required by applicable law or agreed to in writing, software
demayer 0:6bf0743ece18 14 * distributed under the License is distributed on an "AS IS" BASIS,
demayer 0:6bf0743ece18 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
demayer 0:6bf0743ece18 16 * See the License for the specific language governing permissions and
demayer 0:6bf0743ece18 17 * limitations under the License.
demayer 0:6bf0743ece18 18 */
demayer 0:6bf0743ece18 19 #ifndef MBED_LPTICKER_API_H
demayer 0:6bf0743ece18 20 #define MBED_LPTICKER_API_H
demayer 0:6bf0743ece18 21
demayer 0:6bf0743ece18 22 #include "device.h"
demayer 0:6bf0743ece18 23
demayer 0:6bf0743ece18 24 #if DEVICE_LOWPOWERTIMER
demayer 0:6bf0743ece18 25
demayer 0:6bf0743ece18 26 #include "hal/ticker_api.h"
demayer 0:6bf0743ece18 27
demayer 0:6bf0743ece18 28 #ifdef __cplusplus
demayer 0:6bf0743ece18 29 extern "C" {
demayer 0:6bf0743ece18 30 #endif
demayer 0:6bf0743ece18 31
demayer 0:6bf0743ece18 32 /**
demayer 0:6bf0743ece18 33 * \defgroup hal_LpTicker Low Power Ticker Functions
demayer 0:6bf0743ece18 34 * @{
demayer 0:6bf0743ece18 35 */
demayer 0:6bf0743ece18 36
demayer 0:6bf0743ece18 37 typedef void (*ticker_irq_handler_type)(const ticker_data_t *const);
demayer 0:6bf0743ece18 38
demayer 0:6bf0743ece18 39 /** Set low power ticker IRQ handler
demayer 0:6bf0743ece18 40 *
demayer 0:6bf0743ece18 41 * @param ticker_irq_handler IRQ handler to be connected
demayer 0:6bf0743ece18 42 *
demayer 0:6bf0743ece18 43 * @return previous ticker IRQ handler
demayer 0:6bf0743ece18 44 *
demayer 0:6bf0743ece18 45 * @note by default IRQ handler is set to ticker_irq_handler()
demayer 0:6bf0743ece18 46 * @note this function is primarily for testing purposes and it's not required part of HAL implementation
demayer 0:6bf0743ece18 47 *
demayer 0:6bf0743ece18 48 */
demayer 0:6bf0743ece18 49 ticker_irq_handler_type set_lp_ticker_irq_handler(ticker_irq_handler_type ticker_irq_handler);
demayer 0:6bf0743ece18 50
demayer 0:6bf0743ece18 51 /** Get low power ticker's data
demayer 0:6bf0743ece18 52 *
demayer 0:6bf0743ece18 53 * @return The low power ticker data
demayer 0:6bf0743ece18 54 */
demayer 0:6bf0743ece18 55 const ticker_data_t* get_lp_ticker_data(void);
demayer 0:6bf0743ece18 56
demayer 0:6bf0743ece18 57 /** The wrapper for ticker_irq_handler, to pass lp ticker's data
demayer 0:6bf0743ece18 58 *
demayer 0:6bf0743ece18 59 */
demayer 0:6bf0743ece18 60 void lp_ticker_irq_handler(void);
demayer 0:6bf0743ece18 61
demayer 0:6bf0743ece18 62 /* HAL lp ticker */
demayer 0:6bf0743ece18 63
demayer 0:6bf0743ece18 64 /** Initialize the low power ticker
demayer 0:6bf0743ece18 65 *
demayer 0:6bf0743ece18 66 */
demayer 0:6bf0743ece18 67 void lp_ticker_init(void);
demayer 0:6bf0743ece18 68
demayer 0:6bf0743ece18 69 /** Read the current counter
demayer 0:6bf0743ece18 70 *
demayer 0:6bf0743ece18 71 * @return The current timer's counter value in microseconds
demayer 0:6bf0743ece18 72 */
demayer 0:6bf0743ece18 73 uint32_t lp_ticker_read(void);
demayer 0:6bf0743ece18 74
demayer 0:6bf0743ece18 75 /** Set interrupt for specified timestamp
demayer 0:6bf0743ece18 76 *
demayer 0:6bf0743ece18 77 * @param timestamp The time in microseconds to be set
demayer 0:6bf0743ece18 78 */
demayer 0:6bf0743ece18 79 void lp_ticker_set_interrupt(timestamp_t timestamp);
demayer 0:6bf0743ece18 80
demayer 0:6bf0743ece18 81 /** Disable low power ticker interrupt
demayer 0:6bf0743ece18 82 *
demayer 0:6bf0743ece18 83 */
demayer 0:6bf0743ece18 84 void lp_ticker_disable_interrupt(void);
demayer 0:6bf0743ece18 85
demayer 0:6bf0743ece18 86 /** Clear the low power ticker interrupt
demayer 0:6bf0743ece18 87 *
demayer 0:6bf0743ece18 88 */
demayer 0:6bf0743ece18 89 void lp_ticker_clear_interrupt(void);
demayer 0:6bf0743ece18 90
demayer 0:6bf0743ece18 91 /** Set pending interrupt that should be fired right away.
demayer 0:6bf0743ece18 92 *
demayer 0:6bf0743ece18 93 * The ticker should be initialized prior calling this function.
demayer 0:6bf0743ece18 94 */
demayer 0:6bf0743ece18 95 void lp_ticker_fire_interrupt(void);
demayer 0:6bf0743ece18 96
demayer 0:6bf0743ece18 97 /** Get frequency and counter bits of this ticker.
demayer 0:6bf0743ece18 98 *
demayer 0:6bf0743ece18 99 */
demayer 0:6bf0743ece18 100 const ticker_info_t* lp_ticker_get_info(void);
demayer 0:6bf0743ece18 101
demayer 0:6bf0743ece18 102 /**@}*/
demayer 0:6bf0743ece18 103
demayer 0:6bf0743ece18 104 #ifdef __cplusplus
demayer 0:6bf0743ece18 105 }
demayer 0:6bf0743ece18 106 #endif
demayer 0:6bf0743ece18 107
demayer 0:6bf0743ece18 108 #endif
demayer 0:6bf0743ece18 109
demayer 0:6bf0743ece18 110 #endif
demayer 0:6bf0743ece18 111
demayer 0:6bf0743ece18 112 /** @}*/