Commit Graph

647 Commits

Author SHA1 Message Date
furrtek
8662ed4024 Close Call should be more accurate
Merged close call and wideband spectrum baseband processors
2017-02-01 08:53:26 +00:00
furrtek
064e097bc3 Symfield widget auto-inits
ADS-B emergency frame
2017-02-01 00:21:13 +00:00
furrtek
0642d633c3 Frequency manager empty file bugfix 2017-01-30 01:09:00 +00:00
furrtek
f0fbc356ad Jammer bugfix: now produces all the right channels 2017-01-17 14:27:37 +00:00
furrtek
7cb38f858e Udpdated jammer baseband code, should work again 2017-01-17 08:42:35 +00:00
furrtek
368f0f7fb0 Digital mode for waveform widget, 2.4GHZ WLAN channels in jammer 2017-01-17 07:00:42 +00:00
furrtek
b10c88e271 POCSAG bitrate selection and logging toggle
Small checkboxes
2017-01-16 13:36:28 +00:00
furrtek
e4abcea9a3 Added bitrate option for POCSAG baseband, PWMRSSI frequency option
Split SD card wiper app
Cleanup for -Weffc++
2017-01-16 08:40:17 +00:00
furrtek
5e40669cbc Merge 'upstream/master' - At least it builds... 2017-01-16 03:45:44 +00:00
furrtek
12aeae3a82 Commit replay stuff before sync 2017-01-10 19:45:40 +00:00
furrtek
3ec725c172 Added SD card wiper tool
Frequency manager now creates FREQMAN.TXT if not found
Moved graphics files
2017-01-10 18:40:33 +00:00
furrtek
a0c248d567 Added waveform widget and a frequency field in encoders tx 2017-01-09 02:45:29 +00:00
Jared Boone
05eb694c0a Introduce simd32_t type.
Discontinue use of disagreeable __SIMD #define.
2017-01-06 16:57:36 -08:00
Jared Boone
177d49b769 GPIO: Fix for incorrect pin-funciton bit mask.
Caused device to not boot. Oops.
2017-01-06 14:22:27 -08:00
Jared Boone
87383d735c C++14: Decommission my own make_unique. 2017-01-05 17:14:07 -08:00
Jared Boone
0d1e48ae9c C++14: Add two-argument delete() implementations.
Just passing to one-argument versions.
2017-01-05 17:13:03 -08:00
Jared Boone
a22dc150bc C++14: make some wrapper classes static.
Also address GCC 6.2 not allowing constexpr from reinterpret_cast<> values.
2017-01-05 17:10:00 -08:00
Jared Boone
0ea2f9650e C++14: const all the methods! 2017-01-05 17:06:44 -08:00
furrtek
f033782d4b Playdead default sequence and validity check 2016-12-26 13:49:23 +01:00
furrtek
7df5987b3b Added utilities > Frequency manager + load/save 2016-12-26 01:31:38 +01:00
furrtek
6bcb7dc1b1 # This is a combination of 2 commits.
# The first commit's message is:

Updated RDS transmitter: flags, PI and date/time

Merging baseband audio tone generators

Merging DTMF baseband with "tones" baseband

Added stealth transmit mode

App flash section bumped to 512k
RX and TX LEDs are now used
Play dead should work again, added login option
Morse frame gen. for letters and fox hunt codes
Merged EPAR with Xylos
Made EPAR use encoders for frame gen.
Moved OOK encoders data in encoders.hpp
Simplified about screen, ui_about_demo.* files are still there

BHT city DB, keywords removed

BHT cities DB, keywords removed

Update README.md

RDS radiotext and time group generators

# This is the 2nd commit message:

