R. Steve McKown [Wed, 21 Mar 2012 14:50:47 +0000 (08:50 -0600)]
Allow custom platform families
ncc can find a custom platform if its PLATFORMDIR is included into
PFLAGS as an include: -I$(PLATFORMDIR) or equivalent. Teach ncc to
identify when such a platform is a family member and in such cases
process the corresponding .family file.
R. Steve McKown [Wed, 27 Oct 2010 23:54:17 +0000 (17:54 -0600)]
USCI I2C support.
Current limitations and features:
* Master mode only.
* No multi-master bus configurations.
* Will automatically reset a hung bus, if for example the master reset in the
middle of a transaction and a slave currently is driving SDA low.
* Repeated starts are supported and can be very time efficient.
* An I2C transactions may be processed with multiple I2CPacket.read() or
I2CPacket.write() commands, as appropriate. The first must include I2C_START
and the last must include I2C_STOP.
* Conditions exist during read where the hardware may clock out an extra byte
from the slave before stop. This byte is not passed to the user.
R. Steve McKown [Fri, 24 Sep 2010 22:32:11 +0000 (16:32 -0600)]
Race condition clearing bit vectors that are already clear in Init.init.
There's no point to clear the bit vectors in SharedArbiterP.Init.init,
because the compiler guarantees they are already clear, see BitVectorC.nc.
However, manually clearing them can create a situation where someone requesting
a shared resource has their requesting bit erased, depending upon the order of
calls to Init.init providers during boot.
R. Steve McKown [Fri, 7 May 2010 20:42:29 +0000 (14:42 -0600)]
Merge TinyOS 2.1.1 into master.
How this merge was done:
* Rebase patchset/2.1.0-4.2 onto tinyos/2.1.1 as topic/patchup211
* cp topic/patchup211 tree to tmp dir
* Checkout master, rm all files, cp in from tmp dir, git add .
Future work on TinyOS 2.1.0 w/TMI enhancements via release/2.1.0.
R. Steve McKown [Fri, 23 Apr 2010 22:39:53 +0000 (16:39 -0600)]
Don't hard-code for ncc in mig and ncg scripts.
The rationalization for this change is that nesc shouldn't really know where
tinyos-tools is installed, since they are separate packages. The pragmatic
reason for this change is that it allows using ncc from tinyos-tools before
installation to allow a single debian tinyos source package to build both
tinyos-tools and tinyos-source-VERSION packages.
R. Steve McKown [Fri, 23 Apr 2010 16:25:39 +0000 (10:25 -0600)]
Improved tinyos.sh
* Automatically installs tinyos.sh into user shell rc files when sourced.
* Adds an uninstall option if a user no longer wants to do TinyOS dev.
* Smarter handling of CLASSPATH.
* tinyos.jar is added to CLASSPATH instead of support/sdk/java. The latter is
a TOS 1.x idiom.
* Better error and help messages.
R. Steve McKown [Fri, 13 Nov 2009 23:47:49 +0000 (16:47 -0700)]
Upstream commits to tos/chips/cc2420, Aug 7 2008 thru Jul 16 2009, except one.
commit df004818be0944a5459b2d23dd4b49c55b716448
kusy <kusy> Thu Aug 7 00:06:53 2008 +0000
Previously reported timestamping bug was only fixed partially: *timesync...
NOT COMMITTED f8120ec47efebf578a6edf99882d009ea6dedcd1
kusy <kusy> Wed Aug 13 07:37:05 2008 +0000
Fixing T32khz to TMilli conversion - coeficient 32 needs to be...
commit 42b450d2e6d5eda17245d38f4d2bceb6b60e5400
rincon <rincon> Mon Aug 18 22:04:15 2008 +0000
Added a length check to make sure we don't try to send a packet that is...
commit 72c8a4f1a2b4f331aeedc6bfd5262253ce8d6d04
janhauer <janhauer> Wed Nov 26 10:13:31 2008 +0000
Added an interface for accessing the RXFIFO in a non-split phase...
R. Steve McKown [Mon, 19 Apr 2010 22:13:15 +0000 (16:13 -0600)]
Fix startup in SoftwareInit.init overwriting changes to StateC's.
If a component wires its Init.init() via SoftwareInit and ncc calls
StateImplP.Init.init() after the component's Init.init(), any change to its
StateC, such as call State.forceState(), is undone. The easy fix is to remove
the extra initiation of state[] in StateImplP.Init.init(), since state[] is a
static and is guaranteed to have members with value zero (S_IDLE).
R. Steve McKown [Thu, 8 Apr 2010 01:16:46 +0000 (19:16 -0600)]
USCI fixes.
* Watch out for sendData() clobbering TXBUF.
* May solve a loss of UART TX chars.
* USCI UartStream.send() gains nothing by immediately sending the 1st byte.
* m_sobuf cannot be null in Interrupts.tx, so remove the check.
R. Steve McKown [Thu, 8 Apr 2010 00:02:56 +0000 (18:02 -0600)]
Improve interrupt handling for USCI.
Because some interrupts share an interrupt vector, we use the relevant interrupt
enable bit to decide if any user is interested in the interrupt. If not, that
interrupt is skipped so that another interrupt in the if/then/elseif chain can
be taken. We also defensively try to prevent I2C interrupts from being a
problem if not used, although no I2C code using these interrupts has yet been
written.
R. Steve McKown [Thu, 8 Apr 2010 19:50:41 +0000 (13:50 -0600)]
Teach tos-storage-stm25p to derive NUM_SECTORS and SECTOR_SIZE.
The stm25p driver is suitable for different sizes of flash parts, such as the
commonly used 8Mb M25P80 and the less commonly used 1Mb M25P10A. The driver
defines the flash configuration in Stm25p.h. By having tos-storage-stm25p walk
the @includes for the platform, as found in the .platform file, each platform
can ensure that a Stm25p.h with correct content for its flash part is found
for use by the driver and this script.
R. Steve McKown [Wed, 2 Dec 2009 23:37:00 +0000 (16:37 -0700)]
Remove sensors code from tmirws platform.
The sensors code is not stable enough for inclusion into core tinyos, nor is
there yet a clean separation between platform code and application code. The
sensors code removed here was imported with its history into the RWS
application repository.
smckown [Mon, 9 Nov 2009 19:30:58 +0000 (19:30 +0000)]
Redo Average interface.
There is no point in having the averagers pre-know their number of samples.
The user should know this information. Therefore we have a more flexible
solution and avoid a signal to return the averate to the user when that user is
very likely to want to call a command instead.
smckown [Mon, 9 Nov 2009 19:30:52 +0000 (19:30 +0000)]
Enhancements to AeroVaneReadC.
* Anemometer is read immediately after the Timer fires to reduce jitter.
* Count interface is renamed Revolutions to be more meaningful.
* m_count is now uint8_t to reflect a more reasonable real life range.
* Direction data is returned no as degrees but as a 10-bit unsigned value.
* m_sum accumulates the correct, updated angle values.
* Rounding is done properly when m_sum is negative.
smckown [Sat, 7 Nov 2009 23:58:55 +0000 (23:58 +0000)]
Add AeroVane infrastructure to support physical/reading of the sensor.
AeroVaneReadC implements a timer every 28800 ticks of the 32KHz clock (or 900
binary ms). At each timer event it reads the wind vane via WindVaneReadC.
On every 4th read it reads the anemometer via AnemometerReadC, calculates the
average vane position over the last 4 reads (it's been summing all along),
and uses Notify.notify() to send out the aerovector structure. This means
that the user should get an AeroVane vector (reading) every 3.516 seconds, where
both the direction and the speed have been averaged over 4 reads during that
period.
smckown [Wed, 4 Nov 2009 19:17:56 +0000 (19:17 +0000)]
Replace a cardinal value with its proper template argument in WindVaneP.
The wind vane infrastructure works with 128 sectors, the max, which offers
approximately a 3 degree resolution. This comes at the cost of an additional
129 bytes of RAM over using 32 sectors.
smckown [Mon, 2 Nov 2009 20:43:24 +0000 (20:43 +0000)]
Ensure that uC input pin P1.2_CP_RTS is valid when the CP2103 is off.
We accomplish this by enabling an internal pull-down on P1.2 of the MSP430.
It would be better to enable a pull-up, but then we are sending a voltage to
the CP2103 when it is off, which may cause a latch-up problem. The pull-down
isn't terrible, since it represents the condition whereby the USB host is ready
to receive data from the RWS. When the USB is connected, this is likely to be
the most common condition.
smckown [Wed, 5 Aug 2009 02:57:10 +0000 (02:57 +0000)]
tmirws sets outputs going to cp2103 to low (zero) by default.
If any of these drive a high value toward the cp2103, the cp2103 is not
connected to USB power, and VIO is disconnected from Vuc, then funky things
happen that can cause GPIO_3, tied to !UC_RST, to sink current and cause the
uC to go into reset. Similar bad behavior can happen with !USB_SUSPEND.
smckown [Wed, 5 Aug 2009 02:57:08 +0000 (02:57 +0000)]
Reorganize scp1000 driver code.
The Scp1000P module now only uses GeneralIO and is not tied to anything msp430
specific. The msp430 specific bits are in the platform dependent file
Scp1000PinsP.