kopia lustrzana https://github.com/OpenRTX/OpenRTX
rodzic
87314db133
commit
ed92d81543
|
@ -30,12 +30,14 @@
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint16_t tx_wiper;
|
uint16_t tx_wiper; ///< Baseband TX potentiometer
|
||||||
uint16_t rx_wiper;
|
uint16_t rx_wiper; ///< Baseband RX potentiometer
|
||||||
uint8_t mic_gain;
|
uint8_t mic_gain; ///< Microphone gain
|
||||||
uint8_t tx_invert : 1,
|
uint8_t tx_invert : 1, ///< Invert TX baseband
|
||||||
rx_invert : 1,
|
rx_invert : 1, ///< Invert RX baseband
|
||||||
_padding : 6;
|
ptt_in_level : 1, ///< PTT in acive level
|
||||||
|
ptt_out_level : 1, ///< PTT out active level
|
||||||
|
_padding : 4;
|
||||||
}
|
}
|
||||||
mod17Calib_t;
|
mod17Calib_t;
|
||||||
|
|
||||||
|
|
|
@ -133,7 +133,9 @@ enum module17Items
|
||||||
D_RXWIPER,
|
D_RXWIPER,
|
||||||
D_TXINVERT,
|
D_TXINVERT,
|
||||||
D_RXINVERT,
|
D_RXINVERT,
|
||||||
D_MICGAIN
|
D_MICGAIN,
|
||||||
|
D_PTTINLEVEL,
|
||||||
|
D_PTTOUTLEVEL
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -104,7 +104,9 @@ const char *module17_items[] =
|
||||||
"RX Softpot",
|
"RX Softpot",
|
||||||
"TX Phase",
|
"TX Phase",
|
||||||
"RX Phase",
|
"RX Phase",
|
||||||
"Mic Gain"
|
"Mic Gain",
|
||||||
|
"PTT In",
|
||||||
|
"PTT Out"
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_GPS
|
#ifdef CONFIG_GPS
|
||||||
|
@ -1000,6 +1002,12 @@ void ui_updateFSM(bool *sync_rtx)
|
||||||
case D_MICGAIN:
|
case D_MICGAIN:
|
||||||
_ui_changeMicGain(-1);
|
_ui_changeMicGain(-1);
|
||||||
break;
|
break;
|
||||||
|
case D_PTTINLEVEL:
|
||||||
|
mod17CalData.ptt_in_level -= 1;
|
||||||
|
break;
|
||||||
|
case D_PTTOUTLEVEL:
|
||||||
|
mod17CalData.ptt_out_level -= 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
state.ui_screen = SETTINGS_MODULE17;
|
state.ui_screen = SETTINGS_MODULE17;
|
||||||
}
|
}
|
||||||
|
@ -1023,6 +1031,12 @@ void ui_updateFSM(bool *sync_rtx)
|
||||||
case D_MICGAIN:
|
case D_MICGAIN:
|
||||||
_ui_changeMicGain(+1);
|
_ui_changeMicGain(+1);
|
||||||
break;
|
break;
|
||||||
|
case D_PTTINLEVEL:
|
||||||
|
mod17CalData.ptt_in_level += 1;
|
||||||
|
break;
|
||||||
|
case D_PTTOUTLEVEL:
|
||||||
|
mod17CalData.ptt_out_level += 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
state.ui_screen = SETTINGS_MODULE17;
|
state.ui_screen = SETTINGS_MODULE17;
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,6 +240,12 @@ int _ui_getModule17ValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
case D_MICGAIN:
|
case D_MICGAIN:
|
||||||
snprintf(buf, max_len, "%s", mic_gain_values[mod17CalData.mic_gain]);
|
snprintf(buf, max_len, "%s", mic_gain_values[mod17CalData.mic_gain]);
|
||||||
break;
|
break;
|
||||||
|
case D_PTTINLEVEL:
|
||||||
|
snprintf(buf, max_len, "%s", mod17CalData.ptt_in_level ? "Act high" : "Act low");
|
||||||
|
break;
|
||||||
|
case D_PTTOUTLEVEL:
|
||||||
|
snprintf(buf, max_len, "%s", mod17CalData.ptt_out_level ? "Act high" : "Act low");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -73,25 +73,38 @@ void radio_disableAfOutput()
|
||||||
void radio_enableRx()
|
void radio_enableRx()
|
||||||
{
|
{
|
||||||
radioStatus = RX;
|
radioStatus = RX;
|
||||||
gpio_clearPin(PTT_OUT);
|
|
||||||
|
|
||||||
mcp4551_setWiper(SOFTPOT_TX, mod17CalData.tx_wiper);
|
mcp4551_setWiper(SOFTPOT_TX, mod17CalData.tx_wiper);
|
||||||
mcp4551_setWiper(SOFTPOT_RX, mod17CalData.rx_wiper);
|
mcp4551_setWiper(SOFTPOT_RX, mod17CalData.rx_wiper);
|
||||||
|
|
||||||
|
// Module17 PTT output is open drain. This means that, on MCU side, we have
|
||||||
|
// to assert the gpio to bring it to low state.
|
||||||
|
if(mod17CalData.ptt_out_level)
|
||||||
|
gpio_setPin(PTT_OUT);
|
||||||
|
else
|
||||||
|
gpio_clearPin(PTT_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void radio_enableTx()
|
void radio_enableTx()
|
||||||
{
|
{
|
||||||
radioStatus = TX;
|
radioStatus = TX;
|
||||||
gpio_setPin(PTT_OUT);
|
|
||||||
|
|
||||||
mcp4551_setWiper(SOFTPOT_TX, mod17CalData.tx_wiper);
|
mcp4551_setWiper(SOFTPOT_TX, mod17CalData.tx_wiper);
|
||||||
mcp4551_setWiper(SOFTPOT_RX, mod17CalData.rx_wiper);
|
mcp4551_setWiper(SOFTPOT_RX, mod17CalData.rx_wiper);
|
||||||
max9814_setGain(mod17CalData.mic_gain);
|
max9814_setGain(mod17CalData.mic_gain);
|
||||||
|
|
||||||
|
if(mod17CalData.ptt_out_level)
|
||||||
|
gpio_clearPin(PTT_OUT);
|
||||||
|
else
|
||||||
|
gpio_setPin(PTT_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void radio_disableRtx()
|
void radio_disableRtx()
|
||||||
{
|
{
|
||||||
|
if(mod17CalData.ptt_out_level)
|
||||||
|
gpio_setPin(PTT_OUT);
|
||||||
|
else
|
||||||
|
gpio_clearPin(PTT_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void radio_updateConfiguration()
|
void radio_updateConfiguration()
|
||||||
|
|
|
@ -135,8 +135,12 @@ int8_t platform_getChSelector()
|
||||||
|
|
||||||
bool platform_getPttStatus()
|
bool platform_getPttStatus()
|
||||||
{
|
{
|
||||||
/* PTT line has a pullup resistor with PTT switch closing to ground */
|
// Return true if gpio status matches the PTT in active level
|
||||||
return (gpio_readPin(PTT_SW) == 0) ? true : false;
|
uint8_t ptt_status = gpio_readPin(PTT_SW);
|
||||||
|
if(ptt_status == mod17CalData.ptt_in_level)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool platform_pwrButtonStatus()
|
bool platform_pwrButtonStatus()
|
||||||
|
|
Ładowanie…
Reference in New Issue