[Tinyos-2-commits] CVS: tinyos-2.x/tos/sensorboards/mts300
AccelConfigP.nc, NONE, 1.1 AccelP.nc, NONE, 1.1 AccelReadP.nc,
NONE, 1.1 AccelReadStreamP.nc, NONE, 1.1 AccelXC.nc, NONE,
1.1 AccelXStreamC.nc, NONE, 1.1 AccelYC.nc, NONE,
1.1 AccelYStreamC.nc, NONE, 1.1 ArbitratedPhotoDeviceP.nc,
NONE, 1.1 DemoSensorC.nc, NONE, 1.1 DemoSensorStreamC.nc, NONE,
1.1 Mts300Sounder.nc, NONE, 1.1 PhotoC.nc, NONE,
1.1 PhotoConfigP.nc, NONE, 1.1 PhotoTempControlP.nc, NONE,
1.1 PhotoTempDeviceC.nc, NONE, 1.1 PhotoTempP.nc, NONE,
1.1 PhotoTempSetupP.nc, NONE, 1.1 SounderC.nc, NONE,
1.1 SounderP.nc, NONE, 1.1 WireAccelP.nc, NONE, 1.1 .sensor,
1.4, 1.5
David Gay
idgay at users.sourceforge.net
Thu Feb 8 09:55:40 PST 2007
Update of /cvsroot/tinyos/tinyos-2.x/tos/sensorboards/mts300
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5670
Modified Files:
.sensor
Added Files:
AccelConfigP.nc AccelP.nc AccelReadP.nc AccelReadStreamP.nc
AccelXC.nc AccelXStreamC.nc AccelYC.nc AccelYStreamC.nc
ArbitratedPhotoDeviceP.nc DemoSensorC.nc DemoSensorStreamC.nc
Mts300Sounder.nc PhotoC.nc PhotoConfigP.nc
PhotoTempControlP.nc PhotoTempDeviceC.nc PhotoTempP.nc
PhotoTempSetupP.nc SounderC.nc SounderP.nc WireAccelP.nc
Log Message:
mts300 support, a work in progress
- accelerometer (with warmup, unlike 1.x...), photo, temperature, sounder
support
--- NEW FILE: AccelConfigP.nc ---
/* $Id: AccelConfigP.nc,v 1.1 2007/02/08 17:55:35 idgay Exp $
* 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.
*/
/**
* Internal component for basicsb photodiode. Arbitrates access to the photo
* diode and automatically turns it on or off based on user requests.
*
* @author David Gay
*/
configuration AccelConfigP {
provides {
interface Resource[uint8_t client];
interface Atm128AdcConfig as ConfigX;
interface Atm128AdcConfig as ConfigY;
}
}
implementation {
components AccelP, MicaBusC, new TimerMilliC() as WarmupTimer,
new RoundRobinArbiterC(UQ_ACCEL_RESOURCE) as Arbiter,
new SplitControlPowerManagerC() as PowerManager;
Resource = Arbiter;
ConfigX = AccelP.ConfigX;
ConfigY = AccelP.ConfigY;
PowerManager.ResourceDefaultOwner -> Arbiter;
PowerManager.ArbiterInfo -> Arbiter;
PowerManager.SplitControl -> AccelP;
AccelP.Timer -> WarmupTimer;
AccelP.AccelPin -> MicaBusC.PW4;
AccelP.AccelAdcX -> MicaBusC.Adc3;
AccelP.AccelAdcY -> MicaBusC.Adc4;
}
--- NEW FILE: AccelP.nc ---
/* $Id: AccelP.nc,v 1.1 2007/02/08 17:55:35 idgay Exp $
* 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.
*/
/**
* ADXL202JE accelerometer ADC configuration and power management.
* @author David Gay <david.e.gay at intel.com>
*/
module AccelP
{
provides {
interface SplitControl;
interface Atm128AdcConfig as ConfigX;
interface Atm128AdcConfig as ConfigY;
}
uses {
interface Timer<TMilli>;
interface GeneralIO as AccelPin;
interface MicaBusAdc as AccelAdcX;
interface MicaBusAdc as AccelAdcY;
}
}
implementation
{
async command uint8_t ConfigX.getChannel() {
return call AccelAdcX.getChannel();
}
async command uint8_t ConfigX.getRefVoltage() {
return ATM128_ADC_VREF_OFF;
}
async command uint8_t ConfigX.getPrescaler() {
return ATM128_ADC_PRESCALE;
}
async command uint8_t ConfigY.getChannel() {
return call AccelAdcY.getChannel();
}
async command uint8_t ConfigY.getRefVoltage() {
return ATM128_ADC_VREF_OFF;
}
async command uint8_t ConfigY.getPrescaler() {
return ATM128_ADC_PRESCALE;
}
command error_t SplitControl.start() {
call AccelPin.makeOutput();
call AccelPin.set();
/* Startup time is 16.3ms for 0.1uF capacitors,
according to the ADXL202E data sheet */
call Timer.startOneShot(17);
return SUCCESS;
}
event void Timer.fired() {
signal SplitControl.startDone(SUCCESS);
}
task void stopDone() {
call AccelPin.clr();
signal SplitControl.stopDone(SUCCESS);
}
command error_t SplitControl.stop() {
post stopDone();
return SUCCESS;
}
}
--- NEW FILE: AccelReadP.nc ---
configuration AccelReadP
{
provides {
interface Read<uint16_t> as ReadX[uint8_t client];
interface Read<uint16_t> as ReadY[uint8_t client];
}
}
implementation
{
components AccelConfigP,
new MultiplexedReadC(uint16_t) as MultiplexX,
new MultiplexedReadC(uint16_t) as MultiplexY,
new AdcReadClientC() as AdcX,
new AdcReadClientC() as AdcY;
ReadX = MultiplexX;
MultiplexX.Resource -> AccelConfigP;
MultiplexX.Service -> AdcX;
AdcX.Atm128AdcConfig -> AccelConfigP.ConfigX;
ReadY = MultiplexY;
MultiplexY.Resource -> AccelConfigP;
MultiplexY.Service -> AdcY;
AdcY.Atm128AdcConfig -> AccelConfigP.ConfigY;
}
--- NEW FILE: AccelReadStreamP.nc ---
configuration AccelReadStreamP
{
provides {
interface ReadStream<uint16_t> as ReadStreamX[uint8_t client];
interface ReadStream<uint16_t> as ReadStreamY[uint8_t client];
}
uses {
interface ReadStream<uint16_t> as ActualX[uint8_t client];
interface ReadStream<uint16_t> as ActualY[uint8_t client];
}
}
implementation
{
enum {
NACCEL_CLIENTS = uniqueCount(UQ_ACCEL_RESOURCE)
};
components AccelConfigP,
new ArbitratedReadStreamC(NACCEL_CLIENTS, uint16_t) as MultiplexX,
new ArbitratedReadStreamC(NACCEL_CLIENTS, uint16_t) as MultiplexY;
ReadStreamX = MultiplexX;
MultiplexX.Resource -> AccelConfigP;
MultiplexX.Service = ActualX;
ReadStreamY = MultiplexY;
MultiplexY.Resource -> AccelConfigP;
MultiplexY.Service = ActualY;
}
--- NEW FILE: AccelXC.nc ---
/* $Id: AccelXC.nc,v 1.1 2007/02/08 17:55:35 idgay Exp $
* 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.
*/
/**
* Acceldiode of the basicsb sensor board.
*
* @author David Gay
*/
#include "mts300.h"
generic configuration AccelXC() {
provides interface Read<uint16_t>;
}
implementation {
components AccelReadP;
Read = AccelReadP.ReadX[unique(UQ_ACCEL_RESOURCE)];
}
--- NEW FILE: AccelXStreamC.nc ---
/* $Id: AccelXStreamC.nc,v 1.1 2007/02/08 17:55:35 idgay Exp $
* 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.
*/
/**
* AccelXdiode of the basicsb sensor board.
*
* @author David Gay
*/
#include "mts300.h"
generic configuration AccelXStreamC() {
provides interface ReadStream<uint16_t>;
}
implementation {
enum {
ID = unique(UQ_ACCEL_RESOURCE)
};
components AccelReadStreamP, AccelConfigP, new AdcReadStreamClientC();
ReadStream = AccelReadStreamP.ReadStreamX[ID];
AccelReadStreamP.ActualX[ID] -> AdcReadStreamClientC;
AdcReadStreamClientC.Atm128AdcConfig -> AccelConfigP.ConfigX;
}
--- NEW FILE: AccelYC.nc ---
/* $Id: AccelYC.nc,v 1.1 2007/02/08 17:55:35 idgay Exp $
* 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.
*/
/**
* Acceldiode of the basicsb sensor board.
*
* @author David Gay
*/
#include "mts300.h"
generic configuration AccelXC() {
provides interface Read<uint16_t>;
}
implementation {
components AccelReadP;
Read = AccelReadP.ReadY[unique(UQ_ACCEL_RESOURCE)];
}
--- NEW FILE: AccelYStreamC.nc ---
/* $Id: AccelYStreamC.nc,v 1.1 2007/02/08 17:55:35 idgay Exp $
* 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.
*/
/**
* AccelXdiode of the basicsb sensor board.
*
* @author David Gay
*/
#include "mts300.h"
generic configuration AccelYStreamC() {
provides interface ReadStream<uint16_t>;
}
implementation {
enum {
ID = unique(UQ_ACCEL_RESOURCE)
};
components AccelReadStreamP, AccelConfigP, new AdcReadStreamClientC();
ReadStream = AccelReadStreamP.ReadStreamY[ID];
AccelReadStreamP.ActualY[ID] -> AdcReadStreamClientC;
AdcReadStreamClientC.Atm128AdcConfig -> AccelConfigP.ConfigY;
}
--- NEW FILE: ArbitratedPhotoDeviceP.nc ---
configuration ArbitratedPhotoDeviceP
{
provides interface Read<uint16_t>[uint8_t client];
}
implementation
{
components PhotoTempDeviceC,
new ArbitratedReadC(uint16_t) as ArbitrateRead;
Read = ArbitrateRead;
ArbitrateRead.Service -> PhotoTempDeviceC.ReadPhoto;
ArbitrateRead.Resource -> PhotoTempDeviceC.PhotoResource;
}
--- NEW FILE: DemoSensorC.nc ---
/* $Id: DemoSensorC.nc,v 1.1 2007/02/08 17:55:36 idgay Exp $
* Copyright (c) 2005 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.
*/
/**
* Demo sensor for basicsb sensorboard.
*
* @author David Gay
*/
generic configuration DemoSensorC() {
provides interface Read<uint16_t>;
}
implementation {
components new PhotoC() as Sensor;
Read = Sensor;
}
--- NEW FILE: DemoSensorStreamC.nc ---
/* $Id: DemoSensorStreamC.nc,v 1.1 2007/02/08 17:55:36 idgay Exp $
* Copyright (c) 2005 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.
*/
/**
* Demo sensor for basicsb sensorboard.
*
* @author David Gay
*/
generic configuration DemoSensorStreamC() {
provides interface ReadStream<uint16_t>;
}
implementation {
components new PhotoStreamC() as SensorStream;
ReadStream = SensorStream;
}
--- NEW FILE: Mts300Sounder.nc ---
interface Mts300Sounder
{
command void beep(uint16_t length);
}
--- NEW FILE: PhotoC.nc ---
/* $Id: PhotoC.nc,v 1.1 2007/02/08 17:55:36 idgay Exp $
* 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.
*/
/**
* Photodiode of the mts300 sensor board.
*
* @author David Gay
*/
#include "mts300.h"
generic configuration PhotoC() {
provides interface Read<uint16_t>;
}
implementation {
components ArbitratedPhotoDeviceP;
Read = ArbitratedPhotoDeviceP.Read[unique(UQ_PHOTO_RESOURCE)];
}
--- NEW FILE: PhotoConfigP.nc ---
configuration PhotoConfigP
{
}
implementation
{
}
--- NEW FILE: PhotoTempControlP.nc ---
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
{
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;
return call ActualRead.read();
}
event void ActualRead.readDone(error_t result, uint16_t val) {
signal Read.readDone[id](result, val);
}
default event void Read.readDone[uint8_t x](error_t result, uint16_t val) { }
}
--- NEW FILE: PhotoTempDeviceC.nc ---
#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;
}
--- NEW FILE: PhotoTempP.nc ---
/* $Id: PhotoTempP.nc,v 1.1 2007/02/08 17:55:36 idgay Exp $
* Copyright (c) 2007 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.
*/
/**
* MTS300 photo and temp sensor ADC configuration.
* @author David Gay <david.e.gay at intel.com>
*/
module PhotoTempP
{
provides interface Atm128AdcConfig;
uses interface MicaBusAdc as PhotoTempAdc;
}
implementation
{
async command uint8_t Atm128AdcConfig.getChannel() {
return call PhotoTempAdc.getChannel();
}
async command uint8_t Atm128AdcConfig.getRefVoltage() {
return ATM128_ADC_VREF_OFF;
}
async command uint8_t Atm128AdcConfig.getPrescaler() {
return ATM128_ADC_PRESCALE;
}
}
--- NEW FILE: PhotoTempSetupP.nc ---
generic configuration PhotoTempSetupP(const char *resname)
{
provides interface Resource[uint8_t client];
uses {
interface Timer;
interface Resource as SharingResource;
interface GeneralIO as Power;
}
}
implementation
{
components
new RoundRobinArbiterC(resname) as Arbiter,
new SplitControlPowerManager() as Power,
new PhotoTempControlP() as Control;
Resource = Arbiter;
Power.ResourceDefaultOwner -> Arbiter;
Power.ArbiterInfo -> Arbiter;
Power.SplitControl -> Control;
Control.Resource = SharingResource;
Control.Power = Power;
Control.Timer = Timer;
}
--- NEW FILE: SounderC.nc ---
configuration SounderC
{
provides interface Mts300Sounder;
}
implementation
{
components SounderP, new TimerMilliC(), MicaBusC;
Mts300Sounder = SounderP;
SounderP.Timer -> TimerMilliC;
SounderP.SounderPin -> MicaBusC.PW2;
}
--- NEW FILE: SounderP.nc ---
module SounderP
{
provides interface Mts300Sounder;
uses {
interface Timer<TMilli>;
interface GeneralIO as SounderPin;
}
}
implementation
{
command void Mts300Sounder.beep(uint16_t length) {
if (call Timer.isRunning())
{
uint32_t remaining = call Timer.getdt(),
elapsed = call Timer.getNow() - call Timer.gett0();
/* If more time left than we are requesting, just exit */
if (remaining > elapsed && (remaining - elapsed) > length)
return;
/* Override timer with new duration */
}
call Timer.startOneShot(length);
call SounderPin.makeOutput();
call SounderPin.set();
}
event void Timer.fired() {
call SounderPin.clr();
}
}
--- NEW FILE: WireAccelP.nc ---
/* $Id: WireAccelP.nc,v 1.1 2007/02/08 17:55:36 idgay Exp $
* 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.
*/
/**
* Internal component for basicsb photodiode. Arbitrates access to the photo
* diode and automatically turns it on or off based on user requests.
*
* @author David Gay
*/
configuration WireAccelP {
provides interface Resource[uint8_t client];
}
implementation {
components AccelP, MicaBusC, new TimerMilliC() as WarmupTimer,
new RounRobinArbiterC(UQ_ACCEL_RESOURCE) as Arbiter,
new SplitControlPowerManagerC() as PowerManager;
Resource = Arbiter;
PowerManager.ResourceDefaultOwner -> Arbiter;
PowerManager.ArbiterInfo -> Arbiter;
PowerManager.SplitControl -> AccelP;
AccelP.Timer -> WarmupTimer;
AccelP.AccelPin -> MicaBusC.PW4;
AccelP.AccelAdcX -> MicaBusC.Adc3;
AccelP.AccelAdcY -> MicaBusC.Adc4;
}
Index: .sensor
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/sensorboards/mts300/.sensor,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** .sensor 12 Dec 2006 18:23:46 -0000 1.4
--- .sensor 8 Feb 2007 17:55:35 -0000 1.5
***************
*** 12,15 ****
push( @includes, qw(
%T/sensorboards/mts300
- # %T/chips/atm128/adc
) );
--- 12,14 ----
More information about the Tinyos-2-commits
mailing list