mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-08-16 21:03:24 +00:00
395e20d17b
* Cleaned up #ifndef PRALINE and updated logic to being with #ifdef PRALINE entries where possible to make logic flow for PRALINE code execution pipeline clearer. Cleaned up compiletime warnings for PRALINE related codebase updates. * Addressed comments provided by copilot during PR review. Combed through frequency definitions for consistency between PLL A and PLL B register definitions for CLKs 0-7. Ensured CLK3/LK6 <- SMA PORTs and CLK7 <- not utiliized are disabled during core development phase to support root cause analysis of any spectral artifacts. Updated MCU frequency to 40MHz to ensure audio harmonics are outside FM radio band range (< 80 MHz, >120MHz) and added comments clarifying choice of 40 over 10 MHz for potential future root cause analysis in other bands where audio may be expected as needed. Added CLK6 and CLK7 to Clocks Status View Debug display. Moved CLK defintions and PLL instantiations for components that are most RF sensitive to PLL A. Left others in PLL B. That is move FPGA CLK1 to PLL B, while moving CLK2, CLK4, and CLK5 to PLL A. * Cleaned up PLL A and B XTAL reference checks relative to 800 MHz. * Encapsulated HackRF Pro Praline debug and status vies into a single Pro Debug submenu as part of clean up. * Fixed BLE RX Out of Memory error. Updated LPC43xx ld scripts to accouint for additional HackRF Pro praline memory. * Addressed copilot comments for ble_rx_app by adding recent_entries_view.set_dirty. Updated ble_rx_app for easier use with heap limit set to one less than recent entries max limit. * Addressed copilot comments by updating comment clarity in source files. Updated ui_debug to allow for return reference if set for PRO debug menu item. * Improved readability of intialization parameters for the FPGA registers, and addressed 20Mhz nulls by initializing DC Notch width with standard setting, and DC Adaptiation rate with a balanced setting. * Ran format-code.sh * Added option to allow for user to set number if entries in recent list. Default is set to a relatively stable 32. * Removed #ifdef PRALINE pragmas from ble_rx_app such that HackRF One can also use the updated UI widget to allow for user to set number of entries in recent list. * Ran format-code.sh * Improved RSSI for praline. Values are now being counted correctly by statistics methods after selecting ADC = 0 0 for RSSI. This was different than for the hackrf one which uses ADC = 1. * Implemented SW RSSI calculation since HW RSSI not currently available in hackrf pro (praline) via fpga pass through. Calibrated RSSI power sensistivity to mid level signal intensitities. * In preparation for WIP allocated full 128k to M4 limiting heap for M0 to 0k, and leabing it only with 64k from bank 0. That is, bank1 and bank2 are fully allocated to M4. Cleaned up #ifdef PRALINE conditionals such taht max2837/39 are in #else conditionals, as well as continuing to clean up hackrf_r9 booleans by placing them within #else conditionals. * fix typo Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Addressed co-pilot comments. Clarified use of 25 recent samples in ble app for stability, udpated comments to reflect use of avg power over pwak pwer detection, improved safety of sample packing while relying on intrinstics for execute the implementation in a single machine instruction (PKHBT) for computational and memory efficiency.
114 lines
3.5 KiB
C++
114 lines
3.5 KiB
C++
/*
|
|
* Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc.
|
|
* Copyright (C) 2016 Furrtek
|
|
*
|
|
* This file is part of PortaPack.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef __PORTAPACK_SHARED_MEMORY_H__
|
|
#define __PORTAPACK_SHARED_MEMORY_H__
|
|
|
|
#include <cstdint>
|
|
#include <cstddef>
|
|
|
|
#include "message_queue.hpp"
|
|
|
|
struct JammerChannel {
|
|
bool enabled;
|
|
uint64_t center;
|
|
uint32_t width;
|
|
uint32_t duration;
|
|
};
|
|
|
|
struct HopperChannel {
|
|
bool enabled;
|
|
uint64_t center;
|
|
uint32_t width;
|
|
uint32_t duration;
|
|
};
|
|
|
|
struct ToneDef {
|
|
uint32_t delta;
|
|
uint32_t duration;
|
|
};
|
|
|
|
struct ToneData {
|
|
ToneDef tone_defs[32];
|
|
uint32_t silence;
|
|
uint8_t message[256];
|
|
};
|
|
|
|
/* NOTE: These structures must be located in the same location in both M4 and M0 binaries */
|
|
struct SharedMemory {
|
|
#ifdef PRALINE
|
|
/*
|
|
* Software RSSI: 8 packed I/Q samples from baseband_thread.
|
|
*
|
|
* baseband_thread copies 8 samples spread across buffer (no computation).
|
|
* Each sample is packed: Q in high 16 bits, I in low 16 bits.
|
|
* rssi_thread uses __SMUAD on each to compute I²+Q², finds peak.
|
|
*
|
|
* 8 samples avoids zero-crossing artifacts from single-sample approach.
|
|
*/
|
|
volatile uint32_t software_rssi_iq[8]{0}; // 8 packed I/Q samples
|
|
#endif
|
|
|
|
static constexpr size_t application_queue_k = 11;
|
|
static constexpr size_t app_local_queue_k = 11;
|
|
|
|
uint8_t application_queue_data[1 << application_queue_k]{0};
|
|
uint8_t app_local_queue_data[1 << app_local_queue_k]{0};
|
|
const Message* volatile baseband_message{nullptr};
|
|
MessageQueue application_queue{application_queue_data, application_queue_k};
|
|
MessageQueue app_local_queue{app_local_queue_data, app_local_queue_k};
|
|
|
|
char m4_panic_msg[32]{0};
|
|
|
|
union {
|
|
ToneData tones_data;
|
|
struct {
|
|
JammerChannel jammer_channels[80];
|
|
HopperChannel hopper_channels[24];
|
|
} dummy_seperate;
|
|
uint8_t data[512];
|
|
} bb_data{{{{0, 0}}, 0, {0}}};
|
|
|
|
// Set by the M4 to indicate that the baseband app is ready.
|
|
bool volatile baseband_ready{false};
|
|
void clear_baseband_ready() { baseband_ready = false; }
|
|
void set_baseband_ready() { baseband_ready = true; }
|
|
|
|
uint8_t volatile request_m4_performance_counter{0};
|
|
uint8_t volatile m4_performance_counter{0};
|
|
uint16_t volatile m4_stack_usage{0};
|
|
uint32_t volatile m4_heap_usage{0};
|
|
uint16_t volatile m4_buffer_missed{0};
|
|
|
|
#ifdef PRALINE
|
|
// Phase 0 instrumentation counters for PRALINE radio debugging
|
|
uint32_t volatile m4_dma_xfr_count{0}; // DMA transfer_complete() calls
|
|
uint32_t volatile m4_dma_wait_count{0}; // wait_for_buffer() calls
|
|
uint32_t volatile m4_baseband_loops{0}; // Main loop iterations
|
|
uint8_t volatile m4_streaming_marker{0}; // Proves streaming_enable() called
|
|
#endif
|
|
};
|
|
|
|
extern SharedMemory& shared_memory;
|
|
|
|
#endif /*__PORTAPACK_SHARED_MEMORY_H__*/
|