<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mjb/altos/src/core, branch 1.2.1</title>
<subtitle>AltOS - the operating system for Altus Metrum products
</subtitle>
<id>https://git.ethernal.org/mjb/altos/atom?h=1.2.1</id>
<link rel='self' href='https://git.ethernal.org/mjb/altos/atom?h=1.2.1'/>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/'/>
<updated>2013-05-17T10:51:16+00:00</updated>
<entry>
<title>altos/cc1111: Hack on USB driver to make Windows happy</title>
<updated>2013-05-17T10:51:16+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=3b457ff8d43630c04e0cb22bb3a2765be5e188bd'/>
<id>urn:sha1:3b457ff8d43630c04e0cb22bb3a2765be5e188bd</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: Provide a define for the number of sat infos in a telem packet</title>
<updated>2013-05-14T05:32:25+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-05-14T05:32:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=d2f0dcc73df612d10ed12d364fe661ccd831f037'/>
<id>urn:sha1:d2f0dcc73df612d10ed12d364fe661ccd831f037</id>
<content type='text'>
12 fit, but it's best to use a symbolic constant

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Use flash loader on all STM products</title>
<updated>2013-05-08T04:30:26+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-04-23T01:35:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=dfc268e0021e1cd3045f73339a749d292a6a6300'/>
<id>urn:sha1:dfc268e0021e1cd3045f73339a749d292a6a6300</id>
<content type='text'>
Includes the boot chain stuff

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Eliminate stdio looping when system has a single stdio source</title>
<updated>2013-05-08T03:16:53+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-04-23T01:27:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=8d0f4bc23eae4f1e085bfb853c995f1fb6b8b594'/>
<id>urn:sha1:8d0f4bc23eae4f1e085bfb853c995f1fb6b8b594</id>
<content type='text'>
No need to loop if there's only one

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Move ao_notask to core</title>
<updated>2013-05-08T03:16:53+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-04-23T01:24:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=6f3bbb11880f45284f1f094990ffa32a66bf4560'/>
<id>urn:sha1:6f3bbb11880f45284f1f094990ffa32a66bf4560</id>
<content type='text'>
The STM flash loader wants to be taskless too, share this very simple
implementation of sleep/wakeup.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Make stm-flash capable of switching to application</title>
<updated>2013-05-08T03:15:43+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-03-11T04:02:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=c9c35b100c3fcae661501d2bf89eedc7fceb2e1c'/>
<id>urn:sha1:c9c35b100c3fcae661501d2bf89eedc7fceb2e1c</id>
<content type='text'>
This shrinks the base OS load down a bit as well so that stm-flash
fits comfortably in the first 8kB of memory.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Sanity check barometer before going to pad mode</title>
<updated>2013-05-08T03:08:01+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-05-08T02:29:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=887209b61ac3012d0fd2206cf1016c44f59cb432'/>
<id>urn:sha1:887209b61ac3012d0fd2206cf1016c44f59cb432</id>
<content type='text'>
Make sure the barometer is reporting some sensible value before
letting TM try to fly the rocket.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Mark GPS telemetry packets with GPS time stamp</title>
<updated>2013-05-08T03:08:01+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-05-01T15:56:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=b7b0ddfddee3f8e21f21d67cd9f522fa50777265'/>
<id>urn:sha1:b7b0ddfddee3f8e21f21d67cd9f522fa50777265</id>
<content type='text'>
This provides a reasonable accurate indication of the system time when
the GPS location data was received, and also makes sure GPS packets
get some timestamp when no other telemetry is being transmitted.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Use separate exception stack on STM32L</title>
<updated>2013-05-08T03:08:00+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-05-01T02:04:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=1e9b405e939136d25d937334d1f14f06c7d6127b'/>
<id>urn:sha1:1e9b405e939136d25d937334d1f14f06c7d6127b</id>
<content type='text'>
This reserves 512 bytes of memory for a stack, then makes sure that
exceptions continue to use that stack while processes use the per-task
stack.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Compute "real" RSSI value in radio code as needed</title>
<updated>2013-05-08T03:07:54+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2013-04-30T06:20:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=eb0e1720be2aa4fb6729ceada09c18947bfee2bc'/>
<id>urn:sha1:eb0e1720be2aa4fb6729ceada09c18947bfee2bc</id>
<content type='text'>
Instead of dragging around the weird CC1111 RSSI values, just compute
a dBm value in a signed 8-bit integer, ao_radio_rssi. Use that
everywhere we need RSSI internally. We leave the weird CC1111 value in
the packet reply as that's what the host expects.

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