From 5b2a3907282977f590091598902c0643f31af232 Mon Sep 17 00:00:00 2001 From: Martin Ling Date: Mon, 20 Dec 2021 10:18:33 +0000 Subject: [PATCH] Move M0 offset and tx variables into a state struct. These variables are already placed together; this commit just groups them into a struct and declares this in a new header. This commit should not result in any change to the firmware binary. Only the names of symbols are changed. --- firmware/common/LPC43xx_M4_memory.ld | 3 +- firmware/hackrf_usb/m0_state.h | 36 +++++++++++++++++++++++ firmware/hackrf_usb/usb_api_sweep.c | 5 ++-- firmware/hackrf_usb/usb_api_transceiver.c | 17 ++++++----- firmware/hackrf_usb/usb_bulk_buffer.h | 4 --- 5 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 firmware/hackrf_usb/m0_state.h diff --git a/firmware/common/LPC43xx_M4_memory.ld b/firmware/common/LPC43xx_M4_memory.ld index 6d501e3c..85b9a6c4 100644 --- a/firmware/common/LPC43xx_M4_memory.ld +++ b/firmware/common/LPC43xx_M4_memory.ld @@ -34,6 +34,5 @@ MEMORY } usb_bulk_buffer = ORIGIN(ram_usb); -usb_bulk_buffer_offset = ORIGIN(ram_shared); -usb_bulk_buffer_tx = ORIGIN(ram_shared)+4; +m0_state = ORIGIN(ram_shared); PROVIDE(__ram_m0_start__ = ORIGIN(ram_m0)); diff --git a/firmware/hackrf_usb/m0_state.h b/firmware/hackrf_usb/m0_state.h new file mode 100644 index 00000000..102a3ada --- /dev/null +++ b/firmware/hackrf_usb/m0_state.h @@ -0,0 +1,36 @@ +/* + * Copyright 2022 Great Scott Gadgets + * + * This file is part of HackRF. + * + * 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 __M0_STATE_H__ +#define __M0_STATE_H__ + +struct m0_state { + uint32_t offset; + uint32_t tx; +}; + +/* Address of m0_state is set in ldscripts. If you change the name of this + * variable, it won't be where it needs to be in the processor's address space, + * unless you also adjust the ldscripts. + */ +extern volatile struct m0_state m0_state; + +#endif/*__M0_STATE_H__*/ diff --git a/firmware/hackrf_usb/usb_api_sweep.c b/firmware/hackrf_usb/usb_api_sweep.c index 1a73e8dd..648a812d 100644 --- a/firmware/hackrf_usb/usb_api_sweep.c +++ b/firmware/hackrf_usb/usb_api_sweep.c @@ -25,6 +25,7 @@ #include #include "usb_api_transceiver.h" #include "usb_bulk_buffer.h" +#include "m0_state.h" #include "tuning.h" #include "usb_endpoint.h" #include "streaming.h" @@ -99,7 +100,7 @@ void sweep_mode(void) { while (TRANSCEIVER_MODE_RX_SWEEP == transceiver_mode()) { // Set up IN transfer of buffer 0. - if ( usb_bulk_buffer_offset >= 16384 && phase == 1) { + if ( m0_state.offset >= 16384 && phase == 1) { transfer = true; buffer = &usb_bulk_buffer[0x0000]; phase = 0; @@ -107,7 +108,7 @@ void sweep_mode(void) { } // Set up IN transfer of buffer 1. - if ( usb_bulk_buffer_offset < 16384 && phase == 0) { + if ( m0_state.offset < 16384 && phase == 0) { transfer = true; buffer = &usb_bulk_buffer[0x4000]; phase = 1; diff --git a/firmware/hackrf_usb/usb_api_transceiver.c b/firmware/hackrf_usb/usb_api_transceiver.c index 1f40c86d..a580bca7 100644 --- a/firmware/hackrf_usb/usb_api_transceiver.c +++ b/firmware/hackrf_usb/usb_api_transceiver.c @@ -27,6 +27,7 @@ #include #include "usb_bulk_buffer.h" +#include "m0_state.h" #include "usb_api_cpld.h" // Remove when CPLD update is handled elsewhere @@ -262,20 +263,20 @@ void set_transceiver_mode(const transceiver_mode_t new_transceiver_mode) { led_off(LED3); led_on(LED2); rf_path_set_direction(&rf_path, RF_PATH_DIRECTION_RX); - usb_bulk_buffer_tx = false; + m0_state.tx = false; break; case TRANSCEIVER_MODE_TX: led_off(LED2); led_on(LED3); rf_path_set_direction(&rf_path, RF_PATH_DIRECTION_TX); - usb_bulk_buffer_tx = true; + m0_state.tx = true; break; case TRANSCEIVER_MODE_OFF: default: led_off(LED2); led_off(LED3); rf_path_set_direction(&rf_path, RF_PATH_DIRECTION_OFF); - usb_bulk_buffer_tx = false; + m0_state.tx = false; } @@ -284,7 +285,7 @@ void set_transceiver_mode(const transceiver_mode_t new_transceiver_mode) { hw_sync_enable(_hw_sync_mode); - usb_bulk_buffer_offset = 0; + m0_state.offset = 0; } } @@ -330,7 +331,7 @@ void rx_mode(void) { while (TRANSCEIVER_MODE_RX == _transceiver_mode) { // Set up IN transfer of buffer 0. - if (16384 <= usb_bulk_buffer_offset && 1 == phase) { + if (16384 <= m0_state.offset && 1 == phase) { usb_transfer_schedule_block( &usb_endpoint_bulk_in, &usb_bulk_buffer[0x0000], @@ -340,7 +341,7 @@ void rx_mode(void) { phase = 0; } // Set up IN transfer of buffer 1. - if (16384 > usb_bulk_buffer_offset && 0 == phase) { + if (16384 > m0_state.offset && 0 == phase) { usb_transfer_schedule_block( &usb_endpoint_bulk_in, &usb_bulk_buffer[0x4000], @@ -368,7 +369,7 @@ void tx_mode(void) { while (TRANSCEIVER_MODE_TX == _transceiver_mode) { // Set up OUT transfer of buffer 0. - if (16384 <= usb_bulk_buffer_offset && 1 == phase) { + if (16384 <= m0_state.offset && 1 == phase) { usb_transfer_schedule_block( &usb_endpoint_bulk_out, &usb_bulk_buffer[0x0000], @@ -378,7 +379,7 @@ void tx_mode(void) { phase = 0; } // Set up OUT transfer of buffer 1. - if (16384 > usb_bulk_buffer_offset && 0 == phase) { + if (16384 > m0_state.offset && 0 == phase) { usb_transfer_schedule_block( &usb_endpoint_bulk_out, &usb_bulk_buffer[0x4000], diff --git a/firmware/hackrf_usb/usb_bulk_buffer.h b/firmware/hackrf_usb/usb_bulk_buffer.h index 0900fd4d..6e120714 100644 --- a/firmware/hackrf_usb/usb_bulk_buffer.h +++ b/firmware/hackrf_usb/usb_bulk_buffer.h @@ -32,8 +32,4 @@ */ extern uint8_t usb_bulk_buffer[32768]; -extern volatile uint32_t usb_bulk_buffer_offset; - -extern bool usb_bulk_buffer_tx; - #endif/*__USB_BULK_BUFFER_H__*/