Commit Graph

818 Commits

Author SHA1 Message Date
Jared Boone
a5793b8b9d Put Reader, Writer inside "stream" namespace. 2016-10-04 17:13:21 -07:00
Jared Boone
01320d9806 Add a Reader interface. 2016-10-04 17:04:49 -07:00
Jared Boone
f3bfd50399 Move IO functions into .cpp files. 2016-10-04 10:12:10 -07:00
Jared Boone
43c4584a32 Move WAV structs outside of writer. 2016-10-04 10:04:38 -07:00
Jared Boone
1a2fd3e127 Prepare WAV structures for extraction. 2016-10-04 09:59:47 -07:00
Jared Boone
1bdca0fd8d Extract (some) Writer classes to separate files.
TODO: PNGWriter could probably reuse this stuff too, but...
2016-10-04 09:57:13 -07:00
Jared Boone
4153995944 CPLD: Invert GCK2 to improve ADC sample timing. 2016-10-03 11:58:42 -07:00
Jared Boone
f756ac4eac CMake: Produce linker .map files for application, basebands. 2016-10-03 11:34:59 -07:00
Jared Boone
aed58f2a3f File: Stop copying path when iterating.
TODO: I bet I've made this mistake a billion other places...
2016-10-01 10:47:21 -07:00
Jared Boone
86f672af2b File: Add misc useful API from C++17. 2016-10-01 10:44:11 -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
55ba0b5e06 Cleanup, random mode in DTMF TX 2016-09-23 20:17:29 +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
furrtek
8c0ff7f9c0 Soundboard uses common lfsr rand() 2016-09-23 12:20:36 +02:00
Jared Boone
b87d1456a2 File: Make path a first-class object, add some methods from C++17. 2016-09-08 12:57:34 -07:00
Jared Boone
f80706cb34 File: Extract function to convert path to string. 2016-09-07 22:20:51 -07:00
Jared Boone
79330015ed File: Clean up directory_iterator construction, preserve pattern.
FatFs requires pattern pointer to be stable during search.
2016-09-07 20:46:45 -07:00
Jared Boone
2740761ed7 RecentEntriesX: Move non-templated bits to .cpp. 2016-09-05 16:49:44 -07:00
Jared Boone
722f9b6886 MenuItem: Misc const and constructor consistency adjustments.
Also moved add_items() body to .cpp file.
2016-09-05 15:30:45 -07:00
Jared Boone
9a01d59822 MenuView: Change add_items arg to initializer_list.
Another code size improvement, and makes maintaining lists of menu items less stupid (you don't need to change the template arg when the item count changes).
2016-09-05 15:20:50 -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
298324d6e4 RecentEntries: Extract Columns model. 2016-09-05 12:34:41 -07:00
Jared Boone
61f0d97c39 RecentEntriesView: Extract header and table widget, package in to top-level View. 2016-09-05 12:09:29 -07:00
Jared Boone
50e2dfa0b9 RecentEntries: Make templated type of std::list. 2016-09-03 22:53:44 -07:00
Jared Boone
bd785d8bf4 RecentEntries: Extract more algorithms. 2016-09-03 18:26:48 -07:00
Jared Boone
c8f7863c83 RecentEntries: Expose container as base class.
Trying to refactor until there's nothing but the base class left.
2016-09-03 18:12:07 -07:00
Jared Boone
b596d0697c RecentEntries: Extract range_around(). 2016-09-03 17:10:08 -07:00
Jared Boone
42d98c3b45 RecentEntries: Remove Packet template arg. 2016-09-03 16:38:44 -07:00
Jared Boone
4d781df76c RecentEntries: Don't reference Entry template arg directly. 2016-09-03 12:58:11 -07:00
Jared Boone
c6f7d7f844 RecentEntriesView: Extract duplicate focus+selection style code. 2016-09-02 22:44:40 -07:00
Jared Boone
1e0d452f57 RecentEntriesView: Generalize draw_header() implementations. 2016-09-02 22:38:05 -07:00
Jared Boone
42a07bb10c Remove repeated code in RF path Config. 2016-08-30 21:26:55 -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
furrtek
86e3b55a54 Bugfix: forgot bit reversal for POCSAG alphanumeric messages 2016-08-23 17:50:18 +02:00
furrtek
1b9465716f HH:MM in POCSAG RX 2016-08-23 14:35:14 +02:00
furrtek
0a549c8192 Manual frequency input in POCSAG RX
Changed firmware file name
2016-08-23 11:27:10 +02: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
81517b3f4d SD debug: Enlarge stack for long filenames, etc. 2016-08-21 22:16:08 -07:00
Jared Boone
ed791ac5bd File: Widen size/offset types for 64-bit filesystems. 2016-08-21 22:15:19 -07: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
43a11ba048 Rename time files/namespace to not conflict with existing defs. 2016-08-21 17:49:06 -07:00
Jared Boone
f20647feb4 MAX2837: Expose trim/bias/calibration adjustments. 2016-08-21 11:42:05 -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
furrtek
e686c7437e Fixed OOK clk setting 2016-08-06 12:55:39 +02: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
Jared Boone
447a7a5661 Add TXGainField user interface element. 2016-08-03 16:14:34 -07:00
Jared Boone
ef9b4051b7 Expose TX gain on ReceiverModel.
Obviously, ReceiverModel is an even worse name/concept than it was before.
2016-08-03 16:13:54 -07:00
Jared Boone
1e39b7ea45 Expose TX gain in radio API. 2016-08-03 16:12:22 -07:00
Jared Boone
45a1ccbc53 Correctly map TX gain from dB to register value. 2016-08-03 16:12:01 -07: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
94b27ec45c Scrollable menuview 2016-07-30 05:27:28 +02:00
Jared Boone
e9d97dfd0f FatFs: Update application ffconf.h from template. 2016-07-28 23:15:10 -07:00
furrtek
c58039e557 Fixed LCR scan and alt format, console widget, text input autotrim 2016-07-29 04:52:51 +02:00
Jared Boone
16a6d7efe0 Touch: Adjust thresholds and parameters for new scan. 2016-07-27 21:58:35 -07:00
Jared Boone
dd2097a447 Touch: Simplify scanning. 2016-07-27 21:57:51 -07:00
Jared Boone
8a8e84d763 Remove debugging code. 2016-07-27 21:57:00 -07: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
Jared Boone
aa1b8f63fc Remove errant debug #define. 2016-07-27 15:12:08 -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
f85d83475c ReceiverModel: Clean up Mode enum. 2016-07-27 14:57:50 -07:00
Jared Boone
f05d917a7c ReceiverModel: Use Mode instead of integer. 2016-07-27 14:51:37 -07:00
Jared Boone
371c6e0906 ReceiverModel: Eliminate now-redundant BasebandConfiguration. 2016-07-27 14:42:46 -07:00
Jared Boone
b60e88ef68 ReceiverModel: More method renaming.
update_baseband_configuration() -> update_sampling_rate().
2016-07-27 14:41:36 -07:00
Jared Boone
5a05a758a1 ReceiverModel: Use accessor method. 2016-07-27 14:40:30 -07:00
Jared Boone
44a1b7d9d7 ReceiverModel: Method renaming.
update_modulation_configuration() -> update_modulation().
2016-07-27 14:39:49 -07:00
Jared Boone
24fa97439d Touch: Add touch configuration UI. 2016-07-27 14:15:21 -07:00
Jared Boone
cd9b76ef78 Touch: Average/threshold tweaks. 2016-07-27 14:08:24 -07:00
Jared Boone
7492d50f0b Touch: Use calibration matrix. 2016-07-27 14:08:02 -07:00
Jared Boone
e813db16fd Touch: Missing #include. 2016-07-27 14:04:04 -07:00
Jared Boone
5e5417b456 Touch: Default and active calibration API of sorts. 2016-07-27 14:03:06 -07:00
Jared Boone
c022a72ef4 Touch: Add Calibration class.
Matrix transforms coordinates from digitizer to display.
2016-07-27 14:01:20 -07:00
furrtek
e958b4bd7d Fixed LCR transmit and AFSK baseband module 2016-07-27 21:26:03 +02:00
Jared Boone
8d330784b2 CFlags: Add "-g" compiler option for debug symbols. 2016-07-27 11:46:09 -07:00
Jared Boone
9500da4b1b Touch: Fix small loss of precision calculating X/Y positions. 2016-07-27 11:14:11 -07:00
Jared Boone
f1a3201940 Touch: Add bitmaps for calibration UI. 2016-07-27 11:13:07 -07:00
Jared Boone
6c2eb37248 Bitmap: Add note about how data is structured. 2016-07-26 21:29:59 -07: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
d0fd56bc78 Touch: Expose metrics calculation struct/function. 2016-07-26 15:13:07 -07:00
Jared Boone
3759e142d8 ERT: Add RSSI to app UI. 2016-07-25 16:12:32 -07:00
Jared Boone
5e362534c3 Transponder apps: Use gains from receiver model. 2016-07-25 16:07:22 -07:00
Jared Boone
c573f3b57d ERT: Fix initial focus. 2016-07-25 16:06:26 -07:00
Jared Boone
00f542e96b ERT: Add gain controls. 2016-07-25 16:06:09 -07:00
Jared Boone
aaa0e389b9 AIS: Add gain controls, RSSI and channel indications. 2016-07-25 15:46:37 -07:00
Jared Boone
4eb3f044a0 TPMS: Close row between controls and table header. 2016-07-25 15:29:52 -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
ffa797b926 File: Remove puts(), add write_line(), cascade changes in interface. 2016-07-24 20:39:21 -07:00
Jared Boone
c2d971d59e WAVFileWriter: Error handling while updating header. 2016-07-24 19:14:48 -07:00
Jared Boone
ff17f8f293 File: Do not use f_error() in puts(), it doesn't return the reason for failure.
TODO: Improve puts() behavior to return a more specific error than FR_EOF.
2016-07-24 19:13:39 -07:00
Jared Boone
d556ef38b4 File: Make incomplete write()s return FR_DISK_FULL. 2016-07-24 19:12:37 -07:00
Jared Boone
931853a55f Make File::Result::value() const. 2016-07-24 19:12:09 -07: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
6f65cdf41e Add frequency step control to capture app.
Redistribute other controls, remove empty row that had been reserved for options views.
2016-07-19 10:48:45 -07:00
Jared Boone
a98ada0cb7 Extract FrequencyStepView from FrequencyOptionsView.
...for use in capture app.
2016-07-19 10:47:15 -07:00
Jared Boone
77291b4e31 On PortaPack shutdown, init HackRF CPLD to EEPROM bitstream. 2016-07-18 11:32:14 -07:00
Jared Boone
c0b9761fe5 Move CPLD management into PortaPack::init(). 2016-07-18 11:30:45 -07:00
Jared Boone
3f3fe3bb67 JTAG: Report if HackRF CPLD bitstream matches released version.
TODO: Could be better reporting (CRC?), and could not pause while checking CPLD EEPROM, and could offer a means to program the bitstream if it doesn't match...
2016-07-17 15:56:24 -07:00
Jared Boone
204408d288 JTAG: Load HackRF CPLD bitstream into SRAM from firmware image.
No further concerns about the HackRF CPLD having an ancient bitstream on it! At least in PortaPack mode...
2016-07-17 15:54:02 -07:00
Jared Boone
c8b1a8fbf6 JTAG: Add functions to check EEPROM, load SRAM of HackRF CPLD. 2016-07-17 15:52:58 -07:00
Jared Boone
1d58f05163 JTAG: Auto-generate HackRF CPLD data from SVF. 2016-07-17 15:50:36 -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
740edc4d49 Remove PortaPack CPLD checksum display.
No point in calculating or showing, since full compare against desired bits is done at every startup -- way better than a CRC, and if it fails tries to program. If programming fails, the PortaPack panics and LED flashes.
2016-07-05 12:08:56 -07:00
Jared Boone
42190b9587 CMake: Fix ldscript dependencies. 2016-07-03 18:48:39 -07:00
Jared Boone
b6fe392512 CMake: Improve dependencies, how output files are managed/cleaned.
I almost think I understand CMake, now. Almost.
2016-07-03 18:32:50 -07:00
Jared Boone
45ca3cf7e6 CMake: reduce intermediate targets, add script dependencies. 2016-07-03 11:32:21 -07:00
Jared Boone
c52f5fa26c Expose static EventDispatcher to stop main loop.
Used to fix reboot into HackRF firmware.
2016-07-02 16:38:01 -07:00
Jared Boone
57293bc5eb Clear application message queue after baseband is shut down. 2016-07-02 16:19:41 -07:00
Jared Boone
30efa53956 Clear M4->M0 interrupt before M4 image is loaded.
...out of an abundance of caution.
2016-07-02 16:15:43 -07:00
Jared Boone
34e45412d1 Dumb baseband-running state tracking to ease use of baseband API. 2016-07-02 16:12:36 -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
97760a2f9d Remove GNU Make files, now using CMake to build firmware. 2016-06-30 12:04:10 -07:00
Jared Boone
cf5ac441ae Add CMake firmware build system. 2016-06-30 12:02:43 -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
e263420ea3 Enable M4 interrupt on M0 core only when M4 image is running. 2016-06-24 11:32:24 -07:00
Jared Boone
c7497577a0 Make all app->baseband messages synchronous.
No idea why they shouldn't be...
2016-06-24 11:31:41 -07:00
Jared Boone
303bfeaafc Run baseband image per application.
First step toward having separate baseband images per app or function.
2016-06-24 11:30:54 -07:00
Jared Boone
ac0bdc35a6 Set TPMS app initial focus. 2016-06-23 22:11:47 -07:00
Jared Boone
fead46cc46 Fix state management in Capture mode.
Don't alter ReceiverModel modulation/mode when capturing.
2016-06-23 12:03:47 -07:00
Jared Boone
3cdce88e5d TPMS: Allow band selection: 315 or 433.92 (~434) MHz. 2016-06-21 15:36:57 -07:00
Jared Boone
003ce4990d Move CaptureThread::static_fn into .cpp. 2016-06-21 12:15:57 -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
4ffb05212e Pass error_callback by value. 2016-06-21 11:52:05 -07:00
Jared Boone
0e33d7e5d0 Refresh UIRecordVide status display when appropriate. 2016-06-21 11:35:41 -07:00
Jared Boone
44fb66b4f9 Rename UIRecordView::on_tick_second() -> update_status_display(). 2016-06-21 11:35:15 -07:00
Jared Boone
19e5e111a9 Move UIRecordView::set_sampling_rate to .cpp. 2016-06-21 11:33:23 -07:00
Jared Boone
59aa99c8ff Whoops, use events_flag(), not events_flag_isr(). 2016-06-21 11:19:22 -07:00
Jared Boone
320d979924 Simplify CaptureThread error callback functions. 2016-06-21 11:13:58 -07:00
Jared Boone
cfaa44b02a Send CaptureThread error into app-local message queue. 2016-06-21 11:04:10 -07:00
Jared Boone
76c5fe96af Use app-local queue for messages coming from application.
Messages are now deferred until application thread call stack unwinds, events are checked.
2016-06-21 11:00:42 -07:00
Jared Boone
dbe735233a Add app-local MessageQueue. 2016-06-21 10:57:44 -07:00
Jared Boone
c990963298 Expose filesystem_error code. 2016-06-21 10:54:13 -07:00
Jared Boone
420adea180 Move capture start/stop into baseband API.
Hide more calls to baseband/shared memory.
2016-06-20 10:52:59 -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