]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Update to TestCollection for C based API
authorklueska <klueska>
Tue, 17 Jun 2008 19:07:48 +0000 (19:07 +0000)
committerklueska <klueska>
Tue, 17 Jun 2008 19:07:48 +0000 (19:07 +0000)
apps/tosthreads/apps/TestCollection/Makefile
apps/tosthreads/apps/TestCollection/TestCollectionAppC.nc
apps/tosthreads/capps/SenseAndSend/SenseAndSend.c
apps/tosthreads/capps/SenseCompressForward/Sensor/SenseStoreAndForward.c
apps/tosthreads/capps/SenseStoreAndForward/SenseStoreAndForward.c
apps/tosthreads/capps/TestCollection/Makefile
apps/tosthreads/capps/TestCollection/MultihopOscilloscope.h [new file with mode: 0644]
apps/tosthreads/capps/TestCollection/TestCollection.c

index 90b778a55a301177be104c7e381110dc5e253e25..05eb49ae52bbe562e273493271b41d13881df6bd 100644 (file)
@@ -1,7 +1,11 @@
 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
+CFLAGS += -I$(TOSDIR)/lib/net/
+
+CFLAGS += -I$(TOSDIR)/lib/tosthreads/lib/net/ctp
+CFLAGS += -I$(TOSDIR)/lib/net/ctp  -I$(TOSDIR)/lib/net/4bitle
 
 include $(MAKERULES)
