%T/platforms/shimmer2/chips/sd
%T/platforms/shimmer2/chips/bluetooth
%T/platforms/shimmer2/chips/tilt
+ %T/platforms/shimmer2/chips/gyro
%T/platforms/shimmer
%T/platforms/shimmer/chips/msp430
%T/platforms/shimmer/chips/mma7260
--- /dev/null
+/*
+ * Copyright (c) 2009, Shimmer Research, Ltd.
+ * All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Shimmer Research, Ltd. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @author Steve Ayer
+ * @date August 2009
+ *
+ * tinyos-2.x port
+ * @date March, 2010
+ *
+ */
+
+interface GyroBoard {
+ // no explicit enable/disable, use stdcontrol.
+
+ // it has its own
+ command void ledOn();
+ command void ledOff();
+ command void ledToggle();
+
+ command void autoZero();
+
+ // it has its own, just a reflection of UserButton.fired(), which is debounced
+ async event void buttonPressed();
+}
+
+
+
+
--- /dev/null
+/*
+ * Copyright (c) 2009, Shimmer Research, Ltd.
+ * All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Shimmer Research, Ltd. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @author Steve Ayer
+ * @date August 2009
+ *
+ * tinyos-2.x port
+ * @date March, 2010
+ */
+
+configuration GyroBoardC {
+ provides{
+ interface Init;
+ interface StdControl;
+ interface GyroBoard;
+ }
+}
+
+implementation {
+ components GyroBoardP;
+ Init = GyroBoardP;
+ StdControl = GyroBoardP;
+ GyroBoard = GyroBoardP;
+
+ components GyroButtonC;
+ GyroBoardP.buttonNotify -> GyroButtonC;
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2009, Shimmer Research, Ltd.
+ * All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Shimmer Research, Ltd. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @author Steve Ayer
+ * @date August, 2009
+ *
+ * tinyos-2.x port
+ * @date March, 2010
+ *
+ */
+
+#include <UserButton.h>
+
+module GyroBoardP {
+ provides {
+ interface Init;
+ interface StdControl;
+ interface GyroBoard;
+ }
+ uses{
+ interface Notify<button_state_t> as buttonNotify;
+ }
+}
+
+implementation {
+ command error_t Init.init(){
+ register uint16_t i;
+
+ // power, active low
+ TOSH_MAKE_PROG_OUT_OUTPUT();
+ TOSH_SEL_PROG_OUT_IOFUNC();
+ TOSH_SET_PROG_OUT_PIN(); // off
+
+ // analog signal enable, active low
+ TOSH_MAKE_SER0_CTS_OUTPUT();
+ TOSH_SEL_SER0_CTS_IOFUNC();
+ TOSH_SET_SER0_CTS_PIN(); // signal disabled
+
+ // signal goes to gyro-zero pins
+ TOSH_MAKE_UTXD0_OUTPUT();
+ TOSH_SEL_UTXD0_IOFUNC();
+ TOSH_CLR_UTXD0_PIN();
+
+ // this one tied to the led
+ TOSH_MAKE_URXD0_OUTPUT();
+ TOSH_SEL_URXD0_IOFUNC();
+ call GyroBoard.ledOff();
+
+ // x
+ TOSH_MAKE_ADC_1_INPUT();
+ TOSH_SEL_ADC_1_MODFUNC();
+
+ // y
+ TOSH_MAKE_ADC_6_INPUT();
+ TOSH_SEL_ADC_6_MODFUNC();
+
+ // z
+ TOSH_MAKE_ADC_2_INPUT();
+ TOSH_SEL_ADC_2_MODFUNC();
+
+ /*
+ * gyro power-down after start-up transients, which are particularly rough during programming
+ * we're waiting for caps to discharge...
+ */
+ for(i = 0; i < 6000; i++)
+ TOSH_uwait(1000);
+
+ // now power it up, max ready-time 200ms
+ TOSH_CLR_PROG_OUT_PIN();
+
+ for(i = 0; i < 200; i++)
+ TOSH_uwait(1000);
+
+ call buttonNotify.enable();
+
+ return SUCCESS;
+ }
+
+ command error_t StdControl.start(){
+ TOSH_CLR_SER0_CTS_PIN(); // enable analog signals
+
+ return SUCCESS;
+ }
+
+ command error_t StdControl.stop(){
+ // disable analog signals, then power down
+ TOSH_SET_SER0_CTS_PIN();
+ TOSH_SET_PROG_OUT_PIN();
+
+ // kill the led
+ call GyroBoard.ledOff();
+
+ return SUCCESS;
+ }
+
+ command void GyroBoard.autoZero() {
+ TOSH_SET_UTXD0_PIN();
+
+ TOSH_uwait(100); // pulse between 2 (!) and 1500 usec
+
+ TOSH_CLR_UTXD0_PIN();
+
+ TOSH_uwait(6900); // takes 7ms to settle
+ }
+
+ command void GyroBoard.ledOn() {
+ TOSH_CLR_URXD0_PIN();
+ }
+
+ command void GyroBoard.ledOff() {
+ TOSH_SET_URXD0_PIN();
+ }
+
+ command void GyroBoard.ledToggle() {
+ TOSH_TOGGLE_URXD0_PIN();
+ }
+
+ event void buttonNotify.notify( button_state_t val){
+ signal GyroBoard.buttonPressed();
+ }
+}
+
+
+
+
--- /dev/null
+/**
+ * Copyright (c) 2007 Arch Rock Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ * - Neither the name of the Arch Rock Corporation nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * ARCHED ROCK OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE
+ */
+
+/**
+ * Implementation of the user button for the telosb platform. Get
+ * returns the current state of the button by reading the pin,
+ * regardless of whether enable() or disable() has been called on the
+ * Interface. Notify.enable() and Notify.disable() modify the
+ * underlying interrupt state of the pin, and have the effect of
+ * enabling or disabling notifications that the button has changed
+ * state.
+ *
+ * @author Gilman Tolle <gtolle@archrock.com>
+ * @version $Revision$
+ * port to shimmer-style
+ * @author Steve Ayer
+ * @date February, 2010
+ */
+
+#include <UserButton.h>
+
+configuration GyroButtonC {
+ provides interface Notify<button_state_t>;
+}
+implementation {
+ components HplGyroButtonC;
+ components new SwitchToggleC();
+ SwitchToggleC.GpioInterrupt -> HplGyroButtonC.GpioInterrupt;
+ SwitchToggleC.GeneralIO -> HplGyroButtonC.GeneralIO;
+
+ components UserButtonP;
+ Notify = UserButtonP;
+
+ components new TimerMilliC() as debounceTimer;
+ UserButtonP.NotifyLower -> SwitchToggleC.Notify;
+ UserButtonP.debounceTimer -> debounceTimer;
+}
--- /dev/null
+/**
+ * Copyright (c) 2007 Arch Rock Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ * - Neither the name of the Arch Rock Corporation nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * ARCHED ROCK OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE
+ */
+
+/**
+ * Implementation of the user button for the telos platform
+ *
+ * @author Gilman Tolle <gtolle@archrock.com>
+ * @version $Revision$
+ * (not much to) port to shimmer2 gyro
+ * @author Steve Ayer
+ * @date March, 2010
+ */
+
+configuration HplUserButtonC {
+ provides interface GeneralIO;
+ provides interface GpioInterrupt;
+}
+implementation {
+ components HplMsp430GeneralIOC as GeneralIOC;
+ components HplMsp430InterruptC as InterruptC;
+
+ components new Msp430GpioC() as UserButtonC;
+ UserButtonC -> GeneralIOC.Port13;
+ GeneralIO = UserButtonC;
+
+ components new Msp430InterruptC() as InterruptUserButtonC;
+ InterruptUserButtonC.HplInterrupt -> InterruptC.Port13;
+ GpioInterrupt = InterruptUserButtonC.Interrupt;
+}
TOSH_ASSIGN_PIN(ADC_0, 6, 0);
TOSH_ASSIGN_PIN(ADC_1, 6, 1);
TOSH_ASSIGN_PIN(ADC_2, 6, 2);
+TOSH_ASSIGN_PIN(ADC_3, 6, 3);
+TOSH_ASSIGN_PIN(ADC_4, 6, 4);
+TOSH_ASSIGN_PIN(ADC_5, 6, 5);
TOSH_ASSIGN_PIN(ADC_6, 6, 6);
TOSH_ASSIGN_PIN(ADC_7, 6, 7);