]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.h
Add SAM4L demo.
[freertos] / FreeRTOS / Demo / CORTEX_M4_ATSAM4L_Atmel_Studio / src / asf / common / services / sleepmgr / sam4l / sleepmgr.h
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/common/services/sleepmgr/sam4l/sleepmgr.h
new file mode 100644 (file)
index 0000000..c1ca20e
--- /dev/null
@@ -0,0 +1,124 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief Chip-specific sleep manager configuration\r
+ *\r
+ * Copyright (c) 2012 - 2013 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef SAM_SLEEPMGR_INCLUDED\r
+#define SAM_SLEEPMGR_INCLUDED\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <compiler.h>\r
+#include <conf_sleepmgr.h>\r
+#include <interrupt.h>\r
+#include "bpm.h"\r
+#include "sleep.h"\r
+\r
+/**\r
+ * \weakgroup sleepmgr_group\r
+ * @{\r
+ */\r
+\r
+enum sleepmgr_mode {\r
+       /** Active mode. */\r
+       SLEEPMGR_ACTIVE = 0,\r
+\r
+       /**\r
+        *  Sleep mode.\r
+        *  Potential Wake Up sources: fast startup events and interrupt.\r
+        */\r
+       SLEEPMGR_SLEEP_0,\r
+       SLEEPMGR_SLEEP_1,\r
+       SLEEPMGR_SLEEP_2,\r
+       SLEEPMGR_SLEEP_3,\r
+\r
+       /**\r
+        *  Wait mode.\r
+        *  Potential Wake Up sources: fast startup events\r
+        */\r
+       SLEEPMGR_WAIT,\r
+\r
+       /**\r
+        *  Retention mode.\r
+        *  Potential Wake Up sources: fast startup events\r
+        */\r
+       SLEEPMGR_RET,\r
+\r
+       /** Backup mode. Potential Wake Up sources: WKUPs, SM, RTT, RTC. */\r
+       SLEEPMGR_BACKUP,\r
+\r
+       SLEEPMGR_NR_OF_MODES,\r
+};\r
+\r
+/**\r
+ * \internal\r
+ * \name Internal arrays\r
+ * @{\r
+ */\r
+#if defined(CONFIG_SLEEPMGR_ENABLE) || defined(__DOXYGEN__)\r
+/** Sleep mode lock counters */\r
+extern uint8_t sleepmgr_locks[];\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+/** @} */\r
+\r
+static inline void sleepmgr_sleep(const enum sleepmgr_mode sleep_mode)\r
+{\r
+       Assert(sleep_mode != SLEEPMGR_ACTIVE);\r
+#ifdef CONFIG_SLEEPMGR_ENABLE\r
+       cpu_irq_disable();\r
+\r
+       /* Enter the sleep mode. */\r
+       bpm_sleep(BPM, sleep_mode);\r
+#else\r
+       UNUSED(sleep_mode);\r
+       cpu_irq_enable();\r
+#endif /* CONFIG_SLEEPMGR_ENABLE */\r
+}\r
+\r
+/** @} */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* SAM_SLEEPMGR_INCLUDED */\r