[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