mbed library sources. Supersedes mbed-src.

Dependents:   BREAK_SENSOR_LED

Fork of mbed-dev by mbed official

Committer:
AnnaBridge
Date:
Mon Oct 02 15:33:19 2017 +0100
Revision:
174:b96e65c34a4d
Child:
175:af195413fb11
This updates the lib to the mbed lib v 152

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 174:b96e65c34a4d 1 /* mbed Microcontroller Library
AnnaBridge 174:b96e65c34a4d 2 * Copyright (c) 2017 ARM Limited
AnnaBridge 174:b96e65c34a4d 3 *
AnnaBridge 174:b96e65c34a4d 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 174:b96e65c34a4d 5 * you may not use this file except in compliance with the License.
AnnaBridge 174:b96e65c34a4d 6 * You may obtain a copy of the License at
AnnaBridge 174:b96e65c34a4d 7 *
AnnaBridge 174:b96e65c34a4d 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 174:b96e65c34a4d 9 *
AnnaBridge 174:b96e65c34a4d 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 174:b96e65c34a4d 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 174:b96e65c34a4d 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 174:b96e65c34a4d 13 * See the License for the specific language governing permissions and
AnnaBridge 174:b96e65c34a4d 14 * limitations under the License.
AnnaBridge 174:b96e65c34a4d 15 */
AnnaBridge 174:b96e65c34a4d 16 #ifndef MBED_DEEPSLEEPLOCK_H
AnnaBridge 174:b96e65c34a4d 17 #define MBED_DEEPSLEEPLOCK_H
AnnaBridge 174:b96e65c34a4d 18
AnnaBridge 174:b96e65c34a4d 19 #include "platform/mbed_sleep.h"
AnnaBridge 174:b96e65c34a4d 20
AnnaBridge 174:b96e65c34a4d 21 namespace mbed {
AnnaBridge 174:b96e65c34a4d 22
AnnaBridge 174:b96e65c34a4d 23
AnnaBridge 174:b96e65c34a4d 24 /** RAII object for disabling, then restoring the deep sleep mode
AnnaBridge 174:b96e65c34a4d 25 * Usage:
AnnaBridge 174:b96e65c34a4d 26 * @code
AnnaBridge 174:b96e65c34a4d 27 *
AnnaBridge 174:b96e65c34a4d 28 * void f() {
AnnaBridge 174:b96e65c34a4d 29 * // some code here
AnnaBridge 174:b96e65c34a4d 30 * {
AnnaBridge 174:b96e65c34a4d 31 * DeepSleepLock lock;
AnnaBridge 174:b96e65c34a4d 32 * // Code in this block will run with the deep sleep mode locked
AnnaBridge 174:b96e65c34a4d 33 * }
AnnaBridge 174:b96e65c34a4d 34 * // deep sleep mode will be restored to their previous state
AnnaBridge 174:b96e65c34a4d 35 * }
AnnaBridge 174:b96e65c34a4d 36 * @endcode
AnnaBridge 174:b96e65c34a4d 37 */
AnnaBridge 174:b96e65c34a4d 38 class DeepSleepLock {
AnnaBridge 174:b96e65c34a4d 39 public:
AnnaBridge 174:b96e65c34a4d 40 DeepSleepLock()
AnnaBridge 174:b96e65c34a4d 41 {
AnnaBridge 174:b96e65c34a4d 42 sleep_manager_lock_deep_sleep();
AnnaBridge 174:b96e65c34a4d 43 }
AnnaBridge 174:b96e65c34a4d 44
AnnaBridge 174:b96e65c34a4d 45 ~DeepSleepLock()
AnnaBridge 174:b96e65c34a4d 46 {
AnnaBridge 174:b96e65c34a4d 47 sleep_manager_unlock_deep_sleep();
AnnaBridge 174:b96e65c34a4d 48 }
AnnaBridge 174:b96e65c34a4d 49
AnnaBridge 174:b96e65c34a4d 50 /** Mark the start of a locked deep sleep section
AnnaBridge 174:b96e65c34a4d 51 */
AnnaBridge 174:b96e65c34a4d 52 void lock()
AnnaBridge 174:b96e65c34a4d 53 {
AnnaBridge 174:b96e65c34a4d 54 sleep_manager_lock_deep_sleep();
AnnaBridge 174:b96e65c34a4d 55 }
AnnaBridge 174:b96e65c34a4d 56
AnnaBridge 174:b96e65c34a4d 57 /** Mark the end of a locked deep sleep section
AnnaBridge 174:b96e65c34a4d 58 */
AnnaBridge 174:b96e65c34a4d 59 void unlock()
AnnaBridge 174:b96e65c34a4d 60 {
AnnaBridge 174:b96e65c34a4d 61 sleep_manager_unlock_deep_sleep();
AnnaBridge 174:b96e65c34a4d 62 }
AnnaBridge 174:b96e65c34a4d 63 };
AnnaBridge 174:b96e65c34a4d 64
AnnaBridge 174:b96e65c34a4d 65 }
AnnaBridge 174:b96e65c34a4d 66
AnnaBridge 174:b96e65c34a4d 67 #endif