I will dump here my modif to inav code, look for // commented-deleted code and // tcra comment (modified parts).
Then I will explain what I think.
vtx_tramp.c :
//const uint16_t trampPowerTable_5G8_200[VTX_TRAMP_5G8_MAX_POWER_COUNT] = { 25, 100, 200, 200, 200 };
//const char * const trampPowerNames_5G8_200[VTX_TRAMP_5G8_MAX_POWER_COUNT + 1] = { “—”, "25 ", “100”, “200”, “200”, “200” };
//
//const uint16_t trampPowerTable_5G8_400[VTX_TRAMP_5G8_MAX_POWER_COUNT] = { 25, 100, 200, 400, 400 };
//const char * const trampPowerNames_5G8_400[VTX_TRAMP_5G8_MAX_POWER_COUNT + 1] = { “—”, "25 ", “100”, “200”, “400”, “400” };
//
//const uint16_t trampPowerTable_5G8_600[VTX_TRAMP_5G8_MAX_POWER_COUNT] = { 25, 100, 200, 400, 600 };
//const char * const trampPowerNames_5G8_600[VTX_TRAMP_5G8_MAX_POWER_COUNT + 1] = { “—”, "25 ", “100”, “200”, “400”, “600” };
//
//const uint16_t trampPowerTable_5G8_800[VTX_TRAMP_5G8_MAX_POWER_COUNT] = { 25, 100, 200, 500, 800 };
//const char * const trampPowerNames_5G8_800[VTX_TRAMP_5G8_MAX_POWER_COUNT + 1] = { “—”, "25 ", “100”, “200”, “500”, “800” };
//const uint16_t trampPowerTable_1G3_800[VTX_TRAMP_1G3_MAX_POWER_COUNT] = { 25, 200, 800 };
//const char * const trampPowerNames_1G3_800[VTX_TRAMP_1G3_MAX_POWER_COUNT + 1] = { “—”, "25 ", “200”, “800” };
// tcra : added 1600
const uint16_t trampPowerTable_5G8_1600[VTX_TRAMP_5G8_MAX_POWER_COUNT] = { 25, 400, 800, 1600 };
const char * const trampPowerNames_5G8_1600[VTX_TRAMP_5G8_MAX_POWER_COUNT + 1] = { “—”, "25 ", “400”, “800”, “1K6” };
//const uint16_t trampPowerTable_1G3_2000[VTX_TRAMP_1G3_MAX_POWER_COUNT] = { 25, 200, 2000 };
//const char * const trampPowerNames_1G3_2000[VTX_TRAMP_1G3_MAX_POWER_COUNT + 1] = { “—”, "25 ", “200”, “2000” };
static void vtxProtoUpdatePowerMetadata(uint16_t maxPower)
{
switch (vtxSettingsConfig()->frequencyGroup) {
case FREQUENCYGROUP_1G3:
// if (maxPower >= 2000) {
// vtxState.metadata.powerTablePtr = trampPowerTable_1G3_2000;
// vtxState.metadata.powerTableCount = VTX_TRAMP_1G3_MAX_POWER_COUNT;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_1G3_2000;
// impl_vtxDevice.capability.powerCount = VTX_TRAMP_1G3_MAX_POWER_COUNT;
// }
// else {
// vtxState.metadata.powerTablePtr = trampPowerTable_1G3_800;
// vtxState.metadata.powerTableCount = VTX_TRAMP_1G3_MAX_POWER_COUNT;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_1G3_800;
// impl_vtxDevice.capability.powerCount = VTX_TRAMP_1G3_MAX_POWER_COUNT;
// }
// impl_vtxDevice.capability.bandCount = VTX_TRAMP_1G3_BAND_COUNT;
// impl_vtxDevice.capability.channelCount = VTX_TRAMP_1G3_CHANNEL_COUNT;
// impl_vtxDevice.capability.bandNames = (char **)vtx1G3BandNames;
// impl_vtxDevice.capability.channelNames = (char **)vtx1G3ChannelNames;
break;
default:
// tcra : added
// if (maxPower >= 1600) {
// Max power 1600mW: Use 25, 400, 800, 1600 table
vtxState.metadata.powerTablePtr = trampPowerTable_5G8_1600;
vtxState.metadata.powerTableCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_5G8_1600;
impl_vtxDevice.capability.powerCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
// }
// else if (maxPower >= 800) {
// // Max power 800mW: Use 25, 100, 200, 500, 800 table
// vtxState.metadata.powerTablePtr = trampPowerTable_5G8_800;
// vtxState.metadata.powerTableCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_5G8_800;
// impl_vtxDevice.capability.powerCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
// }
// else if (maxPower >= 600) {
// // Max power 600mW: Use 25, 100, 200, 400, 600 table
// vtxState.metadata.powerTablePtr = trampPowerTable_5G8_600;
// vtxState.metadata.powerTableCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_5G8_600;
// impl_vtxDevice.capability.powerCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
// }
// else if (maxPower >= 400) {
// // Max power 400mW: Use 25, 100, 200, 400 table
// vtxState.metadata.powerTablePtr = trampPowerTable_5G8_400;
// vtxState.metadata.powerTableCount = 4;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_5G8_400;
// impl_vtxDevice.capability.powerCount = 4;
// }
// else if (maxPower >= 200) {
// // Max power 200mW: Use 25, 100, 200 table
// vtxState.metadata.powerTablePtr = trampPowerTable_5G8_200;
// vtxState.metadata.powerTableCount = 3;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_5G8_200;
// impl_vtxDevice.capability.powerCount = 3;
// }
// else {
// // Default to standard TRAMP 600mW VTX
// vtxState.metadata.powerTablePtr = trampPowerTable_5G8_600;
// vtxState.metadata.powerTableCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
//
// impl_vtxDevice.capability.powerNames = (char **)trampPowerNames_5G8_600;
// impl_vtxDevice.capability.powerCount = VTX_TRAMP_5G8_MAX_POWER_COUNT;
// }
break;
}
}
bool vtxTrampInit(void)
{
serialPortConfig_t *portConfig = findSerialPortConfig(FUNCTION_VTX_TRAMP);
if (portConfig) {
portOptions_t portOptions = 0;
portOptions = portOptions | (vtxConfig()->halfDuplex ? SERIAL_BIDIR : SERIAL_UNIDIR);
portOptions = portOptions | (vtxConfig()->softSerialShortStop ? SERIAL_SHORTSTOP : SERIAL_LONGSTOP);
vtxState.port = openSerialPort(portConfig->identifier, FUNCTION_VTX_TRAMP, NULL, NULL, 9600, MODE_RXTX, portOptions);
}
if (!vtxState.port) {
return false;
}
// vtxProtoUpdatePowerMetadata(600);
vtxProtoUpdatePowerMetadata(1600); // tcra (hardcoded 1600)
vtxCommonSetDevice(&impl_vtxDevice);
vtxState.protoState = VTX_STATE_RESET;
return true;
}