Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 17 23:23:45 2019 +0000
Revision:
0:5b88d5760320
mbed-os5 only for TYBLE16

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /**
kenjiArai 0:5b88d5760320 2 / _____) _ | |
kenjiArai 0:5b88d5760320 3 ( (____ _____ ____ _| |_ _____ ____| |__
kenjiArai 0:5b88d5760320 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
kenjiArai 0:5b88d5760320 5 _____) ) ____| | | || |_| ____( (___| | | |
kenjiArai 0:5b88d5760320 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
kenjiArai 0:5b88d5760320 7 (C)2013 Semtech
kenjiArai 0:5b88d5760320 8
kenjiArai 0:5b88d5760320 9 Description: Timer objects and scheduling management
kenjiArai 0:5b88d5760320 10
kenjiArai 0:5b88d5760320 11 License: Revised BSD License, see LICENSE.TXT file include in the project
kenjiArai 0:5b88d5760320 12
kenjiArai 0:5b88d5760320 13 Maintainer: Miguel Luis and Gregory Cristian
kenjiArai 0:5b88d5760320 14
kenjiArai 0:5b88d5760320 15
kenjiArai 0:5b88d5760320 16 Copyright (c) 2017, Arm Limited and affiliates.
kenjiArai 0:5b88d5760320 17
kenjiArai 0:5b88d5760320 18 SPDX-License-Identifier: BSD-3-Clause
kenjiArai 0:5b88d5760320 19 */
kenjiArai 0:5b88d5760320 20
kenjiArai 0:5b88d5760320 21 #ifndef MBED_LORAWAN_SYS_TIMER_H__
kenjiArai 0:5b88d5760320 22 #define MBED_LORAWAN_SYS_TIMER_H__
kenjiArai 0:5b88d5760320 23
kenjiArai 0:5b88d5760320 24 #include <stdint.h>
kenjiArai 0:5b88d5760320 25 #include "events/EventQueue.h"
kenjiArai 0:5b88d5760320 26
kenjiArai 0:5b88d5760320 27 #include "lorawan_data_structures.h"
kenjiArai 0:5b88d5760320 28
kenjiArai 0:5b88d5760320 29 class LoRaWANTimeHandler {
kenjiArai 0:5b88d5760320 30 public:
kenjiArai 0:5b88d5760320 31 LoRaWANTimeHandler();
kenjiArai 0:5b88d5760320 32 ~LoRaWANTimeHandler();
kenjiArai 0:5b88d5760320 33
kenjiArai 0:5b88d5760320 34 /** Activates the timer subsystem.
kenjiArai 0:5b88d5760320 35 *
kenjiArai 0:5b88d5760320 36 * Embeds EventQueue object to timer subsystem which is subsequently
kenjiArai 0:5b88d5760320 37 * used to extract timer information.
kenjiArai 0:5b88d5760320 38 *
kenjiArai 0:5b88d5760320 39 * @param [in] queue Handle to EventQueue object
kenjiArai 0:5b88d5760320 40 */
kenjiArai 0:5b88d5760320 41 void activate_timer_subsystem(events::EventQueue *queue);
kenjiArai 0:5b88d5760320 42
kenjiArai 0:5b88d5760320 43 /** Read the current time.
kenjiArai 0:5b88d5760320 44 *
kenjiArai 0:5b88d5760320 45 * @return time The current time.
kenjiArai 0:5b88d5760320 46 */
kenjiArai 0:5b88d5760320 47 lorawan_time_t get_current_time(void);
kenjiArai 0:5b88d5760320 48
kenjiArai 0:5b88d5760320 49 /** Return the time elapsed since a fixed moment in time.
kenjiArai 0:5b88d5760320 50 *
kenjiArai 0:5b88d5760320 51 * @param [in] saved_time The fixed moment in time.
kenjiArai 0:5b88d5760320 52 * @return time The elapsed time.
kenjiArai 0:5b88d5760320 53 */
kenjiArai 0:5b88d5760320 54 lorawan_time_t get_elapsed_time(lorawan_time_t saved_time);
kenjiArai 0:5b88d5760320 55
kenjiArai 0:5b88d5760320 56 /** Initializes the timer object.
kenjiArai 0:5b88d5760320 57 *
kenjiArai 0:5b88d5760320 58 * @remark The TimerSetValue function must be called before starting the timer.
kenjiArai 0:5b88d5760320 59 * This function initializes the time-stamp and reloads the value at 0.
kenjiArai 0:5b88d5760320 60 *
kenjiArai 0:5b88d5760320 61 * @param [in] obj The structure containing the timer object parameters.
kenjiArai 0:5b88d5760320 62 * @param [in] callback The function callback called at the end of the timeout.
kenjiArai 0:5b88d5760320 63 */
kenjiArai 0:5b88d5760320 64 void init(timer_event_t &obj, mbed::Callback<void()> callback);
kenjiArai 0:5b88d5760320 65
kenjiArai 0:5b88d5760320 66 /** Starts and adds the timer object to the list of timer events.
kenjiArai 0:5b88d5760320 67 *
kenjiArai 0:5b88d5760320 68 * @param [in] obj The structure containing the timer object parameters.
kenjiArai 0:5b88d5760320 69 * @param [in] timeout The new timeout value.
kenjiArai 0:5b88d5760320 70 */
kenjiArai 0:5b88d5760320 71 void start(timer_event_t &obj, const uint32_t timeout);
kenjiArai 0:5b88d5760320 72
kenjiArai 0:5b88d5760320 73 /** Stops and removes the timer object from the list of timer events.
kenjiArai 0:5b88d5760320 74 *
kenjiArai 0:5b88d5760320 75 * @param [in] obj The structure containing the timer object parameters.
kenjiArai 0:5b88d5760320 76 */
kenjiArai 0:5b88d5760320 77 void stop(timer_event_t &obj);
kenjiArai 0:5b88d5760320 78
kenjiArai 0:5b88d5760320 79 private:
kenjiArai 0:5b88d5760320 80 events::EventQueue *_queue;
kenjiArai 0:5b88d5760320 81 };
kenjiArai 0:5b88d5760320 82
kenjiArai 0:5b88d5760320 83 #endif // MBED_LORAWAN_SYS_TIMER_H__