Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
features/lorawan/system/LoRaWANTimer.h@0:5b88d5760320, 2019-12-17 (annotated)
- 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?
| User | Revision | Line number | New 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__ |