index d6dab92275c063e533a7beb4c6032d1024c34e2a..4db9f298a37df58e0f12fef129879cdc980f1b9f 100644 (file)
@@ -40,6 +40,7 @@ implementation {
              MainC,
              BlockingSerialActiveMessageC,
              new BlockingSerialAMSenderC(AM_OSCILLOSCOPE);
+             
   
   TestCollectionC.MainThread -> MainThread;
   TestCollectionC.Boot -> MainC;
index 9546781da8ed0df958d21630ad3b5752bf18abb7..242d6503f3ce7a0db6c89738ce401928b5ecc605 100644 (file)
@@ -78,8 +78,7 @@ void tosthread_main(void* arg) {
   barrier_reset(&send_barrier, NUM_SENSORS+1);
   barrier_reset(&sense_barrier, NUM_SENSORS+1);
   sensor_data = radioGetPayload(&send_msg, sizeof(sensor_data_t));
-  //sensor_data->seq_no = 0;
-  __nesc_hton_uint32((unsigned char *)&sensor_data->seq_no, (unsigned long )0);
+  sensor_data->seq_no = 0;
 
   amRadioStart();
   tosthread_create(&humidity, humidity_thread, NULL, 200);
@@ -94,8 +93,7 @@ void read_sensor(error_t (*read)(uint16_t*), nx_uint16_t* nx_val) {
   for(;;) {
     (*read)(&val);
     mutex_lock(&data_mutex);
-    //  *nx_val = val;
-    __nesc_hton_uint16((unsigned char *)&*nx_val, val);
+     *nx_val = val;
     mutex_unlock(&data_mutex);
     barrier_block(&send_barrier);
     barrier_block(&sense_barrier);
@@ -115,17 +113,12 @@ void photo_active_thread(void* arg) {
   read_sensor(hamamatsuS1087_par_read, &(sensor_data->par));
 }
 void send_thread(void* arg) {
-  //Only needed for nesC magic.... I hate this hack.....
-  unsigned long __nesc_temp43;
-  unsigned char *__nesc_temp42;
-
   for(;;) {
     barrier_block(&send_barrier);
     barrier_reset(&send_barrier, NUM_SENSORS + 1);
     
     if(amRadioSend(AM_BROADCAST_ADDR, &send_msg, sizeof(sensor_data_t), AM_SENSOR_DATA_MSG) == SUCCESS) {
-      //sensor_data->seq_no++;
-      (__nesc_temp42 = (unsigned char *)&sensor_data->seq_no, __nesc_hton_uint32(__nesc_temp42, (__nesc_temp43 = __nesc_ntoh_uint32(__nesc_temp42)) + 1), __nesc_temp43);
+      sensor_data->seq_no++;
       led0Toggle();
     }
     //tosthread_sleep(SAMPLING_PERIOD);
index 7640490dc48bc13f74ddb21008adfbf0a0efcc55..71d78c06b020846971994f18addb920b8663c230 100644 (file)
@@ -62,7 +62,7 @@ void tosthread_main(void* arg) {
   barrier_reset(&send_barrier, NUM_SENSORS+1);
   barrier_reset(&sense_barrier, NUM_SENSORS+1);
   
-  __nesc_hton_uint32((unsigned char *)&storing_sensor_data.seq_no, (unsigned long )0);
+  storing_sensor_data.seq_no = 0;
 
   amRadioStart();
   led0Toggle();
@@ -82,8 +82,7 @@ void read_sensor(error_t (*read)(uint16_t*), nx_uint16_t* nx_val) {
   for(;;) {
     (*read)(&val);
     mutex_lock(&data_mutex);
-    //  *nx_val = val;
-    __nesc_hton_uint16((unsigned char *)&*nx_val, val);
+    *nx_val = val;
     mutex_unlock(&data_mutex);
     barrier_block(&send_barrier);
     barrier_block(&sense_barrier);
@@ -106,10 +105,6 @@ void store_thread(void* arg) {
   storage_len_t sensor_data_len;
   bool sensor_records_lost;
   
-  //Only needed for nesC magic.... I hate this hack.....
-  unsigned long __nesc_temp43;
-  unsigned char *__nesc_temp42;
-  
   for(;;) {
     barrier_block(&send_barrier);
     barrier_reset(&send_barrier, NUM_SENSORS + 1);
@@ -119,8 +114,7 @@ void store_thread(void* arg) {
       while( volumeLogAppend(VOLUME_SENSORLOG, &storing_sensor_data, &sensor_data_len, &sensor_records_lost) != SUCCESS );
     mutex_unlock(&log_mutex);
     
-    //storing_sensor_data.seq_no++
-    (__nesc_temp42 = (unsigned char *)&storing_sensor_data.seq_no, __nesc_hton_uint32(__nesc_temp42, (__nesc_temp43 = __nesc_ntoh_uint32(__nesc_temp42)) + 1), __nesc_temp43);
+    storing_sensor_data.seq_no++;
     led0Toggle();
 
     //tosthread_sleep(SAMPLING_PERIOD);
index 2aa52d174335810260e3a1319ee4faa09bb670c8..5b9e5bb2c3bbb1371aac57989f46283b8650d690 100644 (file)
@@ -84,8 +84,7 @@ void tosthread_main(void* arg) {
   barrier_reset(&send_barrier, NUM_SENSORS+1);
   barrier_reset(&sense_barrier, NUM_SENSORS+1);
   sending_sensor_data = radioGetPayload(&send_msg, sizeof(sensor_data_t));
-  //storing_sensor_data->seq_no = 0;
-  __nesc_hton_uint32((unsigned char *)&storing_sensor_data.seq_no, (unsigned long )0);
+  storing_sensor_data.seq_no = 0;
 
   amRadioStart();
   led0Toggle();
@@ -104,8 +103,7 @@ void read_sensor(error_t (*read)(uint16_t*), nx_uint16_t* nx_val) {
   for(;;) {
     (*read)(&val);
     mutex_lock(&data_mutex);
-    //  *nx_val = val;
-    __nesc_hton_uint16((unsigned char *)&*nx_val, val);
+    *nx_val = val;
     mutex_unlock(&data_mutex);
     barrier_block(&send_barrier);
     barrier_block(&sense_barrier);
@@ -128,10 +126,6 @@ void store_thread(void* arg) {
   storage_len_t sensor_data_len;
   bool sensor_records_lost;
   
-  //Only needed for nesC magic.... I hate this hack.....
-  unsigned long __nesc_temp43;
-  unsigned char *__nesc_temp42;
-  
   for(;;) {
     barrier_block(&send_barrier);
     barrier_reset(&send_barrier, NUM_SENSORS + 1);
@@ -141,8 +135,7 @@ void store_thread(void* arg) {
       while( volumeLogAppend(VOLUME_SENSORLOG, &storing_sensor_data, &sensor_data_len, &sensor_records_lost) != SUCCESS );
     mutex_unlock(&log_mutex);
     
-    //storing_sensor_data.seq_no++
-    (__nesc_temp42 = (unsigned char *)&storing_sensor_data.seq_no, __nesc_hton_uint32(__nesc_temp42, (__nesc_temp43 = __nesc_ntoh_uint32(__nesc_temp42)) + 1), __nesc_temp43);
+    storing_sensor_data.seq_no++;
     led0Toggle();
 
     //tosthread_sleep(SAMPLING_PERIOD);
index 533681da2822e55cbc1ab6482842422267be7bc6..66efa2d3d0dc8bf2d258ea9494d96a44ce9e24a3 100644 (file)
@@ -1,3 +1,11 @@
 TOSTHREAD_MAIN=TestCollection.c
 
+CFLAGS += -I$(TOSDIR)/lib/tosthreads/sensorboards/universal
+
+CFLAGS += -I$(TOSDIR)/lib/tosthreads/lib/net/
+CFLAGS += -I$(TOSDIR)/lib/net/
+
+CFLAGS += -I$(TOSDIR)/lib/tosthreads/lib/net/ctp
+CFLAGS += -I$(TOSDIR)/lib/net/ctp  -I$(TOSDIR)/lib/net/4bitle
+
 include $(MAKERULES)
diff --git a/apps/tosthreads/capps/TestCollection/MultihopOscilloscope.h b/apps/tosthreads/capps/TestCollection/MultihopOscilloscope.h
new file mode 100644 (file)
index 0000000..5f04053
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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
index 889ffabe149ed56aed77afb9a45ac70eb6ff0fc4..f0b417fbf97b92fc6ee344a3aeab823bb8396fc4 100644 (file)
 /*
- * Copyright (c) 2008 Johns Hopkins University.
+ * Copyright (c) 2008 Stanford 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.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - Neither the name of the Stanford University 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 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.
-*/
+ * 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 STANFORD
+ * UNIVERSITY OR ITS 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.
+ */
 
 /**
- * @author Chieh-Jan Mike Liang <cliang4@cs.jhu.edu>
+ * @author Kevin Klues <klueska@cs.stanford.edu>
  */
 
 #include "tosthread.h"
+#include "tosthread_amradio.h"
+#include "tosthread_amserial.h"
+#include "tosthread_leds.h"
+#include "tosthread_collection.h"
+#include "tosthread_sinesensor.h"
+#include "MultihopOscilloscope.h"
+
+void fatal_problem();
+void report_problem();
+void report_sent();
+void report_received();
+
+oscilloscope_t local;
+uint8_t reading = 0;   /* 0 to NREADINGS */
+message_t sendbuf;
+message_t recvbuf;
+
+void tosthread_main(void* arg) {
+  local.interval = DEFAULT_INTERVAL;
+  local.id = TOS_NODE_ID;
+  local.version = 0;
+  
+  while ( amRadioStart() != SUCCESS );
+  while ( collectionRoutingStart() != SUCCESS );
+  if (local.id % 500 == 0) {
+    while ( amSerialStart() != SUCCESS);
+    collectionSetRoot();
+    for (;;) {
+      if ( collectionReceive(&recvbuf, 0, AM_OSCILLOSCOPE) == SUCCESS) {
+        amSerialSend(AM_BROADCAST_ADDR, &recvbuf, sizeof(local), AM_OSCILLOSCOPE);
+        report_received();
+      }
+    }
+  } else {
+    uint16_t var;
+      
+    for (;;) {
+      if (reading == NREADINGS) {
+        oscilloscope_t *o = o;
+        o = (oscilloscope_t *) collectionGetPayload(&sendbuf, sizeof(oscilloscope_t));
+        if (o == NULL) {
+          fatal_problem();
+          return;
+        }
+        memcpy(o, &local, sizeof(local));
+        if (collectionSend(&sendbuf, sizeof(local), AM_OSCILLOSCOPE) == SUCCESS) {
+          report_sent();
+        } else {
+          report_problem();
+        }
+        
+        reading = 0;
+      }
+          
+      if (sinesensor_read(&var) == SUCCESS) {
+        local.readings[reading++] = var;
+      }
+        
+      tosthread_sleep(local.interval);
+    }
+  }
+}
+  
+// Use LEDs to report various status issues.
+void fatal_problem() { 
+  led0On(); 
+  led1On();
+  led2On();
+}
 
-void tosthread_main(void* arg) {}
+void report_problem() { led0Toggle(); }
+void report_sent() { led1Toggle(); }
+void report_received() { led2Toggle(); }