Commit Graph

384 Commits

Author SHA1 Message Date
Jared Boone
bd0ec913f5 Invert TPMS Manchester decoding, fix dependent CRC/checksums. 2016-01-20 09:02:25 -08:00
Jared Boone
5e6a76dfe7 Use a proper enum for TPMS signal type. 2016-01-18 22:28:33 -08:00
Jared Boone
9a41961aeb Store TPMS "packet type".
For now, completely dumb CRC-OK packet length, since I only handle three packet types, which differ in length.
2016-01-18 22:18:49 -08:00
Jared Boone
7ad9ad2596 TPMS packets to IDs and values. 2016-01-18 21:42:26 -08:00
Jared Boone
dbea30b9e4 Check TPMS CRCs for packets I know, don't display the rest. 2016-01-18 20:43:54 -08:00
Jared Boone
fbcf784959 Make tpms::Packet into real type. 2016-01-18 14:34:30 -08:00
Jared Boone
feec99ac6a Move TPMS packet handling to TPMSAppView.
Also rename TPMSModel to TPMSLogger, considering that's what it was *really* doing.
2016-01-18 14:21:24 -08:00
Jared Boone
32818ee9ab Introduce tpms::Packet type. 2016-01-18 13:54:07 -08:00
Jared Boone
be328c5f38 Rearrange TPMS app/UI code. 2016-01-18 13:41:19 -08:00
Jared Boone
1a280149e2 Rename TPMSView -> TPMSAppView. 2016-01-18 13:29:11 -08:00
Jared Boone
6e5e48cc7c Clear region below RecentEntries list. 2016-01-17 21:56:06 -08:00
Jared Boone
05d7e0222f Extract RecentEntries stuff to separate files. 2016-01-17 21:42:15 -08:00
Jared Boone
df3ce07c5c Template AISRecentEntriesView.
More teasing apart, not sure where this will end...
2016-01-17 20:49:41 -08:00
Jared Boone
eda6e6a5be Move AIS recent items list draw function back into class. 2016-01-17 19:08:08 -08:00
Jared Boone
fb8e5b21df Use AIS MMSI string formatter, remove right-justification. 2016-01-17 18:07:39 -08:00
Jared Boone
3ee6fd3d87 Generalize AISRecentEntries -> templated RecentEntries.
Also access Entry unique key via key().
2016-01-17 18:06:31 -08:00
Jared Boone
5a864d8d44 Generalize RecentEntries find() method name. 2016-01-17 15:56:29 -08:00
Jared Boone
fc7a7d753d Extract general File class from LogFile. 2016-01-17 14:20:02 -08:00
Jared Boone
be44c21172 Move AIS received packet count to bottom of details view. 2016-01-15 18:15:50 -08:00
Jared Boone
93aea59847 Add AIS last position timestamp to details view. 2016-01-15 18:15:34 -08:00
Jared Boone
6ead63d02d Extract timestamp formatting to string_format. 2016-01-15 18:15:05 -08:00
Jared Boone
de98dfe10b AUS consolidated lat/lon formatting. 2016-01-15 17:59:02 -08:00
Jared Boone
b5ac76afc4 Tiny code clean-up. 2016-01-15 17:58:27 -08:00
Jared Boone
8fd8815e95 Remove irrelevant comments. 2016-01-15 16:00:21 -08:00
Jared Boone
cb5f563b92 Push more common AIS lat/lon formatting into common function. 2016-01-15 15:59:04 -08:00
Jared Boone
8fa8a26298 Read SD card status in SDCardStatusView constructor.
View was not showing correct status if card was present at boot.
2016-01-15 15:31:32 -08:00
Jared Boone
5ddb99237e Move AIS entry details "done" button down a bit. 2016-01-15 15:26:04 -08:00
Jared Boone
f3989050e8 Clean up AIS lat/lon types and formatting. 2016-01-15 15:25:32 -08:00
Jared Boone
1e92d416c7 More AIS position report detail. 2016-01-15 15:21:45 -08:00
Jared Boone
70d349e1a7 Change default AIS navigational status to "unknown". 2016-01-15 13:39:40 -08:00
Jared Boone
8603c567ca Unjustify AIS RX packet count. 2016-01-15 13:25:17 -08:00
Jared Boone
f292d5038a Set AISRecentEntryDetailView dirty when entry changes. 2016-01-15 11:39:39 -08:00
Jared Boone
e163ed7463 Update recent entry detail when recent entry changes.
This doesn't feel like the right implementation, but I'm feeling impatient today...
2016-01-15 11:38:49 -08:00
Jared Boone
c4f7d9bf54 Return updated AIS RecentEntry. 2016-01-15 11:38:09 -08:00
Jared Boone
19e3b273ad Expose current RecentEntry from detail view. 2016-01-15 11:37:37 -08:00
Jared Boone
089ef25df9 Draw AIS entry details. 2016-01-15 11:23:28 -08:00
Jared Boone
aa249cbad4 Add AIS detail view. 2016-01-14 22:39:58 -08:00
Jared Boone
b1707298b7 Extract weird range-of-entries algorithm out of view. 2016-01-14 11:49:19 -08:00
Jared Boone
f8d9cb318d Prevent AISAppView painting.
View is always filled with children, no need to clear background before painting children.
2016-01-14 09:56:06 -08:00
Jared Boone
9fd93b0af6 Remove redundant focus tracking code. 2016-01-14 09:45:29 -08:00
Jared Boone
6e0aa79d44 Move app-level config to new AISAppView class. 2016-01-14 09:41:58 -08:00
Jared Boone
1f2b28b2b8 Add AISAppView. 2016-01-14 09:30:23 -08:00
Jared Boone
fc16bc7867 Rename AISView to AISRecentEntriesView.
Coming soon, top-layer AISAppView.
2016-01-14 09:19:16 -08:00
Jared Boone
bd07e4e7e5 Modify LogFile to open/close file on SD card status.
Previously, would only open on construction, which was only when the receiver mode changed, which wasn't all that useful.
2016-01-13 23:11:19 -08:00
Jared Boone
30ca545b52 Expose current SD card status. 2016-01-13 23:08:22 -08:00
Jared Boone
8a30003ab6 Move entry update code into AISRecentEntry. 2016-01-13 22:27:30 -08:00
Jared Boone
8efeb049ca Use std::begin(), std::end() where appropriate. 2016-01-13 18:06:45 -08:00
Jared Boone
af8630a6f3 Dedupe code, call AISRecentEntries::find_by_mmsi(). 2016-01-13 18:04:50 -08:00
Jared Boone
3df003a678 Rename AISRecentEntries::find -> find_by_mmsi. 2016-01-13 18:04:04 -08:00
Jared Boone
2888257167 Extract AISRecentEntries from AISView. 2016-01-13 18:01:38 -08:00
Jared Boone
01741f3c7c Rename AISModel to AISLogger.
That's really what it is. Also move receiver initialization to AISView. It'll eventually move further out to an AISApp, once I figure out what an App looks like...
2016-01-13 17:05:19 -08:00
Jared Boone
8c34e116af Remove Signal use, register message handler in View.
Changed my mind from earlier commit...
2016-01-13 17:00:53 -08:00
Jared Boone
94b73d7825 AISView constructors out of header. 2016-01-13 16:44:01 -08:00
Jared Boone
f8a063312c AISModel receive packets from baseband, notifies AISView.
Use Signal class to distribute packets to multiple listeners.
2016-01-13 16:32:56 -08:00
Jared Boone
9cab3c9978 Remove message_map from Context.
It doesn't belong in a display/rendering context object, it has much broader significance, mostly distributing messages via the M4->M0 IPC mechanism.
2016-01-13 15:46:04 -08:00
Jared Boone
d380ffe52b Extract AIS record renderer from AISView. 2016-01-13 11:56:23 -08:00
Jared Boone
a29b76ac38 Pull AIS record types out of AISView. 2016-01-13 11:52:39 -08:00
Jared Boone
4b2157a938 Push AIS list item draw style into render method. 2016-01-13 11:43:21 -08:00
Jared Boone
f06d5989db Move EventDispatcher code out of .hpp. 2016-01-12 22:20:13 -08:00
Jared Boone
731cea1b96 Move event.* code into event_m[04].*.
Slightly more duplication of code now. Need a base class...
2016-01-12 22:00:42 -08:00
Jared Boone
e73a9f98a1 Move EventDispatcher code into event_*.hpp.
More code redistribution coming shortly...
2016-01-12 21:49:29 -08:00
Jared Boone
146caaab6f Consolidate baseband disable code. 2016-01-10 11:10:13 -08:00
Jared Boone
d9bfaaf805 Stop baseband streaming when switching radio configuration.
Probably unnecessary, but feeling paranoid about changing sample rates while there's a processor actively handling samples, and potentially maxing out the M4 core.
2016-01-10 11:01:54 -08:00
Jared Boone
d821afc60d Spectrum streaming control, spectrum attributes back in each frame.
TODO: This feels kinda complex, and there's some repeated Processor code that needs to be refactored into a base class.
2016-01-10 10:42:20 -08:00
Jared Boone
0647f26707 Move SGPIO configuration and control to baseband firmware.
Addresses long-standing and annoying bug where SGPIO DMA channel would not disable -- and not configure cleanly next time it was needed. My theory is that the DMA channel couldn't disable until it got a request from the peripheral, and sometimes the peripheral was disabled before that last request.

