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

Reply via email to