[Tinyos-2-commits] CVS: tinyos-2.x/tos/platforms/iris/chips/rf230
HplRF230.h, NONE, 1.1 HplRF230.nc, NONE, 1.1 HplRF230C.nc,
NONE, 1.1 HplRF230P.nc, NONE, 1.1
Janos Sallai
sallai at users.sourceforge.net
Mon Nov 5 12:37:23 PST 2007
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/tos/platforms/iris .platform,
NONE, 1.1 ActiveMessageC.nc, NONE, 1.1 MeasureClockC.nc, NONE,
1.1 MicaTimer.h, NONE, 1.1 platform.h, NONE,
1.1 platform_message.h, NONE, 1.1
- Next message: [Tinyos-2-commits]
CVS: tinyos-2.x/tos/platforms/iris/sim .platform, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/tinyos/tinyos-2.x/tos/platforms/iris/chips/rf230
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27584/chips/rf230
Added Files:
HplRF230.h HplRF230.nc HplRF230C.nc HplRF230P.nc
Log Message:
platform support for the IRIS mote (atm1218 MCU and rf230 radio)
--- NEW FILE: HplRF230.h ---
/*
* Copyright (c) 2007, Vanderbilt 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 following
* two paragraphs and the author appear in all copies of this software.
*
* IN NO EVENT SHALL THE VANDERBILT UNIVERSITY 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 VANDERBILT
* UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE VANDERBILT UNIVERSITY 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 VANDERBILT UNIVERSITY HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Author: Miklos Maroti
*/
#ifndef __HPLRF230_H__
#define __HPLRF230_H__
#include <RF230.h>
enum
{
/**
* This is the value of the TRX_CTRL_0 register
* which configures the output pin currents and the CLKM clock
*/
RF230_TRX_CTRL_0_VALUE = 0,
/**
* This is the default value of the CCA_MODE field in the PHY_CC_CCA register
* which is used to configure the default mode of the clear channel assesment
*/
RF230_CCA_MODE_VALUE = RF230_CCA_MODE_3,
/**
* This is the value of the CCA_THRES register that controls the
* energy levels used for clear channel assesment
*/
RF230_CCA_THRES_VALUE = 0xC7,
};
/**
* This is the timer type of the RF230 alarm interface
*/
typedef TOne TRF230;
/**
* The number of alarm ticks per one microsecond (0.9216)
*/
#define RF230_ALARM_MICROSEC ((7.3728 / MHZ / 32.0) * (1 << MICA_DIVIDE_ONE_FOR_32KHZ_LOG2))
#endif//__HPLRF230_H__
--- NEW FILE: HplRF230.nc ---
/*
* Copyright (c) 2007, Vanderbilt 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 following
* two paragraphs and the author appear in all copies of this software.
*
* IN NO EVENT SHALL THE VANDERBILT UNIVERSITY 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 VANDERBILT
* UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE VANDERBILT UNIVERSITY 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 VANDERBILT UNIVERSITY HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Author: Miklos Maroti
*/
/**
* There should be standard interfaces/commands for these
*/
interface HplRF230
{
/**
* Calculates the crc. For some unknown reason the standard
* tinyos crcByte command swiches endianness.
*/
async command uint16_t crcByte(uint16_t crc, uint8_t data);
/**
* Starts a split-phase SPI data transfer with the given data.
* A spiSplitRead command must follow this command even if the
* result is unimportant. The SpiByte interface should be
* extended with this protocol.
*/
async command void spiSplitWrite(uint8_t data);
/**
* Finishes the split-phase SPI data transfer by waiting till
* the write command comletes and returning the received data.
*/
async command uint8_t spiSplitRead();
/**
* This command first reads the SPI register and then writes
* there the new data, then returns
*/
async command uint8_t spiSplitReadWrite(uint8_t data);
/**
* This is the standard SpiByte.write command but a little
* faster as we shuold not need to adjust the power state there.
*/
async command uint8_t spiWrite(uint8_t data);
}
--- NEW FILE: HplRF230C.nc ---
/*
* Copyright (c) 2007, Vanderbilt 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 following
* two paragraphs and the author appear in all copies of this software.
*
* IN NO EVENT SHALL THE VANDERBILT UNIVERSITY 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 VANDERBILT
* UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE VANDERBILT UNIVERSITY 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 VANDERBILT UNIVERSITY HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Author: Miklos Maroti
*/
#include <HplRF230.h>
configuration HplRF230C
{
provides
{
interface GeneralIO as SELN;
interface Resource as SpiResource;
interface SpiByte;
interface GeneralIO as SLP_TR;
interface GeneralIO as RSTN;
interface GpioCapture as IRQ;
interface Alarm<TRF230, uint16_t> as Alarm;
interface HplRF230;
}
}
implementation
{
components HplRF230P;
IRQ = HplRF230P.IRQ;
HplRF230P.PortCLKM -> IO.PortD6;
HplRF230P.PortIRQ -> IO.PortD4;
// TODO: Ask why the HplAtm128SpiC does SlaveSelect via PortB0
// TODO: Remove the unused started field from Atm128SpiP
components Atm128SpiC as SpiC;
SpiResource = SpiC.Resource[unique("Atm128SpiC.Resource")];
SpiByte = SpiC;
HplRF230 = HplRF230P;
components HplAtm128GeneralIOC as IO;
SLP_TR = IO.PortB7;
RSTN = IO.PortA6;
SELN = IO.PortB0;
components HplAtm128Timer1C as TimerC;
HplRF230P.Capture -> TimerC.Capture;
components new AlarmOne16C() as AlarmC;
Alarm = AlarmC;
// TODO: do these from PlatformC
components RealMainP, RF230LayerC;
RealMainP.PlatformInit -> HplRF230P.PlatformInit;
RealMainP.PlatformInit -> RF230LayerC.PlatformInit;
}
--- NEW FILE: HplRF230P.nc ---
/*
* Copyright (c) 2007, Vanderbilt 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 following
* two paragraphs and the author appear in all copies of this software.
*
* IN NO EVENT SHALL THE VANDERBILT UNIVERSITY 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 VANDERBILT
* UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE VANDERBILT UNIVERSITY 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 VANDERBILT UNIVERSITY HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Author: Miklos Maroti
*/
#include <util/crc16.h>
#include "Atm128Spi.h"
module HplRF230P
{
provides
{
interface GpioCapture as IRQ;
interface Init as PlatformInit;
interface HplRF230;
}
uses
{
interface HplAtm128Capture<uint16_t> as Capture;
interface GeneralIO as PortCLKM;
interface GeneralIO as PortIRQ;
}
}
implementation
{
command error_t PlatformInit.init()
{
call PortCLKM.makeInput();
call PortCLKM.clr();
call PortIRQ.makeInput();
call PortIRQ.clr();
call Capture.stop();
return SUCCESS;
}
async event void Capture.captured(uint16_t time)
{
time = call Capture.get(); // TODO: ask Cory why time is not the captured time
signal IRQ.captured(time);
}
default async event void IRQ.captured(uint16_t time)
{
}
async command error_t IRQ.captureRisingEdge()
{
call Capture.setEdge(TRUE);
call Capture.reset();
call Capture.start();
return SUCCESS;
}
async command error_t IRQ.captureFallingEdge()
{
// falling edge comes when the IRQ_STATUS register of the RF230 is read
return FAIL;
}
async command void IRQ.disable()
{
call Capture.stop();
}
// TODO: Check why the default crcByte implementation is in a different endianness
inline async command uint16_t HplRF230.crcByte(uint16_t crc, uint8_t data)
{
return _crc_ccitt_update(crc, data);
}
inline async command void HplRF230.spiSplitWrite(uint8_t data)
{
// the SPI must have been started, so do not waste time here
// SET_BIT(SPCR, SPE);
SPDR = data;
}
inline async command uint8_t HplRF230.spiSplitRead()
{
while( !( SPSR & 0x80 ) )
;
return SPDR;
}
inline async command uint8_t HplRF230.spiSplitReadWrite(uint8_t data)
{
uint8_t b;
while( !( SPSR & 0x80 ) )
;
b = SPDR;
SPDR = data;
return b;
}
inline async command uint8_t HplRF230.spiWrite(uint8_t data)
{
// the SPI must have been started, so do not waste time here
// SET_BIT(SPCR, SPE);
SPDR = data;
while( !( SPSR & 0x80 ) )
;
return SPDR;
}
}
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/tos/platforms/iris .platform,
NONE, 1.1 ActiveMessageC.nc, NONE, 1.1 MeasureClockC.nc, NONE,
1.1 MicaTimer.h, NONE, 1.1 platform.h, NONE,
1.1 platform_message.h, NONE, 1.1
- Next message: [Tinyos-2-commits]
CVS: tinyos-2.x/tos/platforms/iris/sim .platform, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Tinyos-2-commits
mailing list