summaryrefslogtreecommitdiff
path: root/src/drivers
Commit message (Collapse)AuthorAge
...
* altos: Add chaoskey flash loaderKeith Packard2015-02-28
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Remove some accidental debug printfs from ao_packet.cKeith Packard2015-02-15
| | | | | | | While fixing the cc1200 configuration, I added some debug printfs to this code. They were accidentally committed with the fix... Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/cc1200: Adjust bit-sync configurationKeith Packard2015-02-14
| | | | | | | | | | | | | The default bit timing adjustment mechanism allows for only a 0.2% deviation from the programmed bit timing. I found one TeleMini device which is beyond that tolerance as it was built with an older crystal with more error. Switch to the more expensive synchronization mechanism which allows up to 2% timing error, but requires a multi-byte preamble (which we have). This fixes packet mode nicely. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Replace ao_alarm/ao_clear_alarm with ao_sleep_forKeith Packard2015-02-13
| | | | | | | | | | | | | | | | Having arbitrary alarms firing in the middle of complicated device logic makes no sense at all. Therefore only correct use of ao_alarm and ao_clear_alarm was around a specific ao_sleep call, with correct recovery in case the alarm fires. This patch replaces all uses of ao_alarm/ao_sleep/ao_clear_alarm with ao_sleep_for, a new function which takes the alarm timeout directly. A few cases which weren't simply calling ao_sleep have been reworked to pass the timeout value down to the place where sleep *is* being called, and having that code deal with the return correctly. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: ao_packet_getchar needs to return 'int' so AO_READ_AGAIN worksKeith Packard2015-02-07
| | | | | | | | | With ao_packet_getchar returning 'char', AO_READ_AGAIN would get converted to 0xff instead of -1 on return, making ao_packet_echo either produce a bogus character on output, breaking command responses, or wedge and never exit when the link was dropped. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/drivers: Increase SPI speed of CC115L to 6MHzKeith Packard2015-02-07
| | | | | | The datasheet says that the maximum for back-to-back data is 6.5MHz. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/btm: Add fancier debug. Pull serial reset port low.Keith Packard2015-02-01
| | | | | | | | | | | Adds an interactive debugging mode to help diagnose BTM issues. Discovered that the serial reset pin on the BTM needs to be pulled low for the device to work correctly. Leave the bt link interrupt disabled until things are initialized. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add support for TeleBT v3.0Keith Packard2015-01-24
| | | | | | | Add support to the BTM driver for non-CC1111 interrupts Add HW flow control to STM serial driver Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Adjust CC1200 RSSI reporting valueKeith Packard2014-12-22
| | | | | | | | | On the test setup, we were about 13dB off, so tweak the settings to suit. This result wasn't tested; it's just a rough offset until we get a production run of TeleDongle boards back to do more systematic measurements. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Document cc115l power measured at RF setting 0x03 as -31.75dBmKeith Packard2014-12-22
| | | | | | | | We built a custom TeleGPS load for radio sensitivity measurements with the lowest documented power level setting (0x03), and measured the power out at that value of -31.75dBm on the test board. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/cc1200: With PQT wide open, we can't use PQT_REACHED for startKeith Packard2014-11-23
| | | | | | | | | Because we're allowing even signals only weakly correlated with the preamble through to sync detection, we can't use the PQT_REACHED symbol to tell when a packet header has been seen. Instead, just look for SYNC_FOUND. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/cc1200: Open up preamble detect to improve sensitivityKeith Packard2014-11-23
| | | | | | | Increase soft decision PQT value to max (15) to ensure that we detect even weak packets. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/cc1200: Wait for packet to be placed in FIFO during receiveKeith Packard2014-11-23
| | | | | | | | | | | | | This changes the receive code to use MCU_STATUS, waiting for MARC_STATUS1 to indicate that the packet is in the fifo before reading it out. It also fixes the receive timeout code to keep receiving if the preamble or sync have been seen when the timeout fires. This makes TeleLCO able to use short timeouts during scanning while still successfully receiving packets. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Reset interrupt flags before TX in CC1200 driverKeith Packard2014-11-06
| | | | | | | Failing to reset the flags set during interrupt leads to short-circuiting transmission and not a lot of packets going out. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Use AO_SPO_SPEED_FAST for CC1200Keith Packard2014-11-06
| | | | | | | This asks for the fastest available SPI speed, instead of fixing it to 8MHz, which may not be supported on every architecture. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Stop attempting to ramp power on CC115LKeith Packard2014-11-06
| | | | | | | | The PA register on the 115L isn't in any way monotonic, making the old code broken. Just rempve it instead of fixing it; we don't ramp anywhere else... Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Increase CC1200 SPI data rate to 8MHzKeith Packard2014-10-25
| | | | | | | This got set to 125kHz to make debugging with a logic analyzer easier and never changed back to a reasonable speed. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Perform cc1200 calibration less often. Tweak radio paramsKeith Packard2014-10-25
| | | | | | | | | | | This performs calibration after every 4 operations, or when the frequency changes. This reduces the time it takes to get to receive mode. This also makes the sync and preamble qualifiers more strict to reject bad packets. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Increase PQT value for cc1200 improving sensitivityKeith Packard2014-10-25
| | | | | | | | The PQT value indicates how 'good' the preamble is; higher values allow a lower quality of preamble to pass the test, permitting more packets to be decoded. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Complete cc1200 driverKeith Packard2014-10-24
| | | | | | | | | | Deal with differences between cc1120 and cc1200, including built-in packet support and various register changes. This now works to send and receive telemetry, as well as send APRS and RDF. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Copy cc1120 driver to cc1200 driver and hack a bitKeith Packard2014-10-05
| | | | | | | | | | The cc1200 is similar to the cc1120, although many registers have changed. This driver can send a bare carrier and an RDF tone, but does not yet receive or transmit telemetry data. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make sure we drop the SPI mutex when aborting cc1120 recvKeith Packard2014-09-26
| | | | | | | | | | The cc1120 receive code is 'twisty', in that it acquires the SPI mutex in the middle of an interrupt handler so that it can quickly start the radio when the signal comes in. This means we have to be careful to drop that mutex in all paths which leave the receive code, including when the packet receive is aborted mid-way through the process. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Scale packet master receive delay by baud rateKeith Packard2014-09-06
| | | | | | | Increase the time we wait for return packets based on the remote protocol baud rate. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Reduce deviation at 2400/9600 baudKeith Packard2014-09-06
| | | | | | | | | | There's no reason to use 20.5kHz deviation at 2400 and 9600 baud, and if we get a better receiver, we'll want to use narrower deviation to have less bandwidth sucking noise into the radio. The new values are (nominally) 5.125kHz deviation for 9600 baud and 1.5kHz deviation for 2400 baud. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/telefire: Add firing length to manual pad commandKeith Packard2014-09-03
| | | | | | | | This adds an optional length of time (in 1/10s of a second) to the ao_pad_manual function to enable testing of igniters without needing to use TeleLCO. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/telefire,telelco: Add HAS_RADIO_RATE to launch system softwareKeith Packard2014-07-12
| | | | | | | This lets us set the rate to a lower value to improve range. 9600 baud works great; 2400 baud makes the initial search take a long time. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Scale DOP values by 10 in GPS driversKeith Packard2014-07-10
| | | | | | sky traq was scaling by 5, ublox was scaling by 100. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Extend GPS altitudes to at least 24 bits everywhereKeith Packard2014-07-10
| | | | | | | | Telemetry gets a special 'mode' flag indicating that 24-bit data is present; log files get new data and log readers are expected to detect that via the firmware version number. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Rework packet receive for cc1120Keith Packard2014-07-05
| | | | | | | | | | Instead of blocking on PQT, just set up the receiver to start going and when the first bit interrupt comes in, grab the SPI bus if possible and configure it for reception. This improves sensitivity in the radio by a significant amount while making the code conceptually a bit nicer. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add telemetry rate support to CC1120 driverKeith Packard2014-07-05
| | | | | | This supports the new 2400 and 9600 baud rates Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Packet reception tuning for cc1120 driverKeith Packard2014-07-05
| | | | | | | This adjusts the cc1120 receive parameters to increase sensitivity at the expense of reporting many more invalid packets to the UI. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add 2400 and 9600 baud telemetry support to cc115l driverKeith Packard2014-07-05
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make APRS SSID configurableKeith Packard2014-06-22
| | | | | | | This uses the low-digit from the serial number by default, but lets the user change it if desired. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/aprs: Encode last serial number in SSID. Transmit serial in commentKeith Packard2014-06-20
| | | | | | | | This makes it a lot easier to tell which device is sending information, and to receive data from multiple devices on the same receiver. Signed-off-by: Keith Packard <keithp@keithp.com>
* Revert "altos: Write current flight state to GPS data from GPS drivers"Keith Packard2014-06-10
| | | | This reverts commit db6003d34595fbd103d5b131912b6a797254f1c5.
* altos: Write current flight state to GPS data from GPS driversKeith Packard2014-06-07
| | | | | | | This will be useful with TeleGPS which has no other packet containing flight state. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Allow cc115l driver to be built without radio power controlKeith Packard2014-06-05
| | | | | | TeleGPS just wants full power, so remove the configuration option Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch APRS altitude encoding computation to fixed pointKeith Packard2014-05-30
| | | | | | | | | APRS altitude is logarithmically encoded, so this implementation includes a fixed point log-base-2 function along with a bit of other fixed point stuff. This eliminates all floating point from TeleGPS, saving around 4kB of code space. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make MS5607 PROM a public variableKeith Packard2014-05-25
| | | | | | | This will let the fake flight code update it as necessary, without creating a new interface in ao_ms5607.c Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Expose ao_gps_set_rate from u-blox driverKeith Packard2014-05-21
| | | | | | This lets applications set the desired GPS update rate to reduce power usage Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Fix cc115l debug buildKeith Packard2014-05-21
| | | | | | | New compiler warning flags and moving to the nxp require a few minor changes in the code to make it work. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Allow APRS to send just battery voltageKeith Packard2014-05-21
| | | | | | Don't require apogee and main voltages as well Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make quadrature debounce per-pin rather than per-deviceKeith Packard2014-05-15
| | | | | | | Debouncing per-pin means we don't lose transitions, which makes counting a lot more precise. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add LED test command to pca9922 driverKeith Packard2014-05-12
| | | | | | This lets you control the LEDs from the command line to test things. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Simplify quadrature trackingKeith Packard2014-05-09
| | | | | | | | | | | | Set the timer to 200Hz for a 5ms debounce interval. Then, simply look for transitions ending in both bits in the encoder being off, which indicates the the encoder is resting in a detent. If bit '2' is turning off, the encoder was rotated clockwise, otherwise the encoder was rotated counter clockwise. This is a lot more reliable, although still not perfect. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Clean up trailing whitespace in ao_pad.cKeith Packard2014-05-08
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: ublox driver always offers course data when it has a fixKeith Packard2014-05-08
| | | | | | | Set the AO_GPS_COURSE_VALID bit to signal that this part of the GPS data is valid. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: For telelco discovery packets, retry 5 times with shorter timeoutKeith Packard2014-04-30
| | | | | | | | A timeout of 10ms is more than enough to receive a query packet, but if we miss it during device discovery, it's a pain, so retry 5 times to make sure we find everyone. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Put locked/unlocked GPS status in APRS commentsKeith Packard2014-02-09
| | | | | | | | | | | Replace the 'S' (which marks the field showing sats in view) with either 'L' or 'U' to tell the user whether the GPS receiver is locked or unlocked. This also removes the colons in the comment field to shorten it. This makes it fit on one line of my FT1D display. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Re-send previous GPS position in APRS if lock is lostKeith Packard2014-02-09
| | | | | | | | | APRS radios often show only the last received APRS packet, which means that erasing the last known GPS position when we lose lock by sending 0/0/0 is unhelpful. Instead, just send the last known position, and make sure that we send 0/0/0 before we're locked the first time. Signed-off-by: Keith Packard <keithp@keithp.com>