Jared Boone
13e4b41c1e
Trivial clean-up.
2015-12-10 16:15:18 -08:00
Jared Boone
255c568f9e
Make some Baseband/RSSIThread members private/const.
2015-12-10 16:14:30 -08:00
Jared Boone
ded33ebabd
Extract RSSIThread to separate files.
2015-12-10 16:07:21 -08:00
Jared Boone
e998014e57
Extract BasebandThread, ThreadBase to separate files.
2015-12-10 15:53:54 -08:00
Jared Boone
2808efac4c
Remove unused lambda captures.
2015-12-10 15:27:33 -08:00
Jared Boone
e8cf0b8de7
Clean up baseband/main.cpp #includes.
2015-12-10 15:22:20 -08:00
Jared Boone
a7afc58cf8
More consistent use of pass-by-ref, const in baseband code.
2015-12-10 15:18:02 -08:00
Jared Boone
82f367dfea
Move code into BasebandThread.
2015-12-10 14:41:07 -08:00
Jared Boone
83bf2a9a36
Tweak BasebandConfiguration constructors to avoid surprise type conversions.
2015-12-10 14:40:48 -08:00
Jared Boone
f369885062
Extract processor factory function.
...
A small code size reduction. I tried using std::unique_ptr, but code bloated between 150 and 400 bytes!
2015-12-10 13:21:27 -08:00
Jared Boone
ef315f0d92
Const/pass-by-reference a bunch more baseband stuff.
2015-12-10 12:36:12 -08:00
Jared Boone
3ed77af0c1
BasebandProcessor: Streamline construction of some messages.
2015-12-10 12:25:11 -08:00
Jared Boone
77aceaaf56
More BasebandProcessor pass by reference.
2015-12-10 12:17:40 -08:00
Jared Boone
14f24d8584
Move BasebandProcessor message.push() from dedicated methods to existing lambdas.
2015-12-10 12:04:43 -08:00
Jared Boone
98abc4bba8
Create baseband statistics messages on stack.
...
Code size shrank ~200 bytes with this change.
2015-12-10 11:57:57 -08:00
Jared Boone
3bed016128
BasebandProcessor interface change to pass references, not copies.
2015-12-10 11:56:16 -08:00
Jared Boone
4d52f73f6a
Move Manchester to common/.
2015-12-10 11:28:18 -08:00
Jared Boone
eb1402764e
Move ERT packet type to its rightful place.
...
No longer mixed up with Message types.
2015-12-08 16:19:27 -08:00
Jared Boone
7de187e267
Move ERT, AIS packet code to common/.
2015-12-08 16:08:20 -08:00
Jared Boone
2e81d1f5b7
Separate ERT packet and UI code.
2015-12-08 16:04:48 -08:00
Jared Boone
644d3837ff
Consolidate AIS Packet types.
2015-12-08 15:54:35 -08:00
Jared Boone
3e0acc9988
AIS-related namespace cleanup.
2015-12-08 15:53:17 -08:00
Jared Boone
37d7d5b273
Separate AIS packet and formatting code from app code.
2015-12-08 15:49:20 -08:00
Jared Boone
218d81fc60
Rename all the app .cpp/.hpp to have app name first.
...
Larger refactoring of filenames and namespaces imminent!
2015-12-08 15:28:33 -08:00
Jared Boone
d0d97e92cb
Rename ::Packet to baseband::Packet. Remove IPC packet types.
2015-12-08 15:15:51 -08:00
Jared Boone
280acfd227
First commit of AIS data scroller.
...
It's weird and buggy right now, but I think I can make it work sensibly.
2015-12-08 14:16:36 -08:00
Jared Boone
90a7327cd5
Clean up FieldReader and BitRemap types.
2015-12-08 14:15:15 -08:00
Jared Boone
31fdf026f2
constexpr a bunch of stuff.
2015-12-08 13:47:52 -08:00
Jared Boone
0c1c0da8a5
AIS: More simplifying of packet length/validation code.
2015-12-08 13:38:40 -08:00
Jared Boone
af74daf092
AIS Packet refactor, consolidating duplicate packet length code.
2015-12-08 11:14:00 -08:00
Jared Boone
7cded79b59
Clean up CRC class/interface, make more like boost::crc_basic.
2015-12-08 10:35:54 -08:00
Jared Boone
c38beb70e5
Only show ERT packets that pass CRC check.
2015-12-07 15:35:24 -08:00
Jared Boone
b61ed7dce2
Clean up ERT CRC code, add IDM CRC checking.
2015-12-07 15:32:26 -08:00
Jared Boone
ee1eadce5b
Fix incorrect ERT packet length().
...
Was returning number of symbols before Manchester decoding. Oops.
2015-12-07 15:31:42 -08:00
Jared Boone
f1b45d4e7f
Reinstate logging of ERT packets.
2015-12-07 15:31:01 -08:00
Jared Boone
a2df8ea599
Simplify excessively idiomatic C-ism.
2015-12-07 15:29:43 -08:00
Jared Boone
bd33e652ea
Abstract packet type/implementation details.
2015-12-07 12:35:05 -08:00
Jared Boone
b9ea7fa786
ERT CRC checking for SCM packets.
...
IDM coming as soon as I can address packet truncation...
2015-12-07 12:27:09 -08:00
Jared Boone
1c01f54717
Widen ERT baseband filter to 2.5MHz.
...
It appears this will not negatively impact the noise floor vs. benefit of receiving additional channels (0.2MHz spacing).
2015-12-07 09:59:41 -08:00
Jared Boone
2d0052fb14
Generalize ERT offset tracking a little.
2015-12-07 09:58:08 -08:00
Jared Boone
b9643dc988
Clean up ERT packet type notation.
...
Still not great, but at least repeated code is reduced.
2015-12-06 15:47:04 -08:00
Jared Boone
9e004d4754
Move ERT packet type determination earlier.
...
It'll eventually move into baseband.
2015-12-06 15:36:23 -08:00
Jared Boone
2a55030d4e
Use ert::Packet for basic packet decoding.
2015-12-06 15:32:21 -08:00
Jared Boone
51026609ce
ert::Packet parser.
2015-12-06 15:31:17 -08:00
Jared Boone
5cfd44a546
Manchester decoded symbol operator| for accessing bit value.
2015-12-06 15:22:52 -08:00
Jared Boone
85ac3fa4ac
Show selected item at bottom of visible list even if it should be off-screen.
...
Not convinced this is the most intuitive approach, but it's better than before.
2015-12-06 09:50:53 -08:00
Jared Boone
0f23736253
Whoops, don't match selected_key inside draw_entry.
2015-12-05 20:25:05 -08:00
Jared Boone
c4ad2ffe1b
Extract AIS RecentEntry painting into separate method.
...
Small steps in a larger refactor, and better selected-item-scrolls-off-the-bottom behavior.
2015-12-05 20:15:30 -08:00
Jared Boone
8fce9378cc
Extract entry list truncation.
2015-12-05 19:52:12 -08:00
Jared Boone
9791d64b50
AISView RecentEntry UI selection by encoder.
2015-12-05 14:24:41 -08:00
Jared Boone
27684069c5
Track when AISView has focus.
2015-12-05 14:23:53 -08:00
Jared Boone
1c191bcd4f
Rename AISView::log to on_packet.
2015-12-05 14:22:35 -08:00
Jared Boone
64b9bfa35f
Make MMSI-formatting function.
...
Only render nine digits, left zero pad.
2015-12-03 22:09:06 -08:00
Jared Boone
4205793b54
Clean up narrowing conversion warning.
2015-12-03 20:58:17 -08:00
Jared Boone
fbd077e91d
Restore receiver mode when View is displayed.
...
Needs refactor because on_modulation_changed() doesn't change the modulation so much as the "app" or receiver mode.
2015-12-03 20:54:18 -08:00
Jared Boone
42d13e6713
ui::OptionsField match option value by ==, not >=.
...
I think I used >= to match baseband filter bandwidth, but then the options would all have to be in increasing order to do the right thing, which is not what another developer would expect!
2015-12-03 20:53:14 -08:00
Jared Boone
2a2e65abad
Reserve length of AIS packet text std::string.
2015-12-03 20:34:30 -08:00
Jared Boone
3644bfd983
AISView displays list of most recent packets -- MMSI and name or call sign.
...
Formerly scrolling console of packets.
2015-12-03 20:34:02 -08:00
Jared Boone
0cad2847f8
LogFile pass references to reduce code size a bit.
...
Apparently the compiler isn't optimizing away copies in places I thought it would.
2015-12-03 14:08:06 -08:00
Jared Boone
bb3cb6f080
Push packet timestamping earlier in packet handling.
...
Ideally, it'd get pushed back into baseband, and baseband would correct for the length of the packet (based on preamble/access code match timestamp minus preamble/access code duration) to give the exact time the packet started.
2015-12-03 14:04:20 -08:00
Jared Boone
0909cdb31e
AIS: Add MMSI type.
2015-12-02 22:39:05 -08:00
Jared Boone
ad22eab3d2
Fix ERT console lack of CRLF.
2015-12-02 14:12:35 -08:00
Jared Boone
bfcd25d857
LogFile puts timestamp before entry, CRLF after.
2015-12-02 14:05:25 -08:00
Jared Boone
76845c4335
Extract to_string_* functions from ui_widget.
2015-12-02 13:38:17 -08:00
Jared Boone
d8c59e2ce2
Zero pad years < 1000 to four digits.
2015-12-02 13:23:29 -08:00
Jared Boone
b8ee19f8e6
AIS: Large refactor to separate packet decode from UI/log formatting.
2015-12-02 12:16:39 -08:00
Jared Boone
4baf2a06f2
Move ais_baseband code to app_ais.
2015-12-02 09:31:14 -08:00
Jared Boone
57aed55cc7
Extract LogFile, add (dumb) logging to ERT, AIS apps.
2015-12-01 22:39:27 -08:00
Jared Boone
29f2d0e50a
Move app_spectrum_analysis.hpp code to .cpp.
2015-12-01 22:07:17 -08:00
Jared Boone
d15afc9f7d
Move app_analog_audio.hpp code to .cpp.
2015-12-01 22:04:04 -08:00
Jared Boone
11e8456da0
Move app_ert.hpp code to .cpp.
2015-12-01 21:59:47 -08:00
Jared Boone
4c3b557064
Move app_tpms.hpp code to .cpp.
2015-12-01 21:53:28 -08:00
Jared Boone
61dc25e132
Move more Manchester code from .hpp to .cpp.
2015-12-01 21:47:21 -08:00
Jared Boone
1aa1286ec1
Push app_ais.hpp code into .cpp.
2015-12-01 21:44:13 -08:00
Jared Boone
ac2b62a8a7
Extract "apps".
2015-12-01 21:30:52 -08:00
Jared Boone
519f8cfebc
Extract Manchester decoder, formatter.
2015-12-01 21:28:53 -08:00
Jared Boone
9a5655ad0e
Removed extra methods.
2015-12-01 21:27:51 -08:00
Jared Boone
eb10532931
Remove SD card statuc handler in ReceiverView.
...
Wasn't doing anything useful, and probably won't.
2015-12-01 21:27:14 -08:00
Jared Boone
e9bf500bfc
Move ReceiverMode enum to receiver_model.hpp
2015-12-01 21:00:31 -08:00
Jared Boone
74d6518ea1
Rename AudioModel, AudioView to Analog*.
2015-12-01 20:55:36 -08:00
Jared Boone
c1d59b644d
Move baseband configuration to receiver mode classes.
...
Factor out the terrible switch() and clean up redundant code.
2015-12-01 20:25:57 -08:00
Jared Boone
c0db15f3e5
Replace receiver mode ordinals with enum.
2015-12-01 19:52:48 -08:00
Jared Boone
f15716a06b
Move TPMS logging to file into TPMSModel class.
2015-12-01 17:42:52 -08:00
Jared Boone
f49cdfdd99
Refactor digital mode handlers into Model and View classes.
2015-12-01 17:29:54 -08:00
Jared Boone
ec977ccd05
Implement console "\n" -> crlf() behavior.
2015-12-01 17:28:22 -08:00
Jared Boone
32319ddf9f
Manchester decoder bounds checking.
...
Return error symbol if reading past source data.
2015-12-01 16:05:23 -08:00
Jared Boone
8461b0c94e
Manchester formatting to next largest length in nibbles.
...
Prior code insisted on next largest byte, for no good reason.
2015-12-01 15:50:07 -08:00
Jared Boone
c657ee3558
Clean up handling of bool -> int.
...
C++ standard says false -> 0, true -> 1.
2015-12-01 15:45:59 -08:00
Jared Boone
641b972b3e
Type and name clean-up of Manchester formatter.
2015-12-01 15:41:51 -08:00
Jared Boone
7b9ba696e5
Reserve strings length before formatting Manchester data.
2015-12-01 15:36:09 -08:00
Jared Boone
810c65dd9c
Return Manchester formatted output in struct.
2015-12-01 15:31:59 -08:00
Jared Boone
d75f601b54
Manchester decoder into separate class.
...
Now operates directly on data, doesn't make a new pair of data/error bitsets.
2015-12-01 12:05:42 -08:00
Jared Boone
426295b93e
Remove unnecessary Manchester decode operation.
2015-12-01 11:50:29 -08:00
Jared Boone
82ff45860e
Add basic ERT (OOK) utility meter reception.
...
Extracted the Manchester formatting function for use in ERT, now also returns an indication of bits in error.
2015-12-01 11:24:48 -08:00
Jared Boone
0c36a74351
Add SD card status view to receiver UI.
2015-12-01 10:45:34 -08:00
Jared Boone
c70d95dcbe
Remove SDCardStatusMessage, replace with Signal, extract to separate files.
2015-12-01 10:38:35 -08:00
Jared Boone
600295f0db
Add Signal for callbacks within a process (code executing on one core).
2015-12-01 10:27:46 -08:00
Jared Boone
42104d217a
Broaden SD card status detail in message.
2015-11-29 15:50:58 -08:00
Jared Boone
5928086fd9
Simplify SD card mount status code.
2015-11-29 15:37:24 -08:00
Jared Boone
435824e9b5
Clean up buffer_t constructors.
2015-11-20 11:21:31 -08:00
Jared Boone
d96379dc9c
Remove extra semicolons.
2015-11-20 11:11:14 -08:00
Jared Boone
600a983d5c
Clean up complex<int16_t> -> complex<float> casting.
2015-11-20 11:01:41 -08:00
Jared Boone
85e984ed3b
Clean up complex<int8_t> -> complex<float> casting.
2015-11-19 12:42:35 -08:00
Jared Boone
060da5d227
Add ChannelDecimator decimate by 2 and no-shift options.
2015-11-19 12:24:20 -08:00
Jared Boone
ccd64f3cd9
Add function for c8->c16 decimate by two without fs/4 shift.
2015-11-19 12:20:20 -08:00
Jared Boone
8967f0eaa1
Move common matchers to PacketBuilder.
2015-11-16 10:33:50 -08:00
Jared Boone
9900c29283
Deepen BitPattern and BitHistory to 64 bits.
2015-11-16 10:33:08 -08:00
Jared Boone
4d6877ab15
Extract FieldReader to separate header so it can be reused.
2015-11-16 10:31:36 -08:00
Jared Boone
77199fb3dd
Add sdcDisconnect() to avoid HackRF mode entry crash if SD card is connected.
2015-11-13 10:55:52 -08:00
Jared Boone
6f09cf21f8
Move sdcStop() call to have symmetry with sdcStart().
2015-11-13 10:55:08 -08:00
Jared Boone
0a9da7a1d3
Store tuned frequency and modulation characteristics in TPMS log.
2015-11-11 11:56:50 -08:00
Jared Boone
8e4e33f74e
Don't show TPMS Manchester errors on LCD, truncate data to not wrap.
2015-11-11 11:56:20 -08:00
Jared Boone
19f352fa13
Log TPMS Manchester encoding errors.
2015-11-11 11:19:17 -08:00
Jared Boone
1770dff522
Finish object-izing Baseband and RSSI threads.
2015-11-11 10:54:36 -08:00
Jared Boone
4f82524e77
Another default constructor.
2015-11-11 10:30:35 -08:00
Jared Boone
d9106b6f44
Start object-ization of RSSI thread.
2015-11-11 10:11:37 -08:00
Jared Boone
19c89def75
Start to object-ize the baseband thread function.
2015-11-11 10:02:06 -08:00
Jared Boone
2c64454172
More constructor style clean-up.
2015-11-11 09:35:28 -08:00
Jared Boone
d02698a6de
Apparent bug where min/max aren't initialized from value inside the buffer bounds.
...
The fix is less than ideal, it assumes that an incoming buffer length is always >= 1.
2015-11-11 09:30:15 -08:00
Jared Boone
ebf103363c
Constructor style clean-up.
2015-11-11 09:16:20 -08:00
Jared Boone
db416fd670
Basic TPMS logging to a SD card file.
2015-11-10 15:31:46 -08:00
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
Jared Boone
24e398ca62
Add HackRF mode explanation text.
2015-09-01 20:23:11 -07:00
Jared Boone
4846557f12
Missed spots when renaming REVISION to GIT_REVISION.
2015-09-01 14:21:40 -07:00
Jared Boone
5d8c636f40
Halt M4 right after sending M0 the shutdown message.
...
Addresses issue #55 .
2015-09-01 13:49:09 -07:00
Jared Boone
75d9aa9c73
Remove extra CPLD code internal signals.
2015-08-27 16:54:38 -07:00
Jared Boone
19764ce693
Swap function of P2_8, P2_4 in schematic, firmware, CPLD.
...
gpio_unused: P2_4 -> P2_8
gpio_lcd_rd: P2_8 -> P2_4
P2_8 is a very long line, shared with DFU button.
Revise schematic to match CPLD signal names.
2015-08-27 16:54:38 -07:00
Jared Boone
3fea68d777
Adjust wideband specan gain to match other modes.
2015-08-27 14:57:05 -07:00
Jared Boone
b13081696d
Simplify MessageQueue pop() usage.
2015-08-27 14:35:17 -07:00
Jared Boone
d8b3b4cb6b
Check queue empty only once when reading messages.
...
There was a second is_empty() call hidden in the pop() call, so the while(condition) was redundant.
2015-08-27 14:27:29 -07:00
Jared Boone
5d9079f87f
Stop streaming when changing baseband configuration.
...
Without, the baseband would get confused.
2015-08-27 14:07:15 -07:00
Jared Boone
e751e10e45
Add wideband spectrum processor.
2015-08-27 13:57:31 -07:00
Jared Boone
23ac04ad56
Make channel spectrum members protected, not private.
2015-08-27 13:51:55 -07:00
Jared Boone
c7907e948c
Extract FSKProcessor into separate files.
2015-08-27 13:31:39 -07:00
Jared Boone
ffe829cf67
Extract WidebandFMAudio into separate files.
2015-08-27 13:19:34 -07:00
Jared Boone
7c5db55f8f
Extract NarrowbandFMAudio into separate files.
2015-08-27 13:14:45 -07:00
Jared Boone
e246ea2c39
Extract NarrowbandAMAudio class into separate files.
2015-08-27 13:07:07 -07:00
Jared Boone
6bf61cbe88
Extract BasebandProcessor into separate files.
2015-08-27 11:11:08 -07:00
Jared Boone
b0e9afe26c
Add missing #includes.
2015-08-27 11:10:44 -07:00
Jared Boone
04d05368c7
Push static variables and spectrum calc into BasebandProcessor.
2015-08-27 10:48:29 -07:00
Jared Boone
de0777f476
Extract FMSquelch into separate files.
2015-08-27 09:59:03 -07:00
Jared Boone
b904971ef2
Extract IIR filter configurations into separate file.
2015-08-27 09:58:37 -07:00
Jared Boone
c92bf12fbd
Extract ChannelDecimator into separate files.
2015-08-27 09:49:14 -07:00
Jared Boone
035ec84f04
Wrap MessageQueue.push() with mutex.
...
This addresses issue #61 , occasional FIFO/data corruption. With the mutex, any thread on one core can write to the FIFO. But still, only one thread on one core should read from the FIFO.
2015-08-26 14:18:03 -07:00
Jared Boone
7937ea7327
Enable DMB instruction at end of FIFO data copy.
...
Can't hurt to make sure FIFO and buffer state are flushed before returning to caller...
2015-08-26 14:13:51 -07:00
Jared Boone
4974774f82
Simplify PLL math when correcting for PPM.
2015-08-25 17:56:03 -07:00
Jared Boone
98773cb62a
Make GIT_REVISION value available within code.
...
Addresses issue #59 .
No idea what it'll do if the commit is also tagged as a release...
2015-08-25 16:33:52 -07:00
Jared Boone
4fe145b61d
Remove application kludge to strip DFU of header.
...
Strip the header in in the Python SPI image generator, instead.
2015-08-25 15:11:22 -07:00
Jared Boone
f7ced7a823
Support Python 3.x in make_spi_image.py.
2015-08-25 14:56:50 -07:00
Jared Boone
dfe0bd7366
Generate SPI flash image with Python, not dd/cat/head.
...
Addresses issue #42 .
Windows users now stand a chance of being able to build an image, and all these zero-byte HackRF binary issues should go away.
2015-08-25 14:30:38 -07:00
Jared Boone
8f326e2d8e
Use PPB correction to adjust clock generator XTAL PLLA frequency.
...
Addresses issue #40 .
2015-08-24 12:11:33 -07:00
Jared Boone
fe7dcdc613
Function to adjust clock generator XTAL PLL frequency.
...
Needed to switch PLLA to operate in fractional mode.
2015-08-24 12:09:11 -07:00
Jared Boone
3a96c04aa7
Implement, use configuration for FM demod deviation.
2015-08-21 09:19:08 -07:00
Jared Boone
fa275156ed
Move FSKPacketMessage to stack.
2015-08-21 09:18:21 -07:00
Jared Boone
589cb47cc6
Move M4 shutdown() next to init().
2015-08-20 20:40:46 -07:00
Jared Boone
672284080b
Extract M4 IPC IRQ code into separate file.
2015-08-20 20:39:08 -07:00
Jared Boone
11561659b4
Reset the M0 after the M4 is running HackRF firmware.
2015-08-20 20:26:36 -07:00
Jared Boone
690c3c98db
Add Shutdown message, plumbing to send and handle.
2015-08-20 18:03:49 -07:00
Jared Boone
15791e345d
Make baseband event loop methods private.
2015-08-20 17:57:59 -07:00
Jared Boone
2efbd337bd
Provide a way to exit application event loop.
2015-08-20 17:56:47 -07:00
Jared Boone
9742a058e9
Move event loop into dispatcher, provide a way to exit.
2015-08-20 17:56:19 -07:00
Jared Boone
5978c99c31
Add API to stop HAL SysTick counter.
2015-08-20 17:51:07 -07:00
Jared Boone
bd791a8512
Remove code replaced by memory_map.hpp.
2015-08-20 17:50:20 -07:00
Jared Boone
4b7780f5c6
Move _KiB and _MiB user-defined literals to utility.hpp.
...
Where I put all the stuff I don't know where to put.
2015-08-20 17:15:51 -07:00
Jared Boone
1c3e45917c
Rework to make use of declared memory map regions.
2015-08-20 17:11:08 -07:00
Jared Boone
05690b20ed
Created memory_map header.
...
Knowledge of memory map will be consolidated here.
2015-08-20 17:09:11 -07:00
Jared Boone
e9c47ff91a
Remove M0 ldscript NVRAM region.
...
I misunderstood the documentation. It's not NVRAM (backed up by VBAT), it just survives a deeper core sleep than other RAM does.
2015-08-20 16:03:14 -07:00
Jared Boone
52e8093618
Generalize FIFO to specify FIFO size as 2^K.
...
Configure baseband queue to be larger (4K) than application queue (2K).
2015-08-20 15:59:25 -07:00
Jared Boone
4126f1ab1f
Change IPC to exchange data, not pointers.
2015-08-20 13:13:12 -07:00
Jared Boone
f99016d78f
Tweak cast to C++ style.
2015-08-15 15:40:55 -07:00
Clayton Smith
25c2e612c0
Fix a narrowing conversion warning.
2015-08-15 17:56:30 -04:00
Jared Boone
f2cabadf60
Review application initialization order.
...
Group related things together.
2015-08-14 22:28:28 -07:00
Jared Boone
49b91d9c5d
Move event loop into EventDispatcher.
2015-08-14 22:01:20 -07:00
Jared Boone
d5ebb9ef1e
Remove more dead code and comments.
2015-08-14 21:58:54 -07:00
Jared Boone
aa801ada60
Move code comments to project Wiki.
2015-08-14 21:54:03 -07:00
Jared Boone
b1a4418f06
Push more widget painting code into ui::Painter
...
Hide knowledge of damage tracking strategy.
2015-08-14 21:36:51 -07:00
Jared Boone
2ebb41c0e6
Remove dead, commented code.
2015-08-14 21:35:48 -07:00
Jared Boone
872c998ff1
Move widget tree painting to ui::Painter.
...
Still doesn't seem like the right place, but better than the event dispatcher!
2015-08-14 21:27:46 -07:00
Jared Boone
a9bb7c96e5
Move UI dirty tracking out of application main.cpp.
2015-08-14 21:17:23 -07:00
Jared Boone
fa465c14c4
Extract RTC interrupt handler into separate files.
2015-08-14 20:57:40 -07:00
Jared Boone
32312a6cfb
Can't use context() in ui::Widget constructor, move use elsewhere.
...
TODO: Seems like a design flaw to me... Either eliminate need for context(), or pass into constructors.
2015-08-14 17:52:29 -07:00
Jared Boone
a7226820d0
Hide implementation of MessageHandlerMap.
2015-08-14 17:31:23 -07:00
Jared Boone
2aa8ae0d1f
Move FSKPacket message handler to ReceiverView.
2015-08-14 16:46:32 -07:00
Jared Boone
c44357a16a
Remove dead, commented-out code.
2015-08-14 16:38:10 -07:00
Jared Boone
02aab9b4e2
Application main() refactoring to group relevant bits.
2015-08-14 15:52:11 -07:00
Jared Boone
1713c82841
Move ChibiOS init comments into Wiki.
2015-08-14 12:23:49 -07:00
Jared Boone
4e0de9c4ad
Fix clock configuration for M4.
...
M0 launches baseband, so M4 clock can be set to PLL1. Provide a way to configure that per project, set to correct values for baseband project.
2015-08-14 12:21:49 -07:00
Jared Boone
66320c39d4
Restore missing halInit() call during M4 __late_init().
2015-08-14 12:20:45 -07:00
Jared Boone
14ada9e132
Push channel filter data into BasebandProcessor.
2015-08-04 16:48:15 -07:00
Jared Boone
caef87fe90
Refactor IIRBiquadFilter to separate configuration structure.
2015-08-04 15:00:38 -07:00
Jared Boone
76df4f0369
Extract magnitude_squared to utility.
2015-08-04 14:08:15 -07:00
Jared Boone
de0c884b67
Remove test code.
2015-08-04 13:52:04 -07:00
Jared Boone
eea589bd98
Extract stats collectors into separate files.
2015-08-04 12:03:30 -07:00
Jared Boone
efaf13d2d1
Extract complex16_mag_squared_to_dbv_norm to utility.
2015-08-04 12:03:10 -07:00
Jared Boone
d855336985
Persist tuned frequency.
...
w00t!
2015-08-04 10:31:03 -07:00
Jared Boone
4870f0015b
Extract PPB reset value to a constant.
...
Group with related constants.
2015-08-04 10:29:54 -07:00
Jared Boone
52ba9af1c7
Make persistent memory data_t types explicit.
...
I want the storage types to be reliable, separate from the interface types.
2015-08-04 10:29:10 -07:00
Jared Boone
11c786c4fb
Change set_correction_ppb argument to const.
2015-08-04 10:28:23 -07:00
Jared Boone
45d26abf10
Use correct memory region for persistent storage.
...
Turns out 0x10088000 - 0x10089fff is not the right place. It's 0x40041000, and is only 256 bytes!
Move PPM to correct place, change representation to PPB for finer control.
Reset PPB value to initial value if read value out of bounds.
Clip PPB value on write to permitted bounds.
Contributes to resolution of issue #11 .
2015-08-04 10:03:18 -07:00
Jared Boone
255de16d3e
Use head/cat, /dev/zero to pad HackRF firmware
...
dd approach didn't work for at least one user. Resolves #42 .
2015-08-02 11:22:10 -07:00
Jared Boone
985cbb874c
Change default receiver frequency.
...
Remove comments.
2015-08-02 09:38:49 -07:00