]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/gpio/SoftCaptureP.nc
Merge devel code into the trunk.
[tinyos-2.x.git] / tos / lib / gpio / SoftCaptureP.nc
diff --git a/tos/lib/gpio/SoftCaptureP.nc b/tos/lib/gpio/SoftCaptureP.nc
new file mode 100644 (file)
index 0000000..34b628f
--- /dev/null
@@ -0,0 +1,87 @@
+// $Id$\r
+\r
+/*                                                                     tab:4\r
+ *  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.  By\r
+ *  downloading, copying, installing or using the software you agree to\r
+ *  this license.  If you do not agree to this license, do not download,\r
+ *  install, copy or use the software.\r
+ *\r
+ *  Intel Open Source License \r
+ *\r
+ *  Copyright (c) 2002 Intel Corporation \r
+ *  All rights reserved. \r
+ *  Redistribution and use in source and binary forms, with or without\r
+ *  modification, are permitted provided that the following conditions are\r
+ *  met:\r
+ * \r
+ *     Redistributions of source code must retain the above copyright\r
+ *  notice, this list of conditions and the following disclaimer.\r
+ *     Redistributions in binary form must reproduce the above copyright\r
+ *  notice, this list of conditions and the following disclaimer in the\r
+ *  documentation and/or other materials provided with the distribution.\r
+ *      Neither the name of the Intel Corporation nor the names of its\r
+ *  contributors may be used to endorse or promote products derived from\r
+ *  this software without specific prior written permission.\r
+ *  \r
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+ *  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\r
+ *  PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE INTEL OR ITS\r
+ *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+ *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+ *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ * \r
+ * \r
+ */\r
+\r
+/**\r
+ * Emulates GPIO capture functionality using GpioInterrupt and the \r
+ * standard 32khz counter\r
+ *\r
+ * @author Phil Buonadonna\r
+ */\r
+generic module SoftCaptureP ()\r
+{\r
+  provides interface GpioCapture;\r
+  uses {\r
+    interface GpioInterrupt;\r
+    interface Counter<T32khz,uint32_t> as Counter32khz32;\r
+  }\r
+}\r
+\r
+implementation \r
+{\r
+\r
+  async command error_t GpioCapture.captureRisingEdge() {\r
+    return (call GpioInterrupt.enableRisingEdge());\r
+  }\r
+\r
+  async command error_t GpioCapture.captureFallingEdge() {\r
+    return (call GpioInterrupt.enableFallingEdge());\r
+  }\r
+\r
+  async command void GpioCapture.disable() {\r
+    call GpioInterrupt.disable();\r
+    return;\r
+  }\r
+  \r
+  async event void GpioInterrupt.fired() {\r
+    uint16_t captureTime;\r
+\r
+    captureTime = (uint16_t) call Counter32khz32.get();\r
+    signal GpioCapture.captured(captureTime);\r
+    return;\r
+  }\r
+\r
+  async event void Counter32khz32.overflow() {\r
+    return;\r
+  }\r
+\r
+  default async event void GpioCapture.captured(uint16_t time) {\r
+    return;\r
+  }\r
+}\r