From 1afbc5af73f6fb8faef30ace9951013179f3d7b6 Mon Sep 17 00:00:00 2001 From: pipeng Date: Wed, 14 Mar 2007 05:41:52 +0000 Subject: [PATCH] Change to follow TEP 109. --- tos/sensorboards/mts300/MicReadP.nc | 21 ++++++ tos/sensorboards/mts300/MicReadStreamP.nc | 27 +++++++ tos/sensorboards/mts300/MicSetting.nc | 89 +++++++++++++++++++++++ tos/sensorboards/mts300/MicStreamC.nc | 47 ++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 tos/sensorboards/mts300/MicReadP.nc create mode 100644 tos/sensorboards/mts300/MicReadStreamP.nc create mode 100644 tos/sensorboards/mts300/MicSetting.nc create mode 100644 tos/sensorboards/mts300/MicStreamC.nc diff --git a/tos/sensorboards/mts300/MicReadP.nc b/tos/sensorboards/mts300/MicReadP.nc new file mode 100644 index 00000000..491a3e67 --- /dev/null +++ b/tos/sensorboards/mts300/MicReadP.nc @@ -0,0 +1,21 @@ +configuration MicReadP +{ + provides + { + interface Read[uint8_t client]; + } + uses + { + interface Read as ActualRead[uint8_t client]; + } +} +implementation +{ + components MicDeviceP, + new ArbitratedReadC(uint16_t); + + Read = ArbitratedReadC; + ArbitratedReadC.Resource -> MicDeviceP; + ArbitratedReadC.Service = ActualRead; +} + diff --git a/tos/sensorboards/mts300/MicReadStreamP.nc b/tos/sensorboards/mts300/MicReadStreamP.nc new file mode 100644 index 00000000..b2c61a3e --- /dev/null +++ b/tos/sensorboards/mts300/MicReadStreamP.nc @@ -0,0 +1,27 @@ +configuration MicReadStreamP +{ + provides + { + interface MicSetting; + interface ReadStream[uint8_t client]; + } + uses + { + interface ReadStream as ActualRead[uint8_t client]; + } +} +implementation +{ + enum { + NMIC_CLIENTS = uniqueCount(UQ_MIC_RESOURCE) + }; + components MicDeviceP, + new ArbitratedReadStreamC(NMIC_CLIENTS, uint16_t); + + MicSetting = MicDeviceP; + + ReadStream = ArbitratedReadStreamC; + ArbitratedReadStreamC.Resource -> MicDeviceP; + ArbitratedReadStreamC.Service = ActualRead; +} + diff --git a/tos/sensorboards/mts300/MicSetting.nc b/tos/sensorboards/mts300/MicSetting.nc new file mode 100644 index 00000000..6f86dbf7 --- /dev/null +++ b/tos/sensorboards/mts300/MicSetting.nc @@ -0,0 +1,89 @@ +// $Id$ + +/* tab:4 + * "Copyright (c) 2000-2003 The Regents of the University of California. + * 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 following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * + * Copyright (c) 2002-2003 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. + */ + +/* + * Authors: Alec Woo + * Date last modified: 8/20/02 + * + * The microphone on the mica sensor board has two methods for control and + * one method to read the binary output of the tone detector. (Note: The tone + * detector's binary output can be configured as an interrupt. Please see MicInterrupt.ti) + * + * muxSel allows users to switch the ADC to sample from phase lock loop output of + * the tone detector (by setting the value to 0 (default)) or the raw voice-band output + * of the micrphone (by setting the value to 1). + * + * gainAdjust allows users to adjust the amplification gain on the microphone. The range + * is 0 to 255 with 0 being the minmum and 255 being the maximum amplification. Note that + * setting amplification too high can result in clipping (signal distortion). + * + * If an audio signal at 4.3kHz is picked up by the microphone, the tone + * detect will decode it and generate a binary ouput (0 meaning tone is detected, 1 meaning + * tone is not detected). Users can read this output simply by calling readToneDetector(). + * + */ + +/** + * @author Alec Woo + */ + +interface MicSetting { + /* Effect: Set the multiplexer's setting on the microphone + * Return: returns SUCCESS or FAIL + */ + command error_t muxSel(uint8_t sel); + /* Effect: Set the amplificatoin gain on the microphone + * Return: returns SUCCESS or FAIL + */ + command error_t gainAdjust(uint8_t val); + + /* Effect: returns the binary tone detector's output + * Return: 0 meaning tone is detected, 1 meanning tone is not detected + */ + command uint8_t readToneDetector(); + /* Effects: disable interrupts + Returns: SUCCESS + */ + async command error_t disable(); + + /* Effects: enable interrupts + Returns: SUCCESS + */ + async command error_t enable(); + + /* Interrupt signal for tone detected. Note that MicInterrupt is automatically disabled + * before this event is signaled. (Upper layer needs to reenable this interrupt for future + * tone detect. + * + * Returns: SUCCESS + */ + async event error_t toneDetected(); +} diff --git a/tos/sensorboards/mts300/MicStreamC.nc b/tos/sensorboards/mts300/MicStreamC.nc new file mode 100644 index 00000000..1f440c64 --- /dev/null +++ b/tos/sensorboards/mts300/MicStreamC.nc @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2005-2006 Crossbow Technology, Inc. + * 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. + * + * Permission is also granted to distribute this software under the + * standard BSD license as contained in the TinyOS distribution. + * + * 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 Hu Siquan + * + * $Id$ + */ + +#include "mts300.h" + +generic configuration MicStreamC() { + provides interface ReadStream; + provides interface MicSetting; +} +implementation { + enum { + ID = unique(UQ_MIC_RESOURCE) + }; + components MicReadStreamP, MicDeviceP, new AdcReadStreamClientC(); + + ReadStream = MicReadStreamP.ReadStream[ID]; + MicReadStreamP.ActualRead[ID] -> AdcReadStreamClientC; + AdcReadStreamClientC.Atm128AdcConfig -> MicDeviceP.Atm128AdcConfig; + MicSetting = MicReadStreamP; +} -- 2.39.2