Anyway, the baseband firmware should control the SGPIO, methinks, despite the impact on baseband code size.
2016-01-10 10:23:39 -08:00
Jared Boone
43d6098c48 Move baseband_sgpio.* to common/.
It'll soon be used by M4 code, not M0. SGPIO baseband streaming needs to be tightly controlled by... the baseband!
2016-01-09 17:57:37 -08:00
Jared Boone
c3167ac27c Missing #includes. 2016-01-09 12:17:17 -08:00
Jared Boone
7710b2d1fa ChannelSpectrumConfig message subsumes FIFONotify.
Separate channel spectrum config from spectrum data. This will permit sending config info only when necessary.
Use type information of ChannelSpectrum to statically define number of FFT bins elsewhere.
TODO: Posting configuration message way too often. Fixing that is the next step.
2016-01-06 12:10:30 -08:00
Jared Boone
ba33cc737d Transmit DisplayFrameSync message, handle in WaterfallSpectrum.
More kludginess, especially around initialization and timing. But it addresses the flickering lines of pixels at the bottom of the waterfall scroll area!
2016-01-06 11:36:57 -08:00
Jared Boone
aaa1bc3a09 Transmit ChannelSpectrum data through separate FIFO.
Allows handling of data during LCD "vertical retrace", independent of other baseband->application messages. A bit kludgy still...
2016-01-06 11:34:41 -08:00
Jared Boone
c1e5577669 Eliminate duplicate code between event_m4.hpp, event.hpp.
event.* is common code, _m0 and _m4 contain specific event mask definitions.
2016-01-04 12:54:05 -08:00
Jared Boone
0fe5409357 Move M4TXEVENT interrupt control into event handler run(). 2016-01-04 12:15:35 -08:00
Jared Boone
69b258cc2b Consolidate event handler code, including IRQ. 2016-01-04 12:15:10 -08:00
Jared Boone
b058c0fe00 Consolidate M0-specific code. 2016-01-04 12:07:30 -08:00
Jared Boone
b5aa2b205f Implement AMConfigureMessage from M0 to M4. 2016-01-03 14:31:39 -08:00
Jared Boone
f2f7032615 Wideband FM configuration messages from M0. 2016-01-03 13:38:55 -08:00
Jared Boone
7496c2aced Send NBFM configuration message from M0 to M4. 2016-01-03 12:47:22 -08:00
Jared Boone
df593c2f0f Run codec at 1 x baseband sample rate. Do not use CPLD decimator.
Codec performance appears to be unaffected by <8MHz sample rate. Saves a bit of power, eliminates dependency on CPLD decimation feature.
2015-12-29 10:55:55 -08:00
Jared Boone
b38338efc0 Keep MAX2837 in standby so temperature can be read.
I think this won't significantly impact power consumption.
2015-12-17 20:59:21 -08:00
Jared Boone
1146d1fa06 Clean up temperature sensor rendering. 2015-12-17 20:36:58 -08:00
Jared Boone
188f692195 Center temperature graph in view. 2015-12-17 12:18:25 -08:00
Jared Boone
c3116eac63 Use reference to temperature logger, more concise. 2015-12-17 12:16:26 -08:00
Jared Boone
c92138f4b3 Extract calculation of temperature from raw sensor value. 2015-12-17 12:14:28 -08:00
Jared Boone
146a06b0d1 Method to read TemperatureLogger record capacity. 2015-12-17 12:12:22 -08:00
Jared Boone
17d405ccec Weird syntax burp on my part. 2015-12-17 10:30:40 -08:00
Jared Boone
3151100e50 Correct aesthetic typo in MAX2837 register defaults. 2015-12-16 22:37:55 -08:00
Jared Boone
86edf01def Quick and dirty temperature logger, debug view of temp vs. time. 2015-12-16 22:36:51 -08:00
Jared Boone
d34499d920 Remove ui::BasebandBandwidthField. 2015-12-16 22:29:29 -08:00
Jared Boone
7a4604e24e Move code out of ui_spectrum.hpp. 2015-12-16 19:33:30 -08:00
Jared Boone
4ce27f51d4 Add WM8731 registers view. 2015-12-14 12:09:31 -08:00
Jared Boone
ee3a77f32c Center RegistersWidget painting. 2015-12-14 11:47:43 -08:00
Jared Boone
56c3167156 Move RegistersWidget/Views methods to .cpp. 2015-12-14 11:30:24 -08:00
Jared Boone
2ee072aa7b Invert register number column colors in RegistersWidget. 2015-12-14 11:24:48 -08:00
Jared Boone
a340cbb74b Make NavigationView an implicit first argument to any instance pushed onto nav stack. 2015-12-14 11:18:59 -08:00
Jared Boone
0828c66b8a Move default constructor to .hpp. 2015-12-14 11:12:12 -08:00
Jared Boone
969d9bd070 Use std::unique_ptr inside NavigationView. 2015-12-14 11:11:49 -08:00
Jared Boone
18c4672ba2 Clean up navigation stack alloc/delete sequence. 2015-12-14 10:52:08 -08:00
Jared Boone
97f29f8336 Clean up UI navigation push constructor scheme. 2015-12-14 10:22:42 -08:00
Jared Boone
a1aa6ecdbf Eliminate per-device Views and RegisterWidgets, virtual methods.
Nice code size improvement, despite supporting three device register sets instead of just one.
2015-12-13 21:28:39 -08:00
Jared Boone
a0fbfcf6a2 Consolidate code and improve reuse between RegistersWidgets. 2015-12-13 13:22:09 -08:00
Jared Boone
94805285e2 Remove RegisterMap accessors. 2015-12-13 13:20:22 -08:00
Jared Boone
2fe1285c11 Un-inline register read/write functions. 2015-12-13 13:18:37 -08:00
Jared Boone
041e211841 Expose register read functions. 2015-12-13 13:18:05 -08:00
Jared Boone
74aa2112f4 Add Si5351C register view, make more space in all register views. 2015-12-13 12:34:51 -08:00
Jared Boone
5df1665994 Class divider comments. 2015-12-13 11:50:55 -08:00
Jared Boone
32108a8229 Field for register set name was too narrow. 2015-12-13 11:50:31 -08:00
Jared Boone
c7d49eb190 Expose MAX2837 registers, show registers in debug view. 2015-12-13 11:50:06 -08:00
Jared Boone
a6fbd1c5ef Make DebugRFFCView into generic RegistersView. 2015-12-13 11:48:39 -08:00
Jared Boone
b058d609eb Move packet timestamping into baseband.
Now reads the RTC peripheral at the end of each received packet.
TODO: Improve resolution to milliseconds or better.
TODO: Work back from end of packet to compute timestamp for beginning of packet.
TODO: Reuse ChibiOS RTC code, which isn't used now because ChibiOS on M0 core is responsible for RTC configuration, and including ChibiOS RTC API on M4 will also try to initialize/manage the peripheral.
2015-12-12 11:37:30 -08:00
Jared Boone
ca7e0f1e20 Remove #include of ChibiOS test.h.
Would be appropriate if writing a test case project. Someday...
2015-12-10 18:28:19 -08:00
Jared Boone
83bf2a9a36 Tweak BasebandConfiguration constructors to avoid surprise type conversions. 2015-12-10 14:40:48 -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
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
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
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
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