<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mjb/altos/src/cc1111/ao_usb.c, branch 1.6.5</title>
<subtitle>AltOS - the operating system for Altus Metrum products
</subtitle>
<id>https://git.ethernal.org/mjb/altos/atom?h=1.6.5</id>
<link rel='self' href='https://git.ethernal.org/mjb/altos/atom?h=1.6.5'/>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/'/>
<updated>2014-05-15T15:27:34+00:00</updated>
<entry>
<title>altos/cc1111: Add support for CPU-driven USB pullup</title>
<updated>2014-05-15T15:27:34+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2014-05-15T15:27:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=3225fb54ec1beaf6dc8553ab4f5b86bea6bdf1f3'/>
<id>urn:sha1:3225fb54ec1beaf6dc8553ab4f5b86bea6bdf1f3</id>
<content type='text'>
Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Expose ao_usb_running globally</title>
<updated>2014-02-18T17:44:52+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2014-02-18T17:44:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=9f6983e3d61fa5231f3d0ce33dbc5aadf946b597'/>
<id>urn:sha1:9f6983e3d61fa5231f3d0ce33dbc5aadf946b597</id>
<content type='text'>
This lets other bits of the code know when USB has been connected.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>Initial TeleMini bits</title>
<updated>2013-08-26T05:24:00+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-05-22T20:03:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=d0b4e926ecececa7499a301b6135189be119512e'/>
<id>urn:sha1:d0b4e926ecececa7499a301b6135189be119512e</id>
<content type='text'>
Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/cc1111: Hack on USB driver to make Windows happy</title>
<updated>2013-05-17T10:38:51+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-05-17T10:21:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=8a19805a6b079450b5afd5fa2334cede8495ae4a'/>
<id>urn:sha1:8a19805a6b079450b5afd5fa2334cede8495ae4a</id>
<content type='text'>
The Windows modem driver is quite chatty at startup time, getting and
setting the comm parameters each time the device is opened. Sometimes,
when setting the parameters, the cc1111 would STALL EP0.

Most of the time, Windows would happily pass this as an error back to
AltosUI which would then re-try the open (and succeed, most of the
time).

Sometimes, Windows would stall for 30 seconds before passing the error
back. This made the whole UI freeze, and I suspect most people assumed
our app had died.

A bit of analysis with the beagle USB sniffer and I discovered the
STALL settings, but there wasn't any correlation between the data on
the wire and when the STALL would be generated.

So, I found a couple of other cc1111 USB stacks on the net and just
looked to see how our driver differed. There wasn't anything clearly
related, but there were a list of small differences:

 1) Other drivers didn't bother waiting for the hardware to
    ack the USBADDR setting; doing it this way means we can set
    the address *before* acking the setup packet. It'll get
    set eventually, at which point the device will start responding to
    packets again.

    Easy to fix, and saves a bit of code space too.

 2) The other drivers set the STALL bit for setup packets which aren't
    understood. This shouldn't have any effect on 'good' systems as
    those shouldn't ever be generating bogus setup packets anyways.

    The driver already handled the STALL state in the interrupt
    handler, the only requirement was to figure out when to explicitly
    set the STALL bit.

    That required moving the state updating code from the start of the
    ep0 setup handling to the end, after the setup packet had been
    examined and data queued in or out as appropriate.

 3) Our driver explicitly queued an IN packet for any setup request
    that wasn't waiting for an OUT pack. This appears to tie in with
    the USBADDR change above as before I made that change, this change
    caused the driver to fail to respond to most setup packets.

    This was simple once the above change was made, just move the
    generation of the IN packet inside the code that switched to the
    IN state.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Do not release interrupts from any pollchar function</title>
<updated>2013-03-31T19:24:24+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-03-24T22:00:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=4f1f3e836393304434130d362771a39f6f8f859a'/>
<id>urn:sha1:4f1f3e836393304434130d362771a39f6f8f859a</id>
<content type='text'>
getchar relies on interrupts being blocked across the pollchar calls
and into the sleep call or it may go to sleep with data pending.

This prefixes all pollchar functions with _ to indicate that they are
to be called with interrupts blocked and eliminates all interrupt
manipulation calls from within the pollchar functions.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: fix functions calling pollchar to use 'int' to hold the value</title>
<updated>2012-12-07T18:12:19+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2012-12-07T18:05:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=c10f9a438ed5789479d21c78153ca7f14c05534c'/>
<id>urn:sha1:c10f9a438ed5789479d21c78153ca7f14c05534c</id>
<content type='text'>
AO_READ_AGAIN doesn't fit in a char anymore now that stdio is 8-bit
clean, everyone using pollchar must use an 'int' variable to capture
the whole value from pollchar.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Make stdio 8-bit clean by making pollchar return int</title>
<updated>2012-12-01T00:01:07+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2012-12-01T00:01:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=0b65402361f36a0c722977bcb63edb26fda0db28'/>
<id>urn:sha1:0b65402361f36a0c722977bcb63edb26fda0db28</id>
<content type='text'>
We were stealing one value (0xff) in the return value from pollchar to
indicate 'not ready yet'. Instead of doing that, use the integer value
-1 and have pollchar return an int instead of a char. That
necessitated cleaning a few other bits to make sure that 0xff wouldn't
get promoted to -1 on accident.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Massive product config cleanup</title>
<updated>2012-04-14T21:04:29+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2012-04-12T21:51:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=040a6eb119451026e1ec7c3a6a8e76b439c632d5'/>
<id>urn:sha1:040a6eb119451026e1ec7c3a6a8e76b439c632d5</id>
<content type='text'>
Support multiple serial ports more cleanly

Split out parts of ao.h into separate feature header files

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Add button driver and sample user</title>
<updated>2011-10-23T21:08:59+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2011-10-23T21:08:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=7e7a10c06a0486e9f869e361e46f2c98db9897b0'/>
<id>urn:sha1:7e7a10c06a0486e9f869e361e46f2c98db9897b0</id>
<content type='text'>
Hook up the teleterra buttons and have them beep

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Restructure altos build to prepare for multi-arch support</title>
<updated>2011-08-26T03:49:11+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2011-08-26T03:43:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=9513be7f9d3d0b0ec29f6487fa9dc8f1ac24d0de'/>
<id>urn:sha1:9513be7f9d3d0b0ec29f6487fa9dc8f1ac24d0de</id>
<content type='text'>
Split out sources into separate directories:

	core:		architecture and product independent bits
	cc1111:		cc1111-specific code
	drivers:	architecture independent drivers
	product:	product-specific sources and Makefile fragments
	util:		scripts for building stuff

This should have no effect on the built products, but testing is encouraged

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
</feed>
