mirror of
https://github.com/liberatedsystems/RNode_Firmware_CE.git
synced 2025-06-19 03:59:27 -04:00
Switch from board variant being set separately to using model number instead.
This commit is contained in:
parent
63eab05014
commit
ba2d36add9
5 changed files with 132 additions and 52 deletions
163
Radio.cpp
163
Radio.cpp
|
@ -2192,11 +2192,118 @@ void sx128x::disableTCXO() {
|
|||
}
|
||||
|
||||
void sx128x::setTxPower(int level, int outputPin) {
|
||||
// PA calculation currently only works for the LoRa1280F27. Support for
|
||||
// other assemblies would be appreciated in a PR.
|
||||
if (outputPin == PA_OUTPUT_PA_BOOST_PIN) {
|
||||
if (level > 27) {
|
||||
level = 27;
|
||||
uint8_t tx_buf[2];
|
||||
#if BOARD_VARIANT == MODEL_13
|
||||
// RAK4631 with WisBlock SX1280 module (LIBSYS002)
|
||||
if (level > 27) {
|
||||
level = 27;
|
||||
} else if (level < 0) {
|
||||
level = 0;
|
||||
}
|
||||
|
||||
_txp = level;
|
||||
|
||||
int reg_value;
|
||||
|
||||
switch (level) {
|
||||
case 0:
|
||||
reg_value = -18;
|
||||
break;
|
||||
case 1:
|
||||
reg_value = -17;
|
||||
break;
|
||||
case 2:
|
||||
reg_value = -16;
|
||||
break;
|
||||
case 3:
|
||||
reg_value = -15;
|
||||
break;
|
||||
case 4:
|
||||
reg_value = -14;
|
||||
break;
|
||||
case 5:
|
||||
reg_value = -13;
|
||||
break;
|
||||
case 6:
|
||||
reg_value = -12;
|
||||
break;
|
||||
case 7:
|
||||
reg_value = -10;
|
||||
break;
|
||||
case 8:
|
||||
reg_value = -9;
|
||||
break;
|
||||
case 9:
|
||||
reg_value = -8;
|
||||
break;
|
||||
case 10:
|
||||
reg_value = -7;
|
||||
break;
|
||||
case 11:
|
||||
reg_value = -6;
|
||||
break;
|
||||
case 12:
|
||||
reg_value = -5;
|
||||
break;
|
||||
case 13:
|
||||
reg_value = -4;
|
||||
break;
|
||||
case 14:
|
||||
reg_value = -3;
|
||||
break;
|
||||
case 15:
|
||||
reg_value = -2;
|
||||
break;
|
||||
case 16:
|
||||
reg_value = -1;
|
||||
break;
|
||||
case 17:
|
||||
reg_value = 0;
|
||||
break;
|
||||
case 18:
|
||||
reg_value = 1;
|
||||
break;
|
||||
case 19:
|
||||
reg_value = 2;
|
||||
break;
|
||||
case 20:
|
||||
reg_value = 3;
|
||||
break;
|
||||
case 21:
|
||||
reg_value = 4;
|
||||
break;
|
||||
case 22:
|
||||
reg_value = 5;
|
||||
break;
|
||||
case 23:
|
||||
reg_value = 6;
|
||||
break;
|
||||
case 24:
|
||||
reg_value = 8;
|
||||
break;
|
||||
case 25:
|
||||
reg_value = 9;
|
||||
break;
|
||||
case 26:
|
||||
reg_value = 12;
|
||||
break;
|
||||
case 27:
|
||||
reg_value = 13;
|
||||
break;
|
||||
default:
|
||||
reg_value = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
tx_buf[0] = reg_value;
|
||||
tx_buf[1] = 0xE0; // ramping time - 20 microseconds
|
||||
|
||||
executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2);
|
||||
|
||||
#elif BOARD_VARIANT == MODEL_A5
|
||||
// T3S3 SX1280 PA
|
||||
if (level > 20) {
|
||||
level = 20;
|
||||
} else if (level < 0) {
|
||||
level = 0;
|
||||
}
|
||||
|
@ -2206,7 +2313,7 @@ void sx128x::setTxPower(int level, int outputPin) {
|
|||
int reg_value;
|
||||
|
||||
switch (level) {
|
||||
case 0:
|
||||
/*case 0:
|
||||
reg_value = -18;
|
||||
break;
|
||||
case 1:
|
||||
|
@ -2265,57 +2372,31 @@ void sx128x::setTxPower(int level, int outputPin) {
|
|||
break;
|
||||
case 19:
|
||||
reg_value = 2;
|
||||
break;
|
||||
break;*/
|
||||
case 20:
|
||||
reg_value = 3;
|
||||
break;
|
||||
case 21:
|
||||
reg_value = 4;
|
||||
break;
|
||||
case 22:
|
||||
reg_value = 5;
|
||||
break;
|
||||
case 23:
|
||||
reg_value = 6;
|
||||
break;
|
||||
case 24:
|
||||
reg_value = 8;
|
||||
break;
|
||||
case 25:
|
||||
reg_value = 9;
|
||||
break;
|
||||
case 26:
|
||||
reg_value = 12;
|
||||
break;
|
||||
case 27:
|
||||
reg_value = 13;
|
||||
default:
|
||||
reg_value = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
uint8_t tx_buf[2];
|
||||
|
||||
tx_buf[0] = reg_value;
|
||||
tx_buf[0] = level;
|
||||
tx_buf[1] = 0xE0; // ramping time - 20 microseconds
|
||||
|
||||
executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2);
|
||||
} else {
|
||||
#else
|
||||
// For SX1280 boards with no specific PA requirements
|
||||
if (level > 13) {
|
||||
level = 13;
|
||||
} else if (level < -18) {
|
||||
level = -18;
|
||||
}
|
||||
|
||||
_txp = level;
|
||||
|
||||
level = level + 18;
|
||||
|
||||
uint8_t tx_buf[2];
|
||||
|
||||
tx_buf[0] = level;
|
||||
tx_buf[1] = 0xE0; // ramping time - 20 microseconds
|
||||
|
||||
executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2);
|
||||
}
|
||||
#endif
|
||||
executeOpcode(OP_TX_PARAMS_8X, tx_buf, 2);
|
||||
}
|
||||
|
||||
uint8_t sx128x::getTxPower() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue