-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Firmware updates to allow fine-grained control of biast from command …
…line (#1314) * Initial commit of hackrf_biast * Cleaned up hackrf_biast * Cleaned up usage info * Include getopt.h for non-GNU systems * Add support for overriding HackRF's default antenna power behavior in firmware. Add support for specifying antenna power behavior in libhackrf. * Moved bias tee config routines into user_config.c, cleaned up operation of hackrf_biast * hackrf_biast now calls usage() and exits when invoked with no arguments * Fixed minor documentation error in usage() * minor syntax cleanup * Add some documentation to the host API call * Add proper declaration magic in hackrf.h to hackrf_set_user_bias_t_opts() to appease Visual Studio * Documentation changes suggested by @martinling * Moved bias t setting above switch statement, removed line that explicit turned bias t off when entering OFF mode * Change hackrf_set_user_bias_t_opts() to use a friendly struct() instead of a bitmask. User friendliness fixes to hackrf_biast options. More clang-format appeasement. * Removed support for integer mode args from hackrf_biast * clang-format error fixes * Tweaked position of comment for clang-format v14 * Reformat files with clang-format v14 instead of 16 * Remove internal numeric modes for bias T settings Co-authored-by: Martin Ling <[email protected]> * Fix documentation error in hackrf_biast.c --------- Co-authored-by: Martin Ling <[email protected]>
- Loading branch information
1 parent
13dacd8
commit dab548b
Showing
12 changed files
with
495 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
/* | ||
* Copyright 2023 Jonathan Suite (GitHub: @ai6aj) | ||
* | ||
* 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. | ||
*/ | ||
|
||
#include "user_config.h" | ||
|
||
static user_config_user_opt_t user_direction_rx_bias_t_opts = RF_DIRECTION_USER_OPT_NOP; | ||
static user_config_user_opt_t user_direction_tx_bias_t_opts = RF_DIRECTION_USER_OPT_NOP; | ||
static user_config_user_opt_t user_direction_off_bias_t_opts = | ||
RF_DIRECTION_USER_OPT_CLEAR; | ||
|
||
// Perform user-specified actions to Bias T power when transitioning modes | ||
static void _rf_path_handle_user_bias_t_action(rf_path_t* const rf_path, int action) | ||
{ | ||
switch (action) { | ||
case RF_DIRECTION_USER_OPT_SET: | ||
rf_path_set_antenna(rf_path, 1); | ||
break; | ||
|
||
case RF_DIRECTION_USER_OPT_CLEAR: | ||
rf_path_set_antenna(rf_path, 0); | ||
break; | ||
|
||
case RF_DIRECTION_USER_OPT_NOP: | ||
default: | ||
break; | ||
} | ||
} | ||
|
||
void user_config_on_rf_path_direction_change( | ||
rf_path_t* const rf_path, | ||
const rf_path_direction_t direction) | ||
{ | ||
switch (direction) { | ||
case RF_PATH_DIRECTION_RX: | ||
_rf_path_handle_user_bias_t_action(rf_path, user_direction_rx_bias_t_opts); | ||
break; | ||
|
||
case RF_PATH_DIRECTION_TX: | ||
_rf_path_handle_user_bias_t_action(rf_path, user_direction_tx_bias_t_opts); | ||
break; | ||
|
||
case RF_PATH_DIRECTION_OFF: | ||
default: | ||
_rf_path_handle_user_bias_t_action( | ||
rf_path, | ||
user_direction_off_bias_t_opts); | ||
break; | ||
} | ||
} | ||
|
||
void user_config_set_bias_t_opt( | ||
const rf_path_direction_t direction, | ||
const user_config_user_opt_t option) | ||
{ | ||
switch (direction) { | ||
case RF_PATH_DIRECTION_RX: | ||
user_direction_rx_bias_t_opts = option; | ||
break; | ||
|
||
case RF_PATH_DIRECTION_TX: | ||
user_direction_tx_bias_t_opts = option; | ||
break; | ||
|
||
case RF_PATH_DIRECTION_OFF: | ||
user_direction_off_bias_t_opts = option; | ||
break; | ||
|
||
default: | ||
break; | ||
} | ||
} | ||
|
||
/* | ||
Bias T options are set as follows: | ||
Bits 0,1: One of NOP (0), CLEAR (0b10), or SET (0b11) | ||
Bit 2: 1=Set OFF behavior according to bits 0,1 0=Don't change | ||
Bits 3,4: One of NOP (0), CLEAR (0b10), or SET (0b11) | ||
Bit 5: 1=Set RX behavior according to bits 0,1 0=Don't change | ||
Bits 6,7: One of NOP (0), CLEAR (0b10), or SET (0b11) | ||
Bit 8: 1=Set TX behavior according to bits 0,1 0=Don't change | ||
Bits 9-15: Ignored; set to 0 | ||
*/ | ||
void user_config_set_bias_t_opts(uint16_t value) | ||
{ | ||
if (value & 0x4) { | ||
user_config_set_bias_t_opt(RF_PATH_DIRECTION_OFF, value & 0x3); | ||
} | ||
if (value & 0x20) { | ||
user_config_set_bias_t_opt(RF_PATH_DIRECTION_RX, (value & 0x18) >> 3); | ||
} | ||
if (value & 0x100) { | ||
user_config_set_bias_t_opt(RF_PATH_DIRECTION_TX, (value & 0xC0) >> 6); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Copyright 2023 Jonathan Suite (GitHub: @ai6aj) | ||
* | ||
* 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 __USER_CONFIG_H__ | ||
#define __USER_CONFIG_H__ | ||
|
||
#include "rf_path.h" | ||
|
||
typedef enum { | ||
RF_DIRECTION_USER_OPT_NOP, // No OPeration / Ignore the thing | ||
RF_DIRECTION_USER_OPT_RESERVED, // Currently a NOP | ||
RF_DIRECTION_USER_OPT_CLEAR, // Clear/Disable the thing | ||
RF_DIRECTION_USER_OPT_SET, // Set/Enable the thing | ||
} user_config_user_opt_t; | ||
|
||
void user_config_set_bias_t_opt( | ||
const rf_path_direction_t direction, | ||
const user_config_user_opt_t action); | ||
void user_config_set_bias_t_opts(uint16_t value); | ||
|
||
void user_config_on_rf_path_direction_change( | ||
rf_path_t* const rf_path, | ||
const rf_path_direction_t direction); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,7 @@ SET(TOOLS | |
hackrf_clock | ||
hackrf_sweep | ||
hackrf_operacake | ||
hackrf_biast | ||
) | ||
|
||
if(MSVC) | ||
|
Oops, something went wrong.