Workaround for Capture startup hang (#1285)

* Attempt to fix Capture startup hang

* Pump baseband_queue on M4 startup

* Synchronization experiment

* Moved SpectrumCapture member, better hang detection for M0

* Prevent execute from working on members until class has been initialized.

* Formatting

* Remove workaround.

* Rebase on next
This commit is contained in:
Kyle Reed 2023-07-22 10:06:55 -07:00 committed by GitHub
parent 3b5890d0aa
commit 47e95c0c47
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 102 additions and 67 deletions

View file

@ -19,21 +19,18 @@
* Boston, MA 02110-1301, USA.
*/
#include "event_m4.hpp"
#include "debug.hpp"
#include "portapack_shared_memory.hpp"
#include "message_queue.hpp"
#include "ch.h"
#include "debug.hpp"
#include "event_m4.hpp"
#include "lpc43xx_cpp.hpp"
using namespace lpc43xx;
#include "message_queue.hpp"
#include "portapack_shared_memory.hpp"
#include <cstdint>
#include <array>
using namespace lpc43xx;
extern "C" {
CH_IRQ_HANDLER(MAPP_IRQHandler) {
@ -61,6 +58,10 @@ void EventDispatcher::run() {
lpc43xx::creg::m0apptxevent::enable();
// Indicate to the M0 thread that
// M4 is ready to receive message events.
shared_memory.set_baseband_ready();
while (is_running) {
const auto events = wait();
dispatch(events);