<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mjb/altos/src, branch 0.7</title>
<subtitle>AltOS - the operating system for Altus Metrum products
</subtitle>
<id>https://git.ethernal.org/mjb/altos/atom?h=0.7</id>
<link rel='self' href='https://git.ethernal.org/mjb/altos/atom?h=0.7'/>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/'/>
<updated>2010-08-27T07:10:29+00:00</updated>
<entry>
<title>altos: prepare for sdcc 2.9.1</title>
<updated>2010-08-27T07:10:29+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-27T07:10:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=2923cf5057f9cef110dd547d8677ea5b60e00796'/>
<id>urn:sha1:2923cf5057f9cef110dd547d8677ea5b60e00796</id>
<content type='text'>
A few minor language changes -- non-standard keywords are now prefixed
with __, such as 'at', 'interrupt', 'naked'.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: mark gps date written only after it gets into eeprom</title>
<updated>2010-08-27T06:37:29+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-27T06:37:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=68b2b66d7574dfd0bd5e3571b8ffad32ca5d2b73'/>
<id>urn:sha1:68b2b66d7574dfd0bd5e3571b8ffad32ca5d2b73</id>
<content type='text'>
Data logging doesn't start until boost detect occurs. As the GPS date
is only logged once, if that happens before logging is written to the
flash, then the GPS date will never get saved.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: print GPS state flags in GPS 'g' command</title>
<updated>2010-08-26T22:59:09+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-26T22:59:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=aa6c27df5db6bdae59d00affccb891854a6caa18'/>
<id>urn:sha1:aa6c27df5db6bdae59d00affccb891854a6caa18</id>
<content type='text'>
Having the GPS state information can help with GPS debugging.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: always rebuild ao_product.c to track git version</title>
<updated>2010-08-26T22:57:09+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-26T22:57:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=34055129b4008f6a9833887b12dee39ffa408002'/>
<id>urn:sha1:34055129b4008f6a9833887b12dee39ffa408002</id>
<content type='text'>
The git version is built into ao_product.c and saved in eeprom log
files, providing useful diagnostics about the firmware revision used
for each flight. However, if ao_product.c isn't recompiled, then the
updated version won't be included. Force recompilation of this file
each time make is run to ensure that the final output contains an
updated version number.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altosui: write USB serial number string while flashing</title>
<updated>2010-08-24T11:02:27+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-24T11:02:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=ba086cc77273efe5397f60dcaccd1e3771441481'/>
<id>urn:sha1:ba086cc77273efe5397f60dcaccd1e3771441481</id>
<content type='text'>
USB serial number is encoded in UCS2 as a part of the string
descriptors. Place those right after the other rom config bits so that
altosui can find it. altosui is changed to write the serial number there.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Place rom config variables in fixed location</title>
<updated>2010-08-24T05:03:36+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-24T05:03:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=56b906f535ac2f86bcab71addbbcd376d74f6a73'/>
<id>urn:sha1:56b906f535ac2f86bcab71addbbcd376d74f6a73</id>
<content type='text'>
The device serial number and radio calibration values are stored in
flash, mostly so that TeleDongle gets them saved.

Placing them in well-known locations (starting at 0xa0) makes it
possible to find the previous configuration and to re-write it
easily, without requiring the .map file.

altosui doesn't have the .map file parsing code, so it relies upon
this new technique. As a benefit, it reads the old values from the
device before reprogramming it.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: Define USB product ID in per-product Makefile.defs file</title>
<updated>2010-08-22T00:09:41+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-22T00:09:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=09252ec22d58e946494e4ca2cf367bf3bbe1cc50'/>
<id>urn:sha1:09252ec22d58e946494e4ca2cf367bf3bbe1cc50</id>
<content type='text'>
This allows Win7 to tell which kind of device is connected purely by
USB id as it doesn't expose the USB product ID string to user space.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos: add callsign to packet mode, increase payload to 64 bytes</title>
<updated>2010-08-07T04:40:59+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-08-07T04:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=4738cb2fc639adb1d9237e6c903479f0690dd81a'/>
<id>urn:sha1:4738cb2fc639adb1d9237e6c903479f0690dd81a</id>
<content type='text'>
Untested, but it 'should' work. Need to add callsign setting to packet
mode users.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>Make ao_log_data re-entrant as it is used for both sensor and GPS logs</title>
<updated>2010-07-28T18:19:45+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-07-28T16:31:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=f2a006fd98045066bdf429cc142d033e9feb0a8f'/>
<id>urn:sha1:f2a006fd98045066bdf429cc142d033e9feb0a8f</id>
<content type='text'>
Because ao_log_data is called from two different threads, failing to
make it re-entrant would cause the 'log' pointer parameter to get
overwritten if another thread asked to log data while the eeprom was
busy writing out a block.

This would cause the second thread to re-writing data from the first
thread's address, but without re-checksumming the data as the checksum
is computed before the log mutex is taken.

The bug can be seen by log blocks with invalid checksums.

Here's what happens with the ao_gps_tracking_report and ao_log threads:

  ao_gps_tracking_report		ao_log

   Writes a bunch of records
   *blocks* in the eeprom flush
					sets ao_log_data 'log' to global 'log'
					computes checksum for 'log' block
					*blocks* on ao_log_mutex
   Wakes up
   sets ao_log_data 'log' to 'gps_log'
   writes remaining records
   'gps_log' is left with svid = 0
   *blocks* on ao_gps_tracking_data
					writes data, reading from
					the current ao_log_data 'log'
					pointer which points at 'gps_log'

Making ao_log_data re-entrant fixes this by ensuring that the 'ao_log'
thread has its own copy of the ao_log_data 'log' parameter.

I made this function take an __xdata restricted pointer so that it
could be passed in the dptr register instead of needing to go on the stack.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>When the EP0 IN buffer is full, don't panic, just skip sending another</title>
<updated>2010-07-26T19:54:41+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2010-07-26T19:52:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=05111d5be4d37bedaaee6415d6ee27347e6a112c'/>
<id>urn:sha1:05111d5be4d37bedaaee6415d6ee27347e6a112c</id>
<content type='text'>
If the host doesn't pull the IN packet out of EP0 before sending
another SETUP command along, the IN buffer will still be busy when we
try to reply to the SETUP command. While I don't quite understand why
this would ever happen, there's no need to panic about it, just drop
the reply packet on the floor.

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