mbed.h library with any bug fixes AV finds.

Dependents:   micromouse4_encoder_testing PID_Test Lab1_Test WorkingPID ... more

Committer:
aravindsv
Date:
Mon Nov 02 03:07:12 2015 +0000
Revision:
1:ebce2ad32f95
Parent:
0:ba7650f404af
Changed the RCC timeout value to 500 ms, so total code startup time before program starts running is ~1s. Hopefully no side-effects from lower startup timeouts

Who changed what in which revision?

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