From ed472717f2df810f25624807adc67c9d041ea70e Mon Sep 17 00:00:00 2001 From: nifi Date: Mon, 3 May 2010 21:57:35 +0000 Subject: [PATCH] Added Sentilla Jcreate platform. This platform is similar to the Sky platform but with other sensors and 8 leds. --- platform/jcreate/Makefile.jcreate | 16 +++ platform/jcreate/contiki-jcreate-platform.c | 44 +++++++ platform/jcreate/dev/acc-sensor.c | 121 ++++++++++++++++++++ platform/jcreate/dev/acc-sensor.h | 48 ++++++++ platform/jcreate/dev/ext-sensor.c | 105 +++++++++++++++++ platform/jcreate/dev/ext-sensor.h | 53 +++++++++ platform/jcreate/leds-arch.c | 65 +++++++++++ 7 files changed, 452 insertions(+) create mode 100644 platform/jcreate/Makefile.jcreate create mode 100644 platform/jcreate/contiki-jcreate-platform.c create mode 100644 platform/jcreate/dev/acc-sensor.c create mode 100644 platform/jcreate/dev/acc-sensor.h create mode 100644 platform/jcreate/dev/ext-sensor.c create mode 100644 platform/jcreate/dev/ext-sensor.h create mode 100644 platform/jcreate/leds-arch.c diff --git a/platform/jcreate/Makefile.jcreate b/platform/jcreate/Makefile.jcreate new file mode 100644 index 000000000..f809e8537 --- /dev/null +++ b/platform/jcreate/Makefile.jcreate @@ -0,0 +1,16 @@ +# $Id: Makefile.jcreate,v 1.1 2010/05/03 21:57:35 nifi Exp $ + +# Some drivers such as ds2411.c only compile under platform sky +CFLAGS += -DCONTIKI_TARGET_SKY + +CONTIKI_TARGET_SOURCEFILES += contiki-jcreate-platform.c \ + battery-sensor.c radio-sensor.c \ + acc-sensor.c ext-sensor.c + +include $(CONTIKI)/platform/sky/Makefile.common + +ifneq ($(TMOTE_BSL), 1) + ${warning No tmote-bsl command found. Please install this command in contiki-2.x/tools/sky} +endif + +CONTIKI_TARGET_DIRS += ${addprefix ../sky/,. dev apps} diff --git a/platform/jcreate/contiki-jcreate-platform.c b/platform/jcreate/contiki-jcreate-platform.c new file mode 100644 index 000000000..1cc2f15b6 --- /dev/null +++ b/platform/jcreate/contiki-jcreate-platform.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + * This file is part of the Contiki operating system. + * + * Author: Niclas Finne , Joakim Eriksson + * + * $Id: contiki-jcreate-platform.c,v 1.1 2010/05/03 21:57:35 nifi Exp $ + */ + +#include "dev/battery-sensor.h" + +SENSORS(&battery_sensor); + +void +init_platform(void) +{ + process_start(&sensors_process, NULL); +} diff --git a/platform/jcreate/dev/acc-sensor.c b/platform/jcreate/dev/acc-sensor.c new file mode 100644 index 000000000..aca02995b --- /dev/null +++ b/platform/jcreate/dev/acc-sensor.c @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + * $Id: acc-sensor.c,v 1.1 2010/05/03 21:57:35 nifi Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne + * Created : 2005-11-01 + * Updated : $Date: 2010/05/03 21:57:35 $ + * $Revision: 1.1 $ + */ + +#include "dev/acc-sensor.h" +#include "dev/sky-sensors.h" +#include + +const struct sensors_sensor acc_sensor; +static uint8_t active; + +/*---------------------------------------------------------------------------*/ +static void +activate(void) +{ + P2DIR |= 0x48; + P2OUT |= 0x48; + + /* stop converting immediately */ + ADC12CTL0 &= ~ENC; + ADC12CTL1 &= ~CONSEQ_3; + + while(ADC12CTL1 & ADC12BUSY); + + /* Configure ADC12_2 to sample channel 4, 5, 6 and use */ + /* the Vref+ as reference (SREF_1) since it is a stable reference */ + ADC12MCTL2 = (INCH_4 + SREF_1); + ADC12MCTL3 = (INCH_5 + SREF_1); + ADC12MCTL4 = (INCH_6 + SREF_1); + /* internal temperature can be read as value(3) */ + ADC12MCTL5 = (INCH_10 + SREF_1); + + active = 1; + sky_sensors_activate(0x70); +} +/*---------------------------------------------------------------------------*/ +static void +deactivate(void) +{ + sky_sensors_deactivate(0x70); + active = 0; +} +/*---------------------------------------------------------------------------*/ +static int +value(int type) +{ + switch(type) { + case 0: + return ADC12MEM2; + case 1: + return ADC12MEM3; + case 2: + return ADC12MEM4; + case 3: + return ADC12MEM5; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static int +configure(int type, int c) +{ + switch(type) { + case SENSORS_ACTIVE: + if (c) { + if(!active) { + activate(); + } + } else if(active) { + deactivate(); + } + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static int +status(int type) +{ + switch (type) { + case SENSORS_ACTIVE: + case SENSORS_READY: + return active; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +SENSORS_SENSOR(acc_sensor, ACC_SENSOR, value, configure, status); diff --git a/platform/jcreate/dev/acc-sensor.h b/platform/jcreate/dev/acc-sensor.h new file mode 100644 index 000000000..5ff6d4f8b --- /dev/null +++ b/platform/jcreate/dev/acc-sensor.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + * $Id: acc-sensor.h,v 1.1 2010/05/03 21:57:35 nifi Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne + * Created : 2005-11-01 + * Updated : $Date: 2010/05/03 21:57:35 $ + * $Revision: 1.1 $ + */ + +#ifndef __ACC_SENSOR_H__ +#define __ACC_SENSOR_H__ + +#include "lib/sensors.h" + +extern const struct sensors_sensor acc_sensor; + +#define ACC_SENSOR "Acc" + +#endif /* __ACC_SENSOR_H__ */ diff --git a/platform/jcreate/dev/ext-sensor.c b/platform/jcreate/dev/ext-sensor.c new file mode 100644 index 000000000..2e0a8eeee --- /dev/null +++ b/platform/jcreate/dev/ext-sensor.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + * $Id: ext-sensor.c,v 1.1 2010/05/03 21:57:35 nifi Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne, Marcus Lundén, + * Jesper Karlsson + * Created : 2005-11-01 + * Updated : $Date: 2010/05/03 21:57:35 $ + * $Revision: 1.1 $ + */ + +#include + +#include "dev/ext-sensor.h" +#include "dev/sky-sensors.h" + +const struct sensors_sensor ext_sensor; +static uint8_t active; +/*---------------------------------------------------------------------------*/ +static int +value(int type) +{ + /* ADC0 corresponds to the port under the logo, ADC1 to the port over the logo, + ADC2 and ADC3 corresponds to port on the JCreate bottom expansion port) */ + switch(type) { + case ADC0: + return ADC12MEM6; + case ADC1: + return ADC12MEM7; + case ADC2: + return ADC12MEM8; + case ADC3: + return ADC12MEM9; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static int +status(int type) +{ + switch(type) { + case SENSORS_ACTIVE: + case SENSORS_READY: + return active; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static int +configure(int type, int c) +{ + switch(type) { + case SENSORS_ACTIVE: + if(c) { + if(!status(SENSORS_ACTIVE)) { + /* SREF_1 is Vref+ */ + /* MemReg6 == P6.0/A0 == port "under" logo */ + ADC12MCTL6 = (INCH_0 + SREF_0); + /* MemReg7 == P6.1/A1 == port "over" logo */ + ADC12MCTL7 = (INCH_1 + SREF_0); + /* MemReg8 == P6.2/A2, bottom expansion port */ + ADC12MCTL8 = (INCH_2 + SREF_0); + /* MemReg9 == P6.1/A3, bottom expansion port, End Of (ADC-)Sequence */ + ADC12MCTL9 = (INCH_3 + SREF_0); + + sky_sensors_activate(0x0F); + active = 1; + } + } else { + sky_sensors_deactivate(0x0F); + active = 0; + } + } + return 0; +} +/*---------------------------------------------------------------------------*/ +SENSORS_SENSOR(ext_sensor, "Ext", value, configure, status); diff --git a/platform/jcreate/dev/ext-sensor.h b/platform/jcreate/dev/ext-sensor.h new file mode 100644 index 000000000..7cb843cc0 --- /dev/null +++ b/platform/jcreate/dev/ext-sensor.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + * $Id: ext-sensor.h,v 1.1 2010/05/03 21:57:35 nifi Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Marcus Lundén + * Created : 2005-11-01 + * Updated : $Date: 2010/05/03 21:57:35 $ + * $Revision: 1.1 $ + */ + +#ifndef __EXT_SENSOR_H__ +#define __EXT_SENSOR_H__ + +#include "lib/sensors.h" + +#define ADC0 0 +#define ADC1 1 +#define ADC2 2 +#define ADC3 3 + +extern const struct sensors_sensor ext_sensor; + +#define EXT_SENSOR "Ext" + +#endif /* __EXT_SENSOR_H__ */ diff --git a/platform/jcreate/leds-arch.c b/platform/jcreate/leds-arch.c new file mode 100644 index 000000000..2bfd6fd85 --- /dev/null +++ b/platform/jcreate/leds-arch.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + * $Id: leds-arch.c,v 1.1 2010/05/03 21:57:35 nifi Exp $ + */ + +/** + * \file + * A leds implementation for the jcreate platform + * \author + * Adam Dunkels + * Niclas Finne + * Joakim Eriksson + */ + +#include "contiki-conf.h" +#include "dev/leds.h" + +#include + +/*---------------------------------------------------------------------------*/ +void +leds_arch_init(void) +{ + LEDS_PxDIR = 0xff; + LEDS_PxOUT = 0xff; +} +/*---------------------------------------------------------------------------*/ +unsigned char +leds_arch_get(void) +{ + return ~LEDS_PxOUT; +} +/*---------------------------------------------------------------------------*/ +void +leds_arch_set(unsigned char leds) +{ + LEDS_PxOUT = ~leds; +} +/*---------------------------------------------------------------------------*/