[Tinyos-2-commits] CVS: tinyos-2.x/apps/tosthreads/apps/TestCollection Makefile, NONE, 1.1 MultihopOscilloscope.h, NONE, 1.1 TestCollectionAppC.nc, NONE, 1.1 TestCollectionC.nc, NONE, 1.1

Kevin Klues klueska at users.sourceforge.net
Mon Jun 16 11:38:30 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x/apps/tosthreads/apps/TestCollection
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv14896/apps/tosthreads/apps/TestCollection

Added Files:
	Makefile MultihopOscilloscope.h TestCollectionAppC.nc 
	TestCollectionC.nc 
Log Message:
Added collection stuff for tosthreads

--- NEW FILE: Makefile ---
COMPONENT=TestCollectionAppC

CFLAGS += -I$(TOSDIR)/lib/tosthreads/sensorboards/universal
CFLAGS += -I$(TOSDIR)/lib/tosthreads/lib/net/
CFLAGS += -I$(TOSDIR)/lib/net/ -I$(TOSDIR)/lib/net/ctp  -I$(TOSDIR)/lib/net/4bitle

include $(MAKERULES)

--- NEW FILE: MultihopOscilloscope.h ---
/*
 * Copyright (c) 2006 Intel Corporation
 * All rights reserved.
 *
 * This file is distributed under the terms in the attached INTEL-LICENSE     
 * file. If you do not find these files, copies can be found by writing to
 * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, 
 * 94704.  Attention:  Intel License Inquiry.
 */

/**
 * @author David Gay
 * @author Kyle Jamieson
 */

#ifndef MULTIHOP_OSCILLOSCOPE_H
#define MULTIHOP_OSCILLOSCOPE_H

enum {
  /* Number of readings per message. If you increase this, you may have to
     increase the message_t size. */
  NREADINGS = 5,
  /* Default sampling period. */
  DEFAULT_INTERVAL = 1024,
  AM_OSCILLOSCOPE = 0x93
};

typedef nx_struct oscilloscope {
  nx_uint16_t version; /* Version of the interval. */
  nx_uint16_t interval; /* Samping period. */
  nx_uint16_t id; /* Mote id of sending mote. */
  nx_uint16_t count; /* The readings are samples count * NREADINGS onwards */
  nx_uint16_t readings[NREADINGS];
} oscilloscope_t;

#endif

--- NEW FILE: TestCollectionAppC.nc ---
/*
 * Copyright (c) 2008 Johns Hopkins University.
 * 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 (updated) modification history and the author appear in
 * all copies of this source code.
 *
 * 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 HOLDERS OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
 * OR PROFITS) 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 Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
 */

#include "MultihopOscilloscope.h"

configuration TestCollectionAppC {}

implementation {
  components TestCollectionC,
             new BlockingSineSensorC(),
             LedsC,
             BlockingActiveMessageC,
             BlockingCollectionControlC,
             new BlockingCollectionSenderC(AM_OSCILLOSCOPE),
             new BlockingCollectionReceiverC(AM_OSCILLOSCOPE),
             new ThreadC(800) as MainThread,
             MainC,
             BlockingSerialActiveMessageC,
             new BlockingSerialAMSenderC(AM_OSCILLOSCOPE);
  
  TestCollectionC.MainThread -> MainThread;
  TestCollectionC.Boot -> MainC;
  TestCollectionC.BlockingRead -> BlockingSineSensorC;
  TestCollectionC.Leds -> LedsC;
  TestCollectionC.BlockingRead -> BlockingSineSensorC;
  
  TestCollectionC.RadioStdControl -> BlockingActiveMessageC;
  
  TestCollectionC.RoutingControl -> BlockingCollectionControlC;
  TestCollectionC.RootControl -> BlockingCollectionControlC;
  TestCollectionC.Packet -> BlockingCollectionSenderC;
  TestCollectionC.BlockingSend -> BlockingCollectionSenderC;
  TestCollectionC.BlockingReceive -> BlockingCollectionReceiverC;
  
  TestCollectionC.SerialStdControl -> BlockingSerialActiveMessageC;
  TestCollectionC.SerialBlockingSend -> BlockingSerialAMSenderC;
}

--- NEW FILE: TestCollectionC.nc ---
/*
 * Copyright (c) 2008 Johns Hopkins University.
 * 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 (updated) modification history and the author appear in
 * all copies of this source code.
 *
 * 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 HOLDERS OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
 * OR PROFITS) 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 Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
 */

#include "MultihopOscilloscope.h"

module TestCollectionC {
  uses {
    interface Boot;
    interface Thread as MainThread;
    interface BlockingRead<uint16_t>;
    interface BlockingStdControl as RadioStdControl;
    interface Packet;
    interface BlockingSend;
    interface BlockingReceive;
    interface BlockingStdControl as RoutingControl;
    interface RootControl;
    interface Leds;
    interface BlockingStdControl as SerialStdControl;
    interface BlockingAMSend as SerialBlockingSend;
  }
}

implementation {
  static void fatal_problem();
  
  oscilloscope_t local;
  uint8_t reading = 0;   /* 0 to NREADINGS */
  message_t sendbuf;
  message_t recvbuf;
  
  void fatal_problem();
  void report_problem();
  void report_sent();
  void report_received();
  
  event void Boot.booted() {
    local.interval = DEFAULT_INTERVAL;
    local.id = TOS_NODE_ID;
    local.version = 0;
    
    call MainThread.start(NULL);
  }
  
  event void MainThread.run(void* arg) {
    while (call RadioStdControl.start() != SUCCESS);
    while (call RoutingControl.start() != SUCCESS);
    
    if (local.id % 500 == 0) {
      while (call SerialStdControl.start() != SUCCESS);
      call RootControl.setRoot();
      for (;;) {
        if (call BlockingReceive.receive(&recvbuf, 0) == SUCCESS) {
          call SerialBlockingSend.send(AM_BROADCAST_ADDR, &recvbuf, sizeof(local));
          report_received();
        }
      }
    } else {
      uint16_t var;
      
      for (;;) {
        if (reading == NREADINGS) {
          oscilloscope_t *o = o;
          o = (oscilloscope_t *)call BlockingSend.getPayload(&sendbuf, sizeof(oscilloscope_t));
          if (o == NULL) {
            fatal_problem();
            return;
          }
          memcpy(o, &local, sizeof(local));
          if (call BlockingSend.send(&sendbuf, sizeof(local)) == SUCCESS) {
            report_sent();
          } else {
            report_problem();
          }
        
          reading = 0;
        }
          
        if (call BlockingRead.read(&var) == SUCCESS) {
          local.readings[reading++] = var;
        }
        
        call MainThread.sleep(local.interval);
      }
    }
  }
  
  // Use LEDs to report various status issues.
  void fatal_problem() { 
    call Leds.led0On(); 
    call Leds.led1On();
    call Leds.led2On();
  }

  void report_problem() { call Leds.led0Toggle(); }
  void report_sent() { call Leds.led1Toggle(); }
  void report_received() { call Leds.led2Toggle(); }
}



More information about the Tinyos-2-commits mailing list