]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Change to follow TEP 109 .
authorpipeng <pipeng>
Wed, 14 Mar 2007 07:02:47 +0000 (07:02 +0000)
committerpipeng <pipeng>
Wed, 14 Mar 2007 07:02:47 +0000 (07:02 +0000)
tos/sensorboards/mts300/PhotoTempControlP.nc [new file with mode: 0644]
tos/sensorboards/mts300/PhotoTempDeviceC.nc [new file with mode: 0644]

diff --git a/tos/sensorboards/mts300/PhotoTempControlP.nc b/tos/sensorboards/mts300/PhotoTempControlP.nc
new file mode 100644 (file)
index 0000000..b21fbbd
--- /dev/null
@@ -0,0 +1,61 @@
+generic module PhotoTempControlP()
+{
+  provides {
+    interface SplitControl;
+    interface Read<uint16_t>[uint8_t client];
+  }
+  uses {
+    interface Resource as PhotoTempResource;
+    interface Timer<TMilli>;
+    interface GeneralIO as Power;
+    interface Read<uint16_t> as ActualRead;
+  }
+}
+implementation
+{
+       uint8_t rflag=0;
+
+       command error_t SplitControl.start() {
+    call PhotoTempResource.request();
+    return SUCCESS;
+  }
+
+  event void PhotoTempResource.granted() {
+    call Power.makeOutput();
+    call Power.set();
+    call Timer.startOneShot(10);
+  }
+
+  event void Timer.fired() {
+    signal SplitControl.startDone(SUCCESS);
+  }
+
+  task void stopDone() {
+    call PhotoTempResource.release();
+    signal SplitControl.stopDone(SUCCESS);
+  }
+
+  command error_t SplitControl.stop() {
+    call Power.clr();
+    call Power.makeInput();
+    post stopDone();
+    return SUCCESS;
+  }
+
+  uint8_t id;
+
+  command error_t Read.read[uint8_t client]() {
+    id = client;
+    atomic rflag=1;
+    return call ActualRead.read();
+  }
+
+  event void ActualRead.readDone(error_t result, uint16_t val) {
+    if(rflag != 1) return;
+       atomic rflag=0;
+    call SplitControl.stop();
+    signal Read.readDone[id](result, val);
+  }
+
+  default event void Read.readDone[uint8_t x](error_t result, uint16_t val) { }
+}
diff --git a/tos/sensorboards/mts300/PhotoTempDeviceC.nc b/tos/sensorboards/mts300/PhotoTempDeviceC.nc
new file mode 100644 (file)
index 0000000..28c1520
--- /dev/null
@@ -0,0 +1,45 @@
+#include "mts300.h"
+
+configuration PhotoTempDeviceC
+{
+  provides interface Resource as PhotoResource[uint8_t client];
+  provides interface Resource as TempResource[uint8_t client];
+  provides interface Read<uint16_t> as ReadPhoto[uint8_t client];
+  provides interface Read<uint16_t> as ReadTemp[uint8_t client];
+}
+implementation
+{
+  components MicaBusC, PhotoTempP,
+    new RoundRobinArbiterC(UQ_PHOTOTEMP_RESOURCE) as SharingArbiter,
+    new RoundRobinArbiterC(UQ_PHOTO_RESOURCE) as PhotoArbiter,
+    new RoundRobinArbiterC(UQ_TEMP_RESOURCE) as TempArbiter,
+    new SplitControlPowerManagerC() as PhotoPower,
+    new SplitControlPowerManagerC() as TempPower,
+    new PhotoTempControlP() as PhotoControl,
+    new PhotoTempControlP() as TempControl,
+    new TimerMilliC() as WarmupTimer,
+    new AdcReadClientC() as Adc;
+
+  PhotoResource = PhotoArbiter;
+  PhotoPower.ResourceDefaultOwner -> PhotoArbiter;
+  PhotoPower.ArbiterInfo -> PhotoArbiter;
+  PhotoPower.SplitControl -> PhotoControl;
+  PhotoControl.PhotoTempResource -> SharingArbiter.Resource[unique(UQ_PHOTOTEMP_RESOURCE)];
+  PhotoControl.Timer -> WarmupTimer;
+  PhotoControl.Power -> MicaBusC.Int1;
+  ReadPhoto = PhotoControl;
+  PhotoControl.ActualRead -> Adc;
+
+  TempResource = TempArbiter;
+  TempPower.ResourceDefaultOwner -> TempArbiter;
+  TempPower.ArbiterInfo -> TempArbiter;
+  TempPower.SplitControl -> TempControl;
+  TempControl.PhotoTempResource -> SharingArbiter.Resource[unique(UQ_PHOTOTEMP_RESOURCE)];
+  TempControl.Timer -> WarmupTimer;
+  TempControl.Power -> MicaBusC.Int2;
+  ReadTemp = TempControl;
+  TempControl.ActualRead -> Adc;
+
+  Adc.Atm128AdcConfig -> PhotoTempP;
+  PhotoTempP.PhotoTempAdc -> MicaBusC.Adc1;
+}