Update README.md
2016-12-24 11:52:11 +01:00
furrtek
75e8a664b0 3D buttons, to make UI clearer 2016-12-23 18:31:03 +01:00
furrtek
28ea2179f4 Re-enabled closecall even if it's still not working well
RDS PSN works again but update issue (UI ?)
Moved CTCSS stuff to dedicated file
2016-12-23 18:31:02 +01:00
furrtek
1db138c27a Wavfile class 2016-12-23 18:31:02 +01:00
furrtek
e56fa0f479 Numbers station works, very basic
Added utilities, whip antenna length calculator
Modal errors/abort
2016-12-23 18:31:02 +01:00
furrtek
d18b6d135d Restoring jammer and RDS functionalities, please wait...
Started work on frequency manager and numbers station simulator
2016-12-23 18:31:01 +01:00
furrtek
ef0feae62b Started work on ADS-B TX baseband processor 2016-12-23 18:31:01 +01:00
Jared Boone
01cd8c7776 GPIO: Fix PinConfig -> uint16_t type conversion signature. 2016-12-21 22:24:07 -08:00
Jared Boone
ad9a63a666 GPIO: Fix apparent dumb bit-logic bug.
Not due to any observable incorrect behavior, but just noticing that the code, as previously written, should not work...
2016-12-21 22:20:28 -08:00
Jared Boone
f2dd6827ea Add Widget::parent_rect() accessor, rename member variable.
Some day I will settle on a convention for naming members... I think that day is near.
2016-12-06 09:28:48 -08:00
furrtek
bb6eefe2be Started ADS-B TX UI and frame encoding 2016-11-30 07:41:55 +01:00
Jared Boone
3f94591083 Remove a lot of static_cast<>s involving UI structs.
Also starting to get religion on using unsigned integers only when I want their wrapping/modulus behavior.
2016-11-29 10:13:56 -08:00
Jared Boone
227719ff1d Fix static_cast warning. 2016-11-28 12:05:24 -08:00
Jared Boone
e820bed097 Hide ui::Rect implementation. 2016-11-28 11:25:27 -08:00
Jared Boone
d15ace4676 Hide ui::Size implementation. 2016-11-28 10:55:45 -08:00
Jared Boone
aac2d31548 Hide ui::Point implementation. 2016-11-28 10:39:10 -08:00
Jared Boone
46b3d9d087 Disallow copy constructors/assignments.
For classes containing pointers/state that should not be copied.
2016-11-26 16:52:57 -08:00
Jared Boone
4eb0facacb Add lots of value constructors. 2016-11-26 16:50:44 -08:00
Jared Boone
cd31ae86d7 Add single-arg constructor for vec2_s16. 2016-11-26 16:42:03 -08:00
Jared Boone
a33476259e Create buffer.cpp, reduce #include dependencies and impl leakage. 2016-10-24 11:16:48 -07:00
Jared Boone
5dfb53263a Extract BufferExchange, simplify threading. 2016-10-06 13:38:56 -07:00
Jared Boone
414dd41577 Allow modification of StreamBuffer (data values, size). 2016-10-04 09:15:19 -07:00
furrtek
8c70ef08f8 Fixed xx2262 remote encoder def
SymField now shows symbol chars
2016-09-27 03:06:14 +02:00
furrtek
8276e5e311 Added CTCSS in Soundboard 2016-09-23 23:08:54 +02:00
furrtek
bb29efeda6 Added Nuoptix DTMF sync transmit (Disney parades, light shows...)
Soundboard ignores stereo files
2016-09-23 17:34:50 +02:00
Jared Boone
df0fc30fda Rect: Comment about a bad API method.
In retrospect, I don't like Rect + Rect = union -- it doesn't make as much sense and isn't as readable as Rect.union(Rect).
2016-09-07 22:19:30 -07:00
Jared Boone
f722497b01 Rect: operator method to offset by a Point. 2016-09-07 22:18:11 -07:00
Jared Boone
09222f0044 Widget/View: Consolidate dirty code inside Widget. 2016-09-05 15:04:28 -07:00
Jared Boone
8a69b0523e View::add_children: Use std::list_initializer as argument.
Improvement in code size -- 944 bytes.

Some day I will understand C++11 well enough to do the right thing the first time.
2016-09-05 14:53:04 -07:00
Jared Boone
5d2ad9c1aa SGPIO: Use pin constants when changing output enables. 2016-08-30 21:33:44 -07:00
Jared Boone
00c7cdf027 CPLD: Always clock SGPIO data on external clock rising edge. 2016-08-30 21:30:03 -07:00
Jared Boone
f0c4b0fc98 AIS: Doesn't use RRC filter -- use rect instead. 2016-08-29 20:47:37 -07:00
furrtek
808f99647e Soundboard: Arbitrary samplerate support for wave files
Screenshots
2016-08-26 09:54:17 +02:00
furrtek
f7e0f36bd9 Added Soundboard
file.cpp: scan_root_files
proc_audiotx.cpp: bandwidth setting
ui_widget.cpp: button on_focus
2016-08-26 08:11:24 +02:00
furrtek
5de6349199 Bitrate and flags for POCSAG packets, trim bugfix 2016-08-25 16:20:19 +02:00
furrtek
04cdafe387 Bugfix: POCSAG alphanum messages not showing
Bugfix: Range limit for afsk config
2016-08-24 14:44:57 +02:00
Jared Boone
e2fe4b65d9 CPLD: Set DECIM1 as input to CPLD.
How did DECIM work before?! Now, decimate is no longer a feature, so this doesn't really matter. But tidying it up anyway.
2016-08-23 10:30:05 -07:00
furrtek
02f0271553 Added basic POCSAG receiver
Added Yes/no modal screen (for future tx warnings)
2016-08-23 08:45:33 +02:00
Jared Boone
f7bfde73b6 FatFs: Enable long file name support.
Lots of re-plumbing to make this work, including a bunch of Unicode stuff now in the binary. Bloat City, I'm sure.

TODO: FatFs using unsigned (uint16_t) for UTF16 representation is kinda inconvenient. Lots of reinterpret_cast<>().
2016-08-21 18:06:39 -07:00
Jared Boone
77016b9a40 Rename CPLD "Q_INVERT" to signal to "INVERT".
Don't expose detail in name about how the task is accomplished.
2016-08-21 11:35:40 -07:00
Jared Boone
b0a3f680e5 CPLD: Remove decimation feature. 2016-08-21 11:31:37 -07:00
furrtek
c2fbc0c8d5 AudioTX, fixed about screen and an LCR address list bug 2016-08-17 04:17:24 +02:00
furrtek
45a754645e Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	firmware/application/bitmap.hpp
#	firmware/application/receiver_model.cpp
#	firmware/application/receiver_model.hpp
#	firmware/application/touch.hpp
#	firmware/application/ui_setup.cpp
#	firmware/baseband/proc_ais.hpp
#	firmware/baseband/proc_ert.hpp
#	firmware/bootstrap/CMakeLists.txt
#	firmware/common/portapack_persistent_memory.cpp
#	firmware/common/portapack_persistent_memory.hpp
2016-08-17 02:55:34 +02:00
Jared Boone
52c089c4df SGPIO: Hi-Z data bus before setting direction pin.
Another tactic to avoid bus contention, however brief.
2016-08-13 16:46:02 -07:00
Jared Boone
62d2ae2336 SGPIO: Change bus direction more deliberately.
There may have been an instant where the CPLD and SGPIO were driving the bus simultaneously, when switching from TX to RX.
2016-08-13 16:42:39 -07:00
furrtek
38e506a108 OOK transmit is mostly working, bit durations are wrong
Simplified messages carrying data (uses shared_memory instead)
Added SymField widget (bitfield, symbol field...)
Added some space for baseband code
BMP palette loading bugfix
2016-08-06 08:49:45 +02:00
furrtek
787f656500 Testing OOK TX baseband module 2016-08-03 08:53:50 +02:00
furrtek
1b44b22419 Wrote most of the Encoders TX app (lacks baseband module)
Fixed menu scroll glitch
Added set_range to NumberField widget
2016-08-03 04:53:51 +02:00
furrtek
e2218a0f32 More AFSK options, scan lists, 2016-08-02 12:44:31 +02:00
furrtek
72f3c08e9b Added raw ASCII char field in keyboard view 2016-08-01 20:06:17 +02:00
furrtek
c58039e557 Fixed LCR scan and alt format, console widget, text input autotrim 2016-07-29 04:52:51 +02:00
furrtek
1d697d2201 Added PWM RSSI output for NBFM and WFM 2016-07-28 05:25:33 +02:00
Jared Boone
c424bf08f3 Touch: Migrate touch calibration to persistent memory. 2016-07-27 15:30:43 -07:00
furrtek
1beac3bdbd Added repeat setting for AFSK TX, fixed LCR scan, cleaned up LCR
Added max setting for progressbars, default = 100
2016-07-28 00:08:05 +02:00
Jared Boone
82f6e7c306 Change default frequency when NVRAM is initialized. 2016-07-27 14:17:57 -07:00
furrtek
e958b4bd7d Fixed LCR transmit and AFSK baseband module 2016-07-27 21:26:03 +02:00
furrtek
79f2134d91 Cleaned up Xylos TX, J/N works again 2016-07-27 05:54:55 +02:00
furrtek
739956b42b Sync with Sharebrained's fw, only Xylos TX works for now 2016-07-27 03:03:40 +02:00
Jared Boone
20bcbf511e Move thread_base.hpp from baseband/ to common/.
I want to use it with M0 code as well.
2016-07-26 10:22:10 -07:00
furrtek
fdfa7c9776 Merge remote-tracking branch 'upstream/master'
Conflicts:
	firmware/Makefile
	firmware/application/Makefile
	firmware/application/event_m0.cpp
	firmware/application/ui_setup.cpp
	firmware/application/ui_setup.hpp
	firmware/baseband/baseband_thread.cpp
	firmware/baseband/baseband_thread.hpp
	firmware/bootstrap/CMakeLists.txt
	firmware/common/message.hpp
	firmware/common/portapack_shared_memory.hpp
	hardware/.gitignore
2016-07-25 16:35:42 +02:00
furrtek
966a758a0b Added frequency manager skeleton, LCR alt encoding, GPS jammer 2016-07-25 16:21:27 +02:00
Jared Boone
8b02e40602 Move touch ADC data collection to M0.
...so it continues when M4 is shut down.

It's not as pretty as using DMA, but it's far simpler, even if it involves letting the ADC run continuously and taking the last samples even if not synchronizing to the phase of the sampling of the channels.
2016-07-24 15:31:53 -07:00
Jared Boone
b3f4ea8978 Clean up SharedMemory placement new. 2016-07-24 15:27:05 -07:00
Jared Boone
49d6cda731 Move BasebandConfiguration to receiver_model.hpp.
That's the only place it's being used now -- it's no longer moving between cores.
2016-07-19 17:11:32 -07:00
Jared Boone
74b5571e8b Remove baseband::start()/stop() and related message. 2016-07-19 17:06:22 -07:00
Jared Boone
4b7fa9f411 CPLD: Add XC2C64A method to init from EEPROM contents. 2016-07-18 11:31:21 -07:00
Jared Boone
4cc356f325 JTAG: Code to manage HackRF CPLD interactions. 2016-07-17 15:45:00 -07:00
Jared Boone
71c7f543c5 JTAG: Add TAP state management.
Not all that happy with the implementation, but it's doing the job for now.
2016-07-17 15:44:30 -07:00
Jared Boone
c0f4fbe32d JTAG: Add GPIO definitions for HackRF CPLD. 2016-07-16 14:06:58 -07:00
Jared Boone
22143c9543 JTAG: Remove unused methods. 2016-07-13 11:02:13 -07:00
Jared Boone
18fe30136e JTAG: Move Target interface to separate header. 2016-07-11 09:39:02 -07:00
Jared Boone
6917ffe1e3 JTAG: Clean up definition of Target interface. 2016-07-11 09:16:47 -07:00
Jared Boone
ad4a68f90a CMake: Generate portapack_cpld_data.cpp from SVF via tool. 2016-07-05 12:45:31 -07:00
Jared Boone
3ed1d9e24a CPLD: Method to calculate bitstream CRC32. 2016-07-05 12:06:51 -07:00
Jared Boone
df825807d6 CRC: Rearrange public methods to reduce user error.
If you can access process_bits() without considering RevIn value, you will likely not get the CRC value you're expecting! Put RevIn check where it belongs, in process_bits().
2016-07-05 11:57:57 -07:00
Jared Boone
57293bc5eb Clear application message queue after baseband is shut down. 2016-07-02 16:19:41 -07:00
Jared Boone
eac4cf678a Capture M4 chDbgPanic msg, show in application. 2016-07-02 15:33:03 -07:00
Jared Boone
97ba19af24 Change M4 loader to use image tags.
Also finish moving HackRF binary to tagged image region.
2016-07-01 10:37:22 -07:00
Jared Boone
0e62876578 Add types for tagged data chunks in SPI flash. 2016-07-01 10:32:52 -07:00
Jared Boone
d41c6ee36a Simplify app->baseband message handling.
No need for a FIFO when all messages are intended to be synchronous.
2016-06-24 14:16:45 -07:00
Jared Boone
264c19b312 Rename CaptureThread message, callback method, handle success. 2016-06-21 12:05:55 -07:00
Jared Boone
81d4e59aeb Add CaptureThread success_callback. 2016-06-21 11:53:07 -07:00
Jared Boone
cfaa44b02a Send CaptureThread error into app-local message queue. 2016-06-21 11:04:10 -07:00
Jared Boone
dbe735233a Add app-local MessageQueue. 2016-06-21 10:57:44 -07:00
Jared Boone
7023616808 Move MessageQueue locations in SharedMemory structure. 2016-06-21 10:56:00 -07:00
Jared Boone
9f95eb90a3 Shrink baseband queue size, 2^12 -> 2^11. 2016-06-21 10:55:24 -07:00
Jared Boone
6bd191349a Hide MessageHandlerMap.
Definitely didn't belong in message.hpp, saw no reason to expose it outside translation unit (.cpp file).
2016-06-19 22:56:06 -07:00
Jared Boone
a475daeeea TPMS: Validate checksum for OOK 8k192 Schrader. 2016-06-02 23:09:55 -07:00
Jared Boone
9628815da7 TPMS: Validate checksum for the OOK 8k4 Schrader variant. 2016-06-02 22:22:22 -07:00
Jared Boone
a52d0fbd81 Rename format_manchester/ManchesterFormatted to "[sS]ymbols". 2016-05-30 11:24:59 -07:00
Jared Boone
3d22222689 Extract DecodedSymbol from ManchesterDecoder. 2016-05-30 11:23:13 -07:00
furrtek
e15f659a6a RDS radiotext transmit (group 2A)
Keyboard/Unistroke text input method selection
2016-05-29 12:06:47 +02:00
Jared Boone
05b55f2696 TPMS: Extract packet readers. 2016-05-27 13:41:56 -07:00
furrtek
6a0816ba56 Added carrier wake up in Xylos TX and cute icons 2016-05-27 06:48:04 +02:00
Jared Boone
04c472e802 Push SignalType inside tpms::Packet. 2016-05-25 17:58:32 -07:00
Jared Boone
ff57b3c8cb Add Color-only constructor to ui::Rectangle widget. 2016-05-25 11:32:06 -07:00
Jared Boone
38b374506e More TPMS variable/enum renaming. 2016-05-23 18:02:25 -07:00
Jared Boone
05df04df7e TPMS: Quick implementation of "flags" column.
For now, shows only for Schrader OOK packets: top (left) nibble is function code, bottom nibble has two-bit checksum.
2016-05-17 14:23:03 -07:00
furrtek
7a90eab407 3MHz-wide fast close call works :) >3MHz doesn't work anymore :( 2016-05-17 20:27:51 +02:00
Jared Boone
40859444fe Update TPMS field handling for Schrader devices.
Thanks to mossmann for discovering these details.
2016-05-17 11:27:19 -07:00
Jared Boone
ad554b28b5 Rename TPMS clock recovery, packet builders for accuracy. 2016-05-17 11:11:30 -07:00
Jared Boone
682a1706a3 Improve File error handling. Massive effects...
API is somewhat stolen from Rust std::fs::File. Static factories didn't work out so well, though. Move semantics made my head explode.
TODO: Still a lot of places where errors aren't handled, but it's an improvement...
2016-05-16 14:01:44 -07:00
furrtek
e959d9a8ec More messagepack 2016-05-16 12:02:45 +02:00
furrtek
61fdb57b8f Testing Messagepack for saving/loading stuff from SD card 2016-05-15 02:35:08 +02:00
furrtek
7267de234d Added EPAR transmit (slow FSK), bit bug for now 2016-05-13 09:34:15 +02:00
furrtek
9149508c83 Improved close call precision 2016-05-13 01:18:04 +02:00
furrtek
7d193c3445 Close call tuning fix, more UI elements 2016-05-11 23:57:22 +02:00
furrtek
fb21c1332e Started close call dev 2016-05-11 12:45:03 +02:00
Jared Boone
b82eff51dd Refactor of capture buffer management between cores.
Instead of copying data into and out of FIFO, passing buffer pointers between cores that are sized to match preferred/ideal SD card write size.
2016-05-10 14:12:37 -07:00
furrtek
4511090eae Unistroke in dirty code 2016-05-10 04:24:19 +02:00
furrtek
569f299f42 Merge 2016-05-09 21:05:11 +02:00
furrtek
d40016ffda Fixed LCR and Xylos transmitters 2016-05-09 20:42:20 +02:00
Jared Boone
dc2944d5e9 Make Widget::screen_rect() const.
Because I can.
2016-05-08 14:59:26 -07:00
Jared Boone
ab73d6155e Improve arrow key next focus algorithm. 2016-05-08 14:59:03 -07:00
Jared Boone
0d6103916d Converge File object with std::fstream. Simplify LogFile.
LogFile no longer watches SD card presence and tries to open/close files dynamically.
2016-04-30 15:09:34 -07:00
furrtek
d55a420dfd Fixed module loading (again), only audio tx works for now 2016-04-28 14:59:14 +02:00
Jared Boone
dc8c34487f Speed dropped_percent() common case, ensure dropped>0 returns >0%. 2016-04-27 12:16:37 -07:00
Jared Boone
a72a3489cf Expose percent of data dropped during capture. 2016-04-27 12:04:02 -07:00
Jared Boone
1789868b8a Track bytes from baseband and dropped when entering capture FIFO. 2016-04-27 10:40:50 -07:00
Jared Boone
91ee2dbb67 Move FIFO and write size to CaptureConfig structure.
Now configured from baseband, where write size and appropriate FIFO size is known.
2016-04-26 22:26:30 -07:00
Jared Boone
ed3ac5249f Move MessageQueue::signal into .cpp file. 2016-04-23 22:00:27 -07:00
Jared Boone
d5e21ce972 Use CaptureConfig to share state between cores.
Remove awful FIFO_HACK.
TODO: Lots of repeated code...
TODO: Capture thread is signalled too frequently.
2016-04-23 15:07:44 -07:00
Jared Boone
7436dea51a Add CaptureConfig structure and message. 2016-04-23 14:54:15 -07:00
Jared Boone
27a1423309 De-constexpr a few UI constructors.
Because it was silly.
2016-04-22 11:18:35 -07:00
furrtek
2fcfdba9ea "At least it builds !" 2016-04-21 22:12:51 +02:00
furrtek
1b0da68d65 Merge remote-tracking branch 'upstream/master'
Conflicts:
	firmware/application/Makefile
	firmware/application/core_control.cpp
	firmware/application/touch.cpp
	firmware/application/ui_debug.cpp
	firmware/application/ui_debug.hpp
	firmware/application/ui_navigation.cpp
	firmware/baseband/baseband_thread.cpp
2016-04-21 20:36:19 +02:00
Jared Boone
59f1a32566 Semi-naive audio recording to SD card. 2016-04-11 10:20:19 -07:00
Jared Boone
c01f2d82e1 Move TPMS taps to dsp_fir_taps.hpp.
Will soon use in proc_record.cpp.
2016-04-11 10:18:31 -07:00
Jared Boone
f76750e55b Add LFSR random number generator.
Used for SD card write/read testing, maybe other stuff eventually?
2016-04-10 16:30:28 -07:00
Jared Boone
38ba02a68f Change File::open to File::open_for_writing.
Not thrilled about the File API right now...
2016-04-10 15:55:01 -07:00
Jared Boone
f8d496d9d1 Remove cpu_clock.* -- unused.
ClockManager does all that stuff.
2016-04-09 21:33:12 -07:00
Jared Boone
b35a8c4501 Add TPMS signal_type. 2016-04-06 17:04:40 -07:00
Jared Boone
635b1fd4c3 Extract TPMS packet stuff to separate files. 2016-04-06 17:01:54 -07:00
Jared Boone
b7c0efbb64 Add ERT commodity type. 2016-04-06 16:16:10 -07:00
Jared Boone
6571ef0c11 Prevent alternate MessageQueue constructors. 2016-02-27 21:20:16 -08:00
Jared Boone
0fae1488c4 Hide most of MessageQueue functions. 2016-02-27 21:19:51 -08:00
Jared Boone
bf348cf30a Move message handling loops to MessageQueue. 2016-02-27 21:07:11 -08:00
Jared Boone
eb294c8e1c Add chDbgPanic for unhandled exceptions. 2016-02-27 12:05:29 -08:00
Jared Boone
36c38e4a24 Quiet narrowing conversion warning. 2016-02-22 14:19:26 -08:00
Jared Boone
19609469a5 Quiet shift-overflow compiler warning. 2016-02-22 14:18:53 -08:00
Jared Boone
925394c54b Bodgy code to write PNG files the size of the LCD screen. 2016-02-19 15:33:27 -08:00
Jared Boone
77eb0c5d24 ILI9341 read_pixels().
Improves on / abstracts prior interface, which just handed back uint16_ts from the LCD's parallel interface.
2016-02-19 15:31:56 -08:00
Jared Boone
bdaa13c103 CRC, Adler32 interfaces accept void* blocks.
...despite my better judgement.
2016-02-19 15:30:35 -08:00
Jared Boone
6d0995e165 Function to read bytes from 16-bit LCD interface.
...begin careful not to overread from the LCD, or overwrite to the buffer.
2016-02-19 15:29:00 -08:00
Jared Boone
1f79c72bf0 Remove irrelevant comment from portapack::io. 2016-02-19 15:28:15 -08:00
Jared Boone
322a15587a Add ColorRGB888 type for data from LCD frame buffer. 2016-02-19 15:27:50 -08:00
Jared Boone
5ed76d6985 Adler32 implementation (for PNG writer). 2016-02-19 14:13:15 -08:00
Jared Boone
daeb542086 Remove constexpr use of std::log2, std::log10.
GCC 4.9 doesn't care for it.
2016-02-19 10:30:26 -08:00
Jared Boone
d6d1f6b8af Missing #include. 2016-02-19 08:57:07 -08:00
Jared Boone
1e0d34c98b CRC internal type more suitable for ARM. 2016-02-18 21:31:51 -08:00
Jared Boone
00fb25f143 CRC class now supports reverse of input/output. 2016-02-18 20:36:32 -08:00
Jared Boone
0681f9c5df Init message queues in M0 event dispatcher. 2016-02-16 11:23:02 -08:00
Jared Boone
ef86848139 Change baseband floats to normalize at +/-1.0. 2016-02-14 12:38:50 -08:00
Jared Boone
64e4cde7f5 fast_pow2() implemented. 2016-02-13 11:18:34 -08:00
Jared Boone
d2531016e5 Expose fast_log2(). 2016-02-13 11:18:15 -08:00
Jared Boone
4321deee1e ChibiOS memory helper functions. 2016-02-12 13:52:22 -08:00
Jared Boone
d125a5c662 Remove "K" parameter from FIFO template. 2016-02-10 10:41:06 -08:00
Jared Boone
dfbcf5bc75 Extract some constexpr math utilities to utility.hpp
...my dumping ground for so many random bits.
2016-02-10 10:15:42 -08:00
Jared Boone
ae93d8ee58 Simplify RSSI/BB DMA, extract to ThreadWait class.
Also saved 688 bytes of code.
2016-02-09 10:41:19 -08:00
Jared Boone
5cd423bb20 Fast log2 implementation.
Big improvement in code size (2034 bytes!). Baseband FFT (idle) thread CPU cut in half.
2016-02-08 12:55:06 -08:00
Jared Boone
cdd15fcf79 Rework complex16_mag_squared_to_dbv_norm() to use log2.
Small code size reduction and improvement in CPU effort.
2016-02-08 12:35:20 -08:00
Jared Boone
3aabd804d3 Remove commented code. 2016-02-07 21:52:36 -08:00
Jared Boone
5a66c68861 Return Widget::children() by reference. 2016-02-07 11:24:25 -08:00
Jared Boone
2b6bc03408 Remove unfinished Widget last child focus code. 2016-02-07 11:06:16 -08:00
Jared Boone
31499fea5d Rewrite Widget::screen_pos() in terms of screen_rect(). 2016-02-07 10:55:55 -08:00
Jared Boone
a420f018c7 Remove unused View::dirty_screen_rect member. 2016-02-07 10:53:40 -08:00
Jared Boone
41d4fd0044 Remove unused View::initial_focus(). 2016-02-07 10:42:41 -08:00
Jared Boone
3a709c51c4 Hide more Widget member variables. 2016-02-07 10:40:06 -08:00
Jared Boone
7cb3bbc9f8 Make Widget flags private, expose via methods. 2016-02-07 10:32:38 -08:00
furrtek
ba94ce55ef Loadmodule emergency fix 2016-02-06 23:19:28 +01:00
Jared Boone
a9451c17b4 Move PPB clock adjustment out of ReceiverModel. 2016-02-05 16:52:34 -08:00
Jared Boone
fd3f962e40 Define and utilize memory region backup_ram. 2016-02-05 16:45:23 -08:00
Jared Boone
0294165481 Extract LOTS of stuff into an audio API.
Prevent all manner of type and implementation leakage.
2016-02-05 16:25:43 -08:00
Jared Boone
9430c94dec Move I2S management to application side. 2016-02-05 15:25:08 -08:00
Jared Boone
80511ac93f Improve repaint scope when widgets removed from parent.
Addresses flickering (again!) when switching between options views in receiver app.
2016-02-05 10:44:09 -08:00
furrtek
85103fdd54 "sdcard" folder, for clarity 2016-02-05 17:50:35 +01:00
furrtek
c81ba5be8e "At least it builds, now" 2016-02-05 17:40:14 +01:00
furrtek
8009a9b543 Merge remote-tracking branch 'upstream/master'
Conflicts:
	firmware/application/Makefile
	firmware/application/analog_audio_app.cpp
	firmware/application/analog_audio_app.hpp
	firmware/application/event.cpp
	firmware/application/irq_ipc.hpp
	firmware/application/portapack.hpp
	firmware/application/receiver_model.cpp
	firmware/application/receiver_model.hpp
	firmware/application/recent_entries.cpp
	firmware/application/string_format.hpp
	firmware/application/ui_debug.cpp
	firmware/application/ui_debug.hpp
	firmware/application/ui_menu.cpp
	firmware/application/ui_navigation.cpp
	firmware/application/ui_navigation.hpp
	firmware/application/ui_receiver.cpp
	firmware/application/ui_receiver.hpp
	firmware/application/ui_sd_card_status_view.cpp
	firmware/application/ui_sd_card_status_view.hpp
	firmware/application/ui_setup.cpp
	firmware/application/ui_setup.hpp
	firmware/application/ui_spectrum.hpp
	firmware/baseband-tx/dsp_fir_taps.cpp
	firmware/baseband-tx/dsp_fir_taps.hpp
	firmware/baseband-tx/irq_ipc_m4.cpp
	firmware/baseband-tx/irq_ipc_m4.hpp
	firmware/baseband-tx/proc_audiotx.cpp
	firmware/baseband/Makefile
	firmware/baseband/audio_output.cpp
	firmware/baseband/audio_output.hpp
	firmware/baseband/block_decimator.hpp
	firmware/baseband/dsp_decimate.cpp
	firmware/baseband/dsp_decimate.hpp
	firmware/baseband/dsp_demodulate.cpp
	firmware/baseband/dsp_demodulate.hpp
	firmware/baseband/dsp_fir_taps.cpp
	firmware/baseband/irq_ipc_m4.cpp
	firmware/baseband/irq_ipc_m4.hpp
	firmware/baseband/proc_am_audio.cpp
	firmware/baseband/proc_am_audio.hpp
	firmware/baseband/proc_nfm_audio.cpp
	firmware/baseband/proc_nfm_audio.hpp
	firmware/baseband/proc_wfm_audio.cpp
	firmware/baseband/proc_wfm_audio.hpp
	firmware/baseband/spectrum_collector.hpp
	firmware/common/dsp_fir_taps.cpp
	firmware/common/dsp_fir_taps.hpp
	firmware/common/event.hpp
	firmware/common/message.hpp
	firmware/common/ui_painter.cpp
	firmware/common/ui_painter.hpp
2016-02-04 11:35:55 +01:00
furrtek
6e496e2b26 Merge fixing, commit to catch up on recent files 2016-02-04 10:27:53 +01:00
Jared Boone
1d2dd4e19d Old GCC on Travis-CI was cheesed off by my new syntax. 2016-02-03 17:59:46 -08:00
Jared Boone
84824a504f Add UI Image and ImageButton classes. 2016-02-03 15:48:50 -08:00
Jared Boone
76013a656c Add Painter.draw_bitmap for Bitmap types. 2016-02-03 13:23:46 -08:00
Jared Boone
deade67fd8 Add ui::Bitmap for two-color images. 2016-02-03 13:23:23 -08:00
Jared Boone
5d0b5d427a Extract draw_bitmap from draw_glyph. 2016-02-03 10:33:54 -08:00
Jared Boone
be8c1307e2 Add OptionsField event for on_focus.
TODO: So poorly named! Should be on_focus, but requires sweeping changes. Ugh.
2016-02-02 13:41:11 -08:00
furrtek
44638e504b SYNC 2016-01-31 09:34:24 +01:00
furrtek
7e56183986 Sync 2016-01-31 08:37:08 +01:00
Jared Boone
ccafc1e82c Fix DSB channel filter taps, don't saturate max tap value. 2016-01-30 20:45:16 -08:00
Jared Boone
a79aa3e580 Correct DSB decim_2 FIR taps comment. 2016-01-30 19:03:50 -08:00
Jared Boone
a97cd642ac Multiple AM modes selection in application API. 2016-01-30 19:03:32 -08:00
Jared Boone
a1e1677b8b Rename AM modulation mode "DSB". 2016-01-30 18:17:29 -08:00
Jared Boone
e778be6472 Selection of AM/SSB from application side. 2016-01-30 18:02:28 -08:00
Jared Boone
f2dff16820 Use complex channel filter taps for AM/SSB. 2016-01-30 17:30:54 -08:00
Jared Boone
1915ff980f Add AM processor decim_2. 2016-01-30 17:28:11 -08:00
Jared Boone
279e5c775d Add LSB filter taps. 2016-01-30 17:23:04 -08:00
Jared Boone
69deaafd1c Clean up formatting of USB FIR filter taps. 2016-01-30 17:22:38 -08:00
Jared Boone
b029bacd8c Remove channel decimation from AMConfigureMessage. 2016-01-30 17:21:48 -08:00
Jared Boone
f82a22dd2c USB channel filter. 2016-01-29 22:29:52 -08:00
Jared Boone
b9c2ba4053 Add fir_taps_complex structure. 2016-01-29 22:29:23 -08:00
Jared Boone
aead1d8798 Change NBFM audio fs->24k, AM ->12k.
Send channel decimation factor from application to baseband.
2016-01-29 19:23:30 -08:00
Jared Boone
65d224be14 Add IIR configs for fs=24kHz NBFM and fs=12kHz AM. 2016-01-29 18:31:03 -08:00
Jared Boone
96898f82b2 Pass IIR configs from application to baseband. 2016-01-29 15:57:20 -08:00
Jared Boone
01e14ecbcf Move IIR struct and configs to common/. 2016-01-29 15:43:39 -08:00
furrtek
107c212d88 Completely useless "about" screen
Paved road for talking Xylos RX and logger
Added test button for Xylos TX
Fixed jammer crashing after loading second time
2016-01-30 00:28:05 +01:00
Jared Boone
275b644edd Fix flickering freq/gain options views.
Was caused by invalidating ALL of the parent view, when only the overlapping views would need to be repainted.
2016-01-27 21:47:10 -08:00
Jared Boone
b801366e4e Recover from display sleep, use LCD sleep function. 2016-01-27 21:05:28 -08:00
Jared Boone
894d4b955c Unclever first attempt at display sleep. 2016-01-27 20:33:54 -08:00
Jared Boone
7519b83379 Make better use of range_t methods. 2016-01-27 14:46:45 -08:00
Jared Boone
018b54c711 Extract range_t to utility header. 2016-01-27 12:09:36 -08:00
Jared Boone
0efe2ea0ae Add virtual title() to View class. 2016-01-26 13:01:16 -08:00
Jared Boone
a13e19a907 Paint background of Text object before string. 2016-01-26 13:00:36 -08:00
Jared Boone
798b5eb972 Extract Temperature, Pressure into units header. 2016-01-23 21:37:22 -08:00
Jared Boone
45ae222ab5 Extract Optional to own header. 2016-01-23 21:26:06 -08:00
Jared Boone
14f18d5cf7 Reduce use of unsigned integers when signed will do fine. 2016-01-23 17:53:16 -08:00
Jared Boone
ce481c0b5a Clean up UI type static_casts.
So disgusting, but not entirely gone yet...
2016-01-23 17:02:16 -08:00
Jared Boone
8fd8815e95 Remove irrelevant comments. 2016-01-15 16:00:21 -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
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
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
b9f124850b Add buffer_t<float> type alias. 2016-01-11 16:10:48 -08:00
Jared Boone
136ba895ef Clear spectrum FIFO when streaming is stopped. 2016-01-10 11:00:09 -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
8fde4972b4 Methods to peek and skip messages in queue.
Allows receiver to not consume a message until after it's handled. And that enables the transmitter to block until the queue is empty, knowing that when unblocked, all messages in queue have been handled.
2016-01-10 10:15:25 -08:00
Jared Boone
c75c167c25 Rename GPDMA channel disable_force() to disable().
There was nothing particularly forceful about the disable_force() code. Whether it's a "forced" operation depends on what happens before and after (HALT and ACTIVE flags are involved in a smooth disabling of the channel).
2016-01-10 10:11:16 -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
365c2ef946 Handle baseband::dma::wait_for_rx_buffer() returning empty buffer.
Was technically OK before, because sample count was zero. But seems silly (and vaguely dangerous) to call all that code with a nullptr.
2016-01-09 12:20:57 -08:00
Jared Boone
8fba47b7d8 FIFO in and out indices should be volatile.
Later code revealed that the receiving core never notices (reads anew) the _in member variable when waiting for the FIFO to be empty (_in == _out).
2016-01-07 10:53:27 -08:00
furrtek
1e71a10346 UI options: backlight auto-off, splash screen toggle 2016-01-07 14:17:39 +01: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
2cd28fcc0c Make FIFO::in() more consistent with other functions. 2016-01-06 11:04:25 -08:00
Jared Boone
4059e9cebe Reintroduce FIFO in/out for templated FIFO element type. 2016-01-06 11:01:02 -08:00
Jared Boone
b05923eab6 Change FIFO is_full() to make more sense. 2016-01-06 10:58:42 -08:00
furrtek
496c77fe3e Module loading should work again
Modules won't load if already loaded (dirty footprint hack)
2016-01-05 20:17:55 +01:00
furrtek
3477a2691a Added missing files, ENUMed modulation modes 2016-01-05 11:47:46 +01: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
b058c0fe00 Consolidate M0-specific code. 2016-01-04 12:07:30 -08:00
Jared Boone
a27489eb21 Consolidating M4-specific saturation flag code. 2016-01-04 12:00:52 -08:00
Jared Boone
778e2d2381 A little code consolidation -- M0APP IRQ. 2016-01-04 10:12:18 -08:00
Jared Boone
5547782f5a Improve FFT twiddle factor precisions using Python SymPy.
Python math, numpy, scipy produce values with significant rounding errors.
2016-01-03 21:02:44 -08:00
Jared Boone
963b6e257a FFT twiddles can be used for all K <= table length.
Change assert to allow FFTs < 8.
2016-01-03 20:25:31 -08:00
Jared Boone
54e59cc224 Hard-code K=8 FFT twiddle constants for now.
So low on baseband RAM! This eliminates the sin_f32() function and table, which is only used in the FFT, for the moment.
2016-01-03 20:08:26 -08:00
Jared Boone
65dd385c94 Little FFT loop indexing tweak. 2016-01-03 17:47:08 -08:00
Jared Boone
62ee26e763 OK... Nuke list initializations. 2016-01-03 16:28:09 -08:00
Jared Boone
422f6c6960 Don't pass by reference in message constructors. 2016-01-03 16:21:17 -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
0497dbf62f NBFM configuration message.
Allows changing NBFM filter configurations from M0.
2016-01-03 12:46:21 -08:00
Jared Boone
c179b9e1cd Move FIR filter configs to common/, so M0 can use it.
Planning to pass from M0 to M4 so M4 doesn't need to keep all these different filter configs in text section.
2016-01-03 12:45:15 -08:00
Jared Boone
39ca6fec62 Transform update spectrum event into message. 2016-01-03 12:05:47 -08:00
furrtek
802ac496e9 Xylos (CCIR tones) TX, jammer update, SD card mod load
Xylos TX (CCIR tones) ;)
Jammer update, still buggy and inefficient
SD card module loader update
2016-01-03 07:24:30 +01:00
Jared Boone
ff05833b02 Use new decimation filters in AIS processor. 2016-01-01 13:20:02 -08:00
Jared Boone
3db0820b54 Remove LOCATE_IN_RAM from DMA IRQ handler
Not needed for M4, was causing code to be located in data RAM, and veneers to jump between code and data RAM. Reclaimed a few hundred bytes of code RAM.
2015-12-29 11:24:23 -08:00
Jared Boone
87c9772128 More M4 instruction wrappers, with vector typed arguments. 2015-12-28 16:52:10 -08:00
Jared Boone
f74e6690cb Utilize class types for member variables -- slightly more generic. 2015-12-28 16:51:34 -08:00
Jared Boone
ccc3402869 Add complex32_t type. 2015-12-28 10:14:35 -08:00
Jared Boone
dc86db5b87 Reminder to my future self to not over-optimize complex conjugate multiply. 2015-12-28 10:12:40 -08:00
Jared Boone
b8726b6ecf Un-bitfield PinConfig, GCC 5 didn't like it.
And GCC 4.9 was very touchy about it. Attempts to fix by other means broke MAX2837 register readback (but not writing?). It suggests there might be a deeper issue -- setup/hold timing?
2015-12-24 10:36:26 -08:00
Jared Boone
b65cd72a68 Remove some pointless GCC-isms. 2015-12-17 10:12:03 -08:00
Jared Boone
750506b33e Move more code from .hpp to .cpp. 2015-12-16 22:35:26 -08:00
Jared Boone
f204a58d24 WM8731 header clean-up. 2015-12-14 14:03:17 -08:00
Jared Boone
552bba47ea Move a lot of WM8731 functions to .cpp. 2015-12-14 13:57:45 -08:00
Jared Boone
fa3eaf0820 Disable audio codec wait-for-zero-crossing volume change mode.
This may explain (now unreproduceable) issue where UI volume changes weren't always changing the gain on the audio codec.
2015-12-14 12:26:41 -08:00
Jared Boone
24d60a11e3 Add WM8731.read() for cached values. 2015-12-14 12:09:01 -08:00
Jared Boone
9170c66bc0 Remove unused function declaration. 2015-12-12 11:37:59 -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
088f60f2bc Extract spectrum collector from BasebandProcessor.
Code size improvement, and less confused classes. :-)
2015-12-11 12:26:45 -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
83bf2a9a36 Tweak BasebandConfiguration constructors to avoid surprise type conversions. 2015-12-10 14:40:48 -08:00
Jared Boone
3ed77af0c1 BasebandProcessor: Streamline construction of some messages. 2015-12-10 12:25:11 -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
d0d97e92cb Rename ::Packet to baseband::Packet. Remove IPC packet types. 2015-12-08 15:15:51 -08:00
Jared Boone
90a7327cd5 Clean up FieldReader and BitRemap types. 2015-12-08 14:15:15 -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
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