Kev Mann / mbed-dev-OS5_10_4
Committer:
kevman
Date:
Wed Nov 28 15:10:15 2018 +0000
Revision:
0:38ceb79fef03
RTC modified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevman 0:38ceb79fef03 1 /*
kevman 0:38ceb79fef03 2 * Copyright (c) 2014-2015 ARM Limited. All rights reserved.
kevman 0:38ceb79fef03 3 * SPDX-License-Identifier: Apache-2.0
kevman 0:38ceb79fef03 4 * Licensed under the Apache License, Version 2.0 (the License); you may
kevman 0:38ceb79fef03 5 * not use this file except in compliance with the License.
kevman 0:38ceb79fef03 6 * You may obtain a copy of the License at
kevman 0:38ceb79fef03 7 *
kevman 0:38ceb79fef03 8 * http://www.apache.org/licenses/LICENSE-2.0
kevman 0:38ceb79fef03 9 *
kevman 0:38ceb79fef03 10 * Unless required by applicable law or agreed to in writing, software
kevman 0:38ceb79fef03 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
kevman 0:38ceb79fef03 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kevman 0:38ceb79fef03 13 * See the License for the specific language governing permissions and
kevman 0:38ceb79fef03 14 * limitations under the License.
kevman 0:38ceb79fef03 15 */
kevman 0:38ceb79fef03 16 #ifndef _PL_NANO_TIMER_SYS_H_
kevman 0:38ceb79fef03 17 #define _PL_NANO_TIMER_SYS_H_
kevman 0:38ceb79fef03 18
kevman 0:38ceb79fef03 19 #ifdef __cplusplus
kevman 0:38ceb79fef03 20 extern "C" {
kevman 0:38ceb79fef03 21 #endif
kevman 0:38ceb79fef03 22
kevman 0:38ceb79fef03 23 #include "eventOS_event.h"
kevman 0:38ceb79fef03 24
kevman 0:38ceb79fef03 25 /* We borrow base event storage, including its list link, and add a time field */
kevman 0:38ceb79fef03 26 typedef struct sys_timer_struct_s {
kevman 0:38ceb79fef03 27 arm_event_storage_t event;
kevman 0:38ceb79fef03 28 uint32_t launch_time; // tick value
kevman 0:38ceb79fef03 29 uint32_t period;
kevman 0:38ceb79fef03 30 } sys_timer_struct_s;
kevman 0:38ceb79fef03 31
kevman 0:38ceb79fef03 32
kevman 0:38ceb79fef03 33 /**
kevman 0:38ceb79fef03 34 * Initialize system timer
kevman 0:38ceb79fef03 35 * */
kevman 0:38ceb79fef03 36 extern void timer_sys_init(void);
kevman 0:38ceb79fef03 37
kevman 0:38ceb79fef03 38 extern uint32_t timer_get_runtime_ticks(void);
kevman 0:38ceb79fef03 39 int8_t timer_sys_wakeup(void);
kevman 0:38ceb79fef03 40 void timer_sys_disable(void);
kevman 0:38ceb79fef03 41 void timer_sys_event_free(struct arm_event_storage *event);
kevman 0:38ceb79fef03 42
kevman 0:38ceb79fef03 43 // This require lock to be held
kevman 0:38ceb79fef03 44 void timer_sys_event_cancel_critical(struct arm_event_storage *event);
kevman 0:38ceb79fef03 45
kevman 0:38ceb79fef03 46 /**
kevman 0:38ceb79fef03 47 * System Timer update and synch after sleep
kevman 0:38ceb79fef03 48 *
kevman 0:38ceb79fef03 49 * \param ticks Time in 10 ms resolution
kevman 0:38ceb79fef03 50 *
kevman 0:38ceb79fef03 51 * \return none
kevman 0:38ceb79fef03 52 *
kevman 0:38ceb79fef03 53 * */
kevman 0:38ceb79fef03 54 void system_timer_tick_update(uint32_t ticks);
kevman 0:38ceb79fef03 55
kevman 0:38ceb79fef03 56 #ifdef __cplusplus
kevman 0:38ceb79fef03 57 }
kevman 0:38ceb79fef03 58 #endif
kevman 0:38ceb79fef03 59
kevman 0:38ceb79fef03 60 #endif /*_PL_NANO_TIMER_SYS_H_*/