--- /dev/null
+// $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