takashi kadono / Mbed OS Nucleo_446

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

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