Hello, I am using Tmote Invents to record sound and then send the values to the Trawler via multihop. I have basically combined a modifed version of the Oscilloscope program (one that only monitors sound) with the Delta Program. Unfortunately, when I try to compile my files, I get an error:
msp430-gcc: //added: No such file or directory. I'm not sure how to resolve this problem or what it means exactly. I have includedmsp430-gcc in my folder, and I used it with the previous version of this program where I forwarded data packets back to the oscillosope application via a generic Com application with no multihop. This program only monitors sound, and problems didn't arrise until I tried to incorporate the multihop features used by Delta. My code is below. I would appreciate any guidance or observations that may help me to resolve this problem and any other issues that may be lerking in my code. The files are PulseTmoteInvent, PulseTmoteInventM, Pulse.h, Make File, and msp430-gcc. Thank you. ******************************** PulseTmoteInvent Configuration File ************************* /* * This configuration describes the Pulse application, * a simple TinyOS app that periodically takes sensor readings * and sends a group of readings over the radio. * <p> * See README.TmoteInvent for more information * * @author Joe Polastre, Moteiv Corporation <[email protected]> * this is a modified program of Oscilloscope and Delta programs */ #include "Pulse.h" configuration PulseTmoteInvent { } implementation { components Main , PulseTmoteInventM as PulseM // DetaM as Impl , TimerC , LedsC , new MainControlC() as MainMicC , MicDriverC , OscopeC , MultiHop ; components DelugeC; Main.StdControl -> MultiHop; Main.StdControl -> TimerC; Main.StdControl -> OscopeC; // think DemoSensorC Main.StdControl -> PulseM; // think of delta's Impl MainMicC.SplitControl -> MicDriverC; PulseM.Timer -> TimerC.Timer[unique("Timer")]; PulseM.Leds -> LedsC; PulseM.Mic -> MicDriverC; //PulseM is Main.StdControl & Mic is ADC PulseM.OMicrophone -> OscopeC.Oscope[0]; // Oscope is OMicrophone // send data messages PulseM.SendPulseMsg -> MultiHop.Send[AM_PULSEMSG]; // need to change Delta to Pulse // monitor traffic being forwarded PulseM.SnoopPulseMsg -> MultiHop.Intercept[AM_PULSEMSG]; // get statistics about current operation PulseM.RouteControl -> MultiHop; PulseM.RouteStatistics -> MultiHop; } **************************PulseTmoteInvent Module************************** // TmotePulse Pulse Detection System #include "Pulse.h" //DELTA_TIME, #include "circularQueue.h" module PulseTmoteInventM //module provides implementation code { provides interface StdControl; //TmotePulseM provides function StdControl uses { interface Timer; // wired to Timer interface Leds; // wired to Leds interface ADC as Mic; interface Oscope as OMicrophone; // wired to Sensor values through Oscope interface Send as SendPulseMsg; interface Intercept as SnoopPulseMsg; interface RouteControl; interface RouteStatistics; } } implementation { /************************ VARIABLES ***************************/ // uint16_t m_adc; // this is my mic value uint32_t m_seqno; TOS_Msg msg[PULSE_QUEUE_SIZE]; CircularQueue_t queue; /* * enum { * OSCOPE_DELAY = 4, //set Oscope setup time(Oscope_Delay) to 4 * }; */ enum { // assigns values 0 to 4 to the listed constants MIC, }; norace uint16_t mic; // tells the compiler that there is // norace int state; // no race conditon with these variables // (async) /************************* HELPER FUNCTIONS ************************/ task void sendData() { uint16_t _length; int i; uint16_t neighbors[MHOP_PARENT_SIZE]; uint16_t quality[MHOP_PARENT_SIZE]; if (cqueue_pushBack( &queue ) == SUCCESS) { PulseMsg* dmsg = (PulseMsg*)call SendPulseMsg.getBuffer(&msg[queue.back], &_length); atomic dmsg->reading = mic; // replaced m_adc dmsg->parent = call RouteControl.getParent(); call RouteStatistics.getNeighbors(neighbors, MHOP_PARENT_SIZE); call RouteStatistics.getNeighborQuality(quality, MHOP_PARENT_SIZE); for (i = 0; i < MHOP_PARENT_SIZE; i++) { dmsg->neighbors[i] = neighbors[i]; dmsg->quality[i] = quality[i]; } dmsg->neighborsize = MHOP_PARENT_SIZE; dmsg->retransmissions = call RouteStatistics.getRetransmissions(); dmsg->seqno = m_seqno; if (call SendPulseMsg.send( &msg[queue.back], sizeof(PulseMsg) ) == SUCCESS) { call Leds.redOn(); } else { // remove from queue cqueue_popBack( &queue ); } } // always increase seqno. gives a better idea of how many packets // really have been dropped m_seqno++; } /************************ STD CONTROL ******************************/ /** * Used to initialize this component. */ command result_t StdControl.init() { // user call to StdControl to initiate following seq. call Leds.init(); // initialize Leds call Leds.set(3); // set Led value to 3 (all lights on) // state = MIC; // enumerated state defined as MIC cqueue_init( &queue, PULSE_QUEUE_SIZE ); // from Delta return SUCCESS; // command completed } /* * Starts the SensorControl component. * @return Always returns SUCCESS. */ command result_t StdControl.start() { // user call to start timer // call Timer.start( TIMER_ONE_SHOT, 250 );// starts generic timer that will fire once call Timer.start( TIMER_REPEAT, PULSE_TIME ); return SUCCESS; // with timer interval of listed no. times binary } // miliseconds (1/1024) The one-shot timer ends // after the specified interval /* * Stops the SensorControl component. * @return Always returns SUCCESS. */ command result_t StdControl.stop() { // Stops the timer and prevents it from firing. // call Timer.stop(); // This will prevent one-shot from firing if it return SUCCESS; // hasn't done so already. } /*************************** TIMER ****************************/ event result_t Timer.fired() { // signal generated by timer when it fires call Mic.getData(); return SUCCESS; } task void putMic() { // call Oscope to aggregate data into packet for oscilloscope call OMicrophone.put(mic); } /************************* ADC ******************************/ async event result_t Mic.dataReady(uint16_t data) { //Indicates a sample has been mic = data; // recorded by the ADC as the result post putMic(); // of a getData() command return SUCCESS; } /*********************** SEND *********************/ event result_t SendPulseMsg.sendDone(TOS_MsgPtr _msg, result_t _success) { cqueue_popFront( &queue ); return SUCCESS; } /********************** SEND **********************/ event result_t SnoopPulseMsg.intercept(TOS_MsgPtr _msg, void* payload, uint16_t payloadLen) { return SUCCESS; } } ******************************* Pulse.h *********************************** // $Id: Delta.h 896 2006-08-02 02:17:38Z polastre $ /* * Copyright (c) 2006 Moteiv Corporation * All rights reserved. * * This file is distributed under the terms in the attached MOTEIV-LICENSE * file. If you do not find these files, copies can be found at * http://www.moteiv.com/MOTEIV-LICENSE.txt and by emailing [email protected]. */ #ifndef H_Delta_h #define H_Delta_h #include "MultiHop.h" #define PULSE_QUEUE_SIZE MHOP_DEFAULT_QUEUE_SIZE - (MHOP_DEFAULT_QUEUE_SIZE >> 2) enum { PULSE_TIME = 1024 * 5, }; enum { AM_PULSEMSG = 33 }; typedef struct PulseMsg { uint32_t seqno; uint16_t reading; uint16_t parent; uint8_t neighborsize; uint8_t retransmissions; uint16_t neighbors[MHOP_PARENT_SIZE]; uint16_t quality[MHOP_PARENT_SIZE]; } PulseMsg; #endif//H_Delta_h *************************************** msp430-gcc.exe ****************************** Exception: STATUS_ACCESS_VIOLATION at eip=0057BAB3 eax=61118014 ebx=10010008 ecx=FFFFFFFF edx=00000000 esi=610F4D9C edi=00000000 ebp=0022EC88 esp=0022EC7C program=C:\tinyos\cygwin\opt\msp430\bin\msp430-gcc.exe, pid 5400, thread main cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023 Stack trace: Frame Function Args 0022EC88 0057BAB3 (000006C0, 00000000, 7C910331, 74520000) 0022ECB8 61053B27 (0022EE20, 0022EE24, 0022EE28, 0022ECC0) 0022EE48 61054C0F (10020240, 00000001, 00000009, 1001E314) 0022EE88 6108E1EF (10020240, 1001FED8, 61798D54, 00000000) 0022EF28 004037D9 (00413260, 00000000, 00000000, 0040CE80) 0022EF58 00406D54 (00413260, 00000027, 6179DC24, 004144E9) 0022EFC8 0040A6CF (00000077, 6179E764, 100100A8, 0022F020) 0022F008 61006145 (0022F020, 0022F04C, 7C80E931, 00000000) 0022FF88 61006350 (00000000, 00000000, 00000000, 00000000) End of stack trace ****************************************** MAKE File******************************** VALID_PLATFORMS = t telos telosa telosb tmote tmoteinvent VALID_TARGETS = $(VALID_PLATFORMS) clean help ifeq ($(filter $(VALID_TARGETS),$(MAKECMDGOALS)),) $(error ERROR: Invalid platform! Valid platforms: $(VALID_PLATFORMS)) endif MOTEIV_DIR ?= ../../ COMP = $(if $(filter-out tmoteinvent,$(PLATFORM)),TmoteSky,TmoteInvent) COMPONENT = Pulse$(COMP) CFLAGS += -DOSCOPE_MAX_CHANNELS=6 PFLAGS += -I$(TOSDIR)/lib/Oscope PFLAGS += -DDELUGE_PAGETRANSFER_LEDS CFLAGS += -DTOSH_DATA_LENGTH=28+3*2+2 -DMHOP_DEFAULT_QUEUE_SIZE=50 //added # Override the ident program name since Deluge already reports the platform # and otherwise the name is so long it is reported as just "OscilloscopeTmo". IDENT_PROGRAM_NAME = Pulse include $(MAKERULES) ******************************************************************************** /* tab:4 * "Copyright (c) 2000-2003 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." * * Copyright (c) 2005 Moteiv Corporation * All rights reserved. * * This file is distributed under the terms in the attached MOTEIV-LICENSE * file. If you do not find these files, copies can be found at * http://www.moteiv.com/MOTEIV-LICENSE.txt and by emailing [email protected]. * */ Respectfully, Jacob H. Cox Jr (706) 413-3841 "What ever you do, work at it with all your heart, as working for the Lord..." Colossians 3:23
_______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
