Jared Boone
ed585d2c15
Enable FatFs string functions.
2015-11-10 15:30:43 -08:00
Jared Boone
987ea3555d
SD card detection and filesystem mounting.
2015-11-10 15:24:42 -08:00
Jared Boone
9f6c495fef
Add TPMS initial demodulator implementation.
...
Right now, 2FSK, 19200 baud, +/-38400Hz deviation. No effort is made to check CRC/checksums or decode packets.
2015-11-10 15:19:56 -08:00
Jared Boone
6cdef7026d
Remove spectrum window-presum due to lack of code RAM.
2015-11-10 15:16:27 -08:00
Jared Boone
e6351ca066
Improve comment accuracy.
2015-11-10 15:11:19 -08:00
Jared Boone
99871dcb84
Move a few member variables to stack/constants.
2015-11-10 15:10:52 -08:00
Jared Boone
791b2a9762
Remove now-unused FSKConfiguration message.
2015-11-10 15:07:20 -08:00
Jared Boone
981c2fbfbd
Complete FSKProcessor's trip to being AISProcessor.
2015-11-10 15:04:38 -08:00
Jared Boone
111a5f10c0
Add some baseband constructors.
...
Some of them I think I took out earlier...
2015-11-10 14:04:50 -08:00
Jared Boone
add6171410
Move BasebandStatistics from heap to stack.
2015-11-10 13:59:17 -08:00
Jared Boone
0789d50fdf
Rework BitHistory, BitPattern, PacketBuilder.
...
Templatize PacketBuilder to optionally bit unstuff, and have flexible packet termination behavior.
2015-11-09 14:38:09 -08:00
Jared Boone
0b522abbc1
Rename AIS packet handler variables for consistency with spec.
2015-11-09 14:35:06 -08:00
Jared Boone
850c847bbf
Trap attempts to register more than one message handler at a time.
2015-11-09 11:57:38 -08:00
Jared Boone
47a3ffb15a
Insulate ui::Context a bit from its clients.
...
Add accessor methods.
2015-11-09 11:56:40 -08:00
Jared Boone
85383e488b
std::fma not necessary with proper compiler options.
...
std::fma isn't available on Ubuntu 15.04 arm-gcc, apparently. Hence my reviewing this code...
2015-11-08 16:33:32 -08:00
Jared Boone
5dcca89172
FSKProcessor: remove separate channel filter.
...
RRC filter alone will do the trick!
2015-11-07 14:10:44 -08:00
Jared Boone
fc037c739a
Comment about correct MatchedFilter usage.
...
Because the filter expects a combined translate/rotate and low-pass filter in the taps, the taps must be a multiple of the translate sinusoid period.
2015-11-07 11:27:31 -08:00
Jared Boone
9e694ce836
AIS decoding and really bad UI.
...
The decoder needs a serious refactoring/decoupling.
The UI just dumps bits of the received packets into a console window, whcih scrolls too quickly in an AIS-dense area with a good antenna.
2015-11-06 13:53:04 -08:00
Jared Boone
a366b3ac4f
CRC class.
...
Has some more efficient code, commented out because I was having trouble getting it to work. However, it may have been due to the particular data I was trying to decode and CRC-validate.
2015-11-06 13:49:59 -08:00
Jared Boone
ae225e8c3b
Further MatchedFilter optimization using algebraic identities and stuff.
...
Can't stop premature optimization!!!
2015-11-06 09:40:05 -08:00
Jared Boone
100761481e
Fix inaccurate comment.
2015-11-06 09:40:05 -08:00
Jared Boone
3d5c8056d9
Premature optimization of MatchedFilter::shift_by_decimation_factor().
2015-11-06 09:40:05 -08:00
Jared Boone
4afcc83873
Mark MatchedFilter::is_new_decimation_cycle() as const.
2015-11-06 09:40:05 -08:00
Jared Boone
3c33e20156
Rename MatchedFilter::decimation_factor.
2015-11-06 09:40:05 -08:00
Jared Boone
7a59823211
Stop computing channel spectrum during FSK demod.
...
Data is unused, as screen is displaying decoded packets.
2015-11-06 09:40:05 -08:00
Jared Boone
ddd34793a6
Default constructors and configure methods for baseband classes.
2015-11-06 09:40:05 -08:00
Jared Boone
5236a858d0
Change Field.read to const.
2015-11-06 09:40:04 -08:00
Jared Boone
a33aa26bf5
Change header guard name.
2015-11-06 09:40:04 -08:00
Jared Boone
51df92a05a
Rename baseband_ais -> ais_baseband.
...
So that ais_baseband and ais_application filenames can be sorted near each other.
2015-11-06 09:40:04 -08:00
Jared Boone
26c23dc8a0
Use new FIR decimation in FSK demodulator.
...
Reduces FIR calculation effort when output samples are skipped at FIR filter, not after.
2015-11-06 09:40:04 -08:00
Jared Boone
86b068be62
Early calculation to reduce pressure on registers.
2015-11-06 09:40:04 -08:00
Jared Boone
a074e7d8d8
Remove commented code.
2015-11-06 09:40:04 -08:00
Jared Boone
424c0eac3f
FIRAndDecimateBy2Complex: expose decimation_factor, bring work function into class.
2015-11-06 09:40:04 -08:00
Jared Boone
cde15e4271
Generalize fir_and_decimate_by_2_complex_fast.
...
Permit decimation_factors other than 2.
Permit tap counts != 64 (but still must be multiple of 8).
Half the amount of tap memory required.
Performance is significantly degraded due to greater flexibility -- most likely due to separate sample buffer shift phase, instead of performing shift during output sample calculation.
2015-11-06 09:40:04 -08:00
Jared Boone
be78ed657f
Remove taps_count template arg for FIRAndDecimateBy2Complex.
...
Use heap to allocate samples and taps buffers, so filters of different lengths can be supported.
2015-11-06 09:40:04 -08:00
Jared Boone
0f73d6061a
Remove old decimating FIR code.
2015-11-06 09:40:04 -08:00
Jared Boone
015e5516d5
Update/consolidate AIS RRC matched filter taps.
2015-11-06 09:40:04 -08:00
Jared Boone
be94c9fa9b
Switching between waterfall and console mode.
...
Also remove an unused Console constructor.
2015-11-06 09:40:03 -08:00
Jared Boone
d0f35cf89d
Rework spectrum/console UI clearing and resetting.
2015-11-06 09:40:03 -08:00
Jared Boone
dc30911e0f
Check for widget != nullptr before add/remove child.
2015-11-06 09:40:03 -08:00
Jared Boone
dab801e167
AIS RX tweak of clock recovery constant for better performance.
2015-11-06 09:40:03 -08:00
Jared Boone
58b97dea68
AIS RX performance improved with 32-tap RRC.
2015-11-06 09:40:03 -08:00
Jared Boone
f82fd1f8d7
Tease apart utility.hpp, other header dependencies.
...
Trying to get a host-testable FSK demodulator, and finding a lot of M4- and ChibiOS-specific code is getting included. Boo.
2015-11-06 09:40:03 -08:00
Jared Boone
e049097f49
Remove spurious commented code.
2015-11-06 09:40:03 -08:00
Jared Boone
0a7ac153a7
AIS RRC taps updated, more precision, corrected frequency shift.
2015-11-06 09:40:03 -08:00
Jared Boone
338983e7ae
Remove unused negative-shifted RRC filters.
2015-11-06 09:40:03 -08:00
Jared Boone
4aae77f565
MatchedFilter improvements
...
Use single set of taps for positive and negative filters.
Reverse taps (since new samples are pushed into buffer from the high end).
Make complex multiply explicit to avoid fancy but irrelevant arithmetic checks.
Compute negative filter from conjugation of positive filter taps.
Move filter power and difference calculations into MatchedFilter.
2015-11-06 09:40:03 -08:00
Jared Boone
ab28639a3d
Use std::move to move samples in buffer.
...
Yes, std::rotate works, but it's fancy and does unnecessary work.
2015-11-06 09:40:02 -08:00
Jared Boone
4141d6fe0f
Untemplate MatchedFilter, a different way.
2015-11-06 09:40:02 -08:00
Jared Boone
fe94cfa45a
De-std::vector MatchedFilter, was chewing up far too much memory.
2015-11-06 09:40:02 -08:00
Jared Boone
3e9f0971e1
Assert that FSKConfiguration size is the same between application and baseband binaries.
2015-11-06 09:40:02 -08:00
Jared Boone
64ed539554
Change LinearResampler.advance to external use only.
2015-11-06 09:40:02 -08:00
Jared Boone
4ed385d15e
Prioritize PacketBuilder found_end_flag() over packet_truncated().
2015-11-06 09:40:02 -08:00
Jared Boone
c2e7f9a6f4
Shorten AIS training sequence match length.
2015-11-06 09:40:02 -08:00
Jared Boone
d92c962c0c
Set MatchedFilter taps with separate method.
2015-11-06 09:40:02 -08:00
Jared Boone
8198db768d
Move some MatchedFilter code to .cpp file.
2015-11-06 09:40:02 -08:00
Jared Boone
aff7865c61
Move (some) AIS bits to a separate file.
2015-11-06 09:40:02 -08:00
Jared Boone
7a5100baf1
Enlarge packet payload size 256 -> 1024 bits.
2015-11-06 09:40:01 -08:00
Jared Boone
68250b4d30
Expose weight() of FixedErrorFilter.
2015-11-06 09:40:01 -08:00
Jared Boone
474eaa8541
Template ClockRecovery for ErrorFilter type.
2015-11-06 09:40:01 -08:00
Jared Boone
9879af37d5
FixedErrorFilter constructor.
2015-11-06 09:40:01 -08:00
Jared Boone
727d4c8a1f
Const the FixedErrorFilter operator().
2015-11-06 09:40:01 -08:00
Jared Boone
93b9b9d9ef
LinearErrorFilter constructor.
2015-11-06 09:40:01 -08:00
Jared Boone
57db6a6367
Ignore more initial bits of AIS training sequence.
2015-11-06 09:40:01 -08:00
Jared Boone
37b1d7cf2f
Remove payload_length from PacketBuilder, etc.
2015-11-06 09:40:01 -08:00
Jared Boone
142617ad94
Silence Clang warning.
2015-11-06 09:40:01 -08:00
Jared Boone
cf3bff3b03
Decouple PacketBuilder PayloadHandler function from method type.
2015-11-06 09:40:01 -08:00
Jared Boone
1bdad62496
Simplify PacketBuilder pattern matching and symbol accumulation.
2015-11-06 09:40:00 -08:00
Jared Boone
36689f5c45
Refactor bit pattern matching.
...
Remove AccessCodeCorrelator, Unstuff classes.
2015-11-06 09:40:00 -08:00
Jared Boone
f918a774b7
Address implicit cast compiler warnings.
2015-11-06 09:40:00 -08:00
Jared Boone
0bc8f551de
Use matched filter for AIS GMSK demodulation demo.
...
Less than optimal for plain FSK, but flexible enough to also support GFSK/GMSK. Not at all optimized for SIMD instructions, so may not perform adequately at Bluetooth/GSM rates.
2015-11-06 09:40:00 -08:00
Jared Boone
a9c190b6bb
Matched filter implementation.
...
Essentially a complex FIR filter that's more flexible than the ones already in the code base. Refactor?!
2015-11-06 09:40:00 -08:00
Jared Boone
6499de39bf
Shorten AIS packet to expected data + FCS length.
2015-11-06 09:40:00 -08:00
Jared Boone
bd76f0e13b
Note to try different -mcpu= for LPC43xx Cortex-M0.
2015-11-06 09:40:00 -08:00
Jared Boone
e9f28f9ef3
Provide configuration of symbol unstuffing.
2015-11-06 09:40:00 -08:00
Jared Boone
a00fcbaa8f
Unstuffing pattern length of zero should never match.
2015-11-06 09:40:00 -08:00
Jared Boone
05badaddda
Put symbol coding into PacketBuilder.
...
Removes stuffing symbols before placing them into packet buffer.
2015-11-06 09:40:00 -08:00
Jared Boone
c936e09702
Add bit unstuffing algorithm.
...
For use in AIS. Probably useful elsewhere, too...
2015-11-06 09:39:59 -08:00
Jared Boone
31ff13f1c0
Un-const Message in message handler interfaces.
...
I want to modify in place the messages that are received. Naughty, but oh well.
2015-11-06 09:39:59 -08:00
Jared Boone
5469a3a31d
Get ui::Console to a working state.
2015-11-06 09:39:59 -08:00
Jared Boone
5c31e803c8
Change interface to AccessCodeCorrelator, inline in header.
2015-11-06 09:39:59 -08:00
Jared Boone
a3cce5632e
Complete rewrite of clock recovery, lots of refactoring.
2015-11-06 09:39:59 -08:00
Jared Boone
8b2e75a299
Add LinearResampler implementation for clock recovery.
2015-11-06 09:39:59 -08:00
Jared Boone
f13e2d32c0
Add symbol coding namespace, NRZI decoder.
2015-11-06 09:39:59 -08:00
Jared Boone
934936d3f6
Enhancements to clock recovery
...
Linearly interpolate input and delayed samples, based on phase of internal symbol clock.
2015-11-06 09:39:59 -08:00
Jared Boone
b41ff962f4
Replace std::sin() with interpolated LUT.
2015-10-14 11:10:24 -07:00
Jared Boone
291de8f869
Change channel_spectrum type to std::complex<float>.
...
Move FFT bit-reversal to complex<int16_t> -> complex<float> copy.
Change window so that adjacent bins have constant(-ish) gain.
Change window to float.
Change time domain samples to accumulate at even intervals over the FFT interval.
2015-10-14 11:10:24 -07:00
Jared Boone
882fbbef31
Add more fft_swap bit reversal functions.
2015-10-14 11:10:24 -07:00
Jared Boone
8f7e26b5c1
Break out BasebandStatsView, add main, RSSI threads.
2015-10-14 10:59:32 -07:00
Jared Boone
7f46f0d071
Add tick tracking for all baseband threads.
2015-10-14 10:44:20 -07:00
Jared Boone
aa733b1b61
Remove FSK from receiver menu. It doesn't do anything (yet).
2015-09-02 18:55:00 -07:00
Jared Boone
f91f17b9fb
Increase touch sensitivity a bit.
2015-09-02 18:48:51 -07:00
Jared Boone
9a3454d695
Touch code cleanup, stop scanning when no touch.
...
No need to change voltages on touch panel when no touch is detected. This should reduce noise a bit.
2015-09-02 18:48:38 -07:00
Jared Boone
f1ca3fe5bb
Switch RFFC5072, MAX2837 back to 40MHz reference.
...
Turns out the MAX2837 can't tune the necessary range when given a 50MHz reference. Oops.
2015-09-02 17:45:19 -07:00
Jared Boone
293337b647
Init radio in RX mode, not TX mode.
2015-09-02 17:30:16 -07:00
Jared Boone
e2bb77d756
Change wideband FFT bin filter, clean up code a bit.
2015-09-02 11:29:38 -07:00
Jared Boone
c4de9c4423
Mute audio whenever baseband mode is changed.
2015-09-01 21:05:47 -07:00
Jared Boone
c52de7abe6
Clean up baseband/RSSI streaming control.
...
Address hang-up of baseband and RSSI when switching modulation modes really fast.
2015-09-01 21:05:32 -07:00
Jared Boone
687e627dae
Mechanism to clear waterfall when switching modulations.
2015-09-01 21:04:27 -07:00
Jared Boone
d4c85bd786
Move receiver "back" button to separate row.
2015-09-01 20:38:59 -07:00