PES4 / Mbed OS Queue_02
Committer:
demayer
Date:
Sat Apr 11 08:15:48 2020 +0000
Revision:
1:b36bbc1c6d27
Parent:
0:6bf0743ece18
IMU-library in .h und .cpp file aufgeteilt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
demayer 0:6bf0743ece18 1 /* mbed Microcontroller Library
demayer 0:6bf0743ece18 2 * Copyright (c) 2006-2013 ARM Limited
demayer 0:6bf0743ece18 3 *
demayer 0:6bf0743ece18 4 * Licensed under the Apache License, Version 2.0 (the "License");
demayer 0:6bf0743ece18 5 * you may not use this file except in compliance with the License.
demayer 0:6bf0743ece18 6 * You may obtain a copy of the License at
demayer 0:6bf0743ece18 7 *
demayer 0:6bf0743ece18 8 * http://www.apache.org/licenses/LICENSE-2.0
demayer 0:6bf0743ece18 9 *
demayer 0:6bf0743ece18 10 * Unless required by applicable law or agreed to in writing, software
demayer 0:6bf0743ece18 11 * distributed under the License is distributed on an "AS IS" BASIS,
demayer 0:6bf0743ece18 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
demayer 0:6bf0743ece18 13 * See the License for the specific language governing permissions and
demayer 0:6bf0743ece18 14 * limitations under the License.
demayer 0:6bf0743ece18 15 */
demayer 0:6bf0743ece18 16 #include "hal/rtc_api.h"
demayer 0:6bf0743ece18 17
demayer 0:6bf0743ece18 18 #include "platform/mbed_critical.h"
demayer 0:6bf0743ece18 19 #include "platform/mbed_rtc_time.h"
demayer 0:6bf0743ece18 20 #include "platform/SingletonPtr.h"
demayer 0:6bf0743ece18 21 #include "platform/PlatformMutex.h"
demayer 0:6bf0743ece18 22
demayer 0:6bf0743ece18 23 static SingletonPtr<PlatformMutex> _mutex;
demayer 0:6bf0743ece18 24
demayer 0:6bf0743ece18 25 #if DEVICE_RTC
demayer 0:6bf0743ece18 26 static void (*_rtc_init)(void) = rtc_init;
demayer 0:6bf0743ece18 27 static int (*_rtc_isenabled)(void) = rtc_isenabled;
demayer 0:6bf0743ece18 28 static time_t (*_rtc_read)(void) = rtc_read;
demayer 0:6bf0743ece18 29 static void (*_rtc_write)(time_t t) = rtc_write;
demayer 0:6bf0743ece18 30 #else
demayer 0:6bf0743ece18 31 static void (*_rtc_init)(void) = NULL;
demayer 0:6bf0743ece18 32 static int (*_rtc_isenabled)(void) = NULL;
demayer 0:6bf0743ece18 33 static time_t (*_rtc_read)(void) = NULL;
demayer 0:6bf0743ece18 34 static void (*_rtc_write)(time_t t) = NULL;
demayer 0:6bf0743ece18 35 #endif
demayer 0:6bf0743ece18 36
demayer 0:6bf0743ece18 37 #ifdef __cplusplus
demayer 0:6bf0743ece18 38 extern "C" {
demayer 0:6bf0743ece18 39 #endif
demayer 0:6bf0743ece18 40 #if defined (__ICCARM__)
demayer 0:6bf0743ece18 41 time_t __time32(time_t *timer)
demayer 0:6bf0743ece18 42 #else
demayer 0:6bf0743ece18 43 time_t time(time_t *timer)
demayer 0:6bf0743ece18 44 #endif
demayer 0:6bf0743ece18 45
demayer 0:6bf0743ece18 46 {
demayer 0:6bf0743ece18 47 _mutex->lock();
demayer 0:6bf0743ece18 48 if (_rtc_isenabled != NULL) {
demayer 0:6bf0743ece18 49 if (!(_rtc_isenabled())) {
demayer 0:6bf0743ece18 50 set_time(0);
demayer 0:6bf0743ece18 51 }
demayer 0:6bf0743ece18 52 }
demayer 0:6bf0743ece18 53
demayer 0:6bf0743ece18 54 time_t t = (time_t)-1;
demayer 0:6bf0743ece18 55 if (_rtc_read != NULL) {
demayer 0:6bf0743ece18 56 t = _rtc_read();
demayer 0:6bf0743ece18 57 }
demayer 0:6bf0743ece18 58
demayer 0:6bf0743ece18 59 if (timer != NULL) {
demayer 0:6bf0743ece18 60 *timer = t;
demayer 0:6bf0743ece18 61 }
demayer 0:6bf0743ece18 62 _mutex->unlock();
demayer 0:6bf0743ece18 63 return t;
demayer 0:6bf0743ece18 64 }
demayer 0:6bf0743ece18 65
demayer 0:6bf0743ece18 66 void set_time(time_t t) {
demayer 0:6bf0743ece18 67 _mutex->lock();
demayer 0:6bf0743ece18 68 if (_rtc_init != NULL) {
demayer 0:6bf0743ece18 69 _rtc_init();
demayer 0:6bf0743ece18 70 }
demayer 0:6bf0743ece18 71 if (_rtc_write != NULL) {
demayer 0:6bf0743ece18 72 _rtc_write(t);
demayer 0:6bf0743ece18 73 }
demayer 0:6bf0743ece18 74 _mutex->unlock();
demayer 0:6bf0743ece18 75 }
demayer 0:6bf0743ece18 76
demayer 0:6bf0743ece18 77 void attach_rtc(time_t (*read_rtc)(void), void (*write_rtc)(time_t), void (*init_rtc)(void), int (*isenabled_rtc)(void)) {
demayer 0:6bf0743ece18 78 _mutex->lock();
demayer 0:6bf0743ece18 79 _rtc_read = read_rtc;
demayer 0:6bf0743ece18 80 _rtc_write = write_rtc;
demayer 0:6bf0743ece18 81 _rtc_init = init_rtc;
demayer 0:6bf0743ece18 82 _rtc_isenabled = isenabled_rtc;
demayer 0:6bf0743ece18 83 _mutex->unlock();
demayer 0:6bf0743ece18 84 }
demayer 0:6bf0743ece18 85
demayer 0:6bf0743ece18 86
demayer 0:6bf0743ece18 87
demayer 0:6bf0743ece18 88 #ifdef __cplusplus
demayer 0:6bf0743ece18 89 }
demayer 0:6bf0743ece18 90 #endif