mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 22:31:25 +03:00
MDC100 update
This commit is contained in:
parent
216cc027cf
commit
2d5730f578
6
Makefile
6
Makefile
@ -44,7 +44,7 @@ ENABLE_WIDE_RX := 1
|
|||||||
ENABLE_TX_WHEN_AM := 0
|
ENABLE_TX_WHEN_AM := 0
|
||||||
ENABLE_F_CAL_MENU := 0
|
ENABLE_F_CAL_MENU := 0
|
||||||
ENABLE_TX_UNLOCK := 0
|
ENABLE_TX_UNLOCK := 0
|
||||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 0
|
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
||||||
ENABLE_CONTRAST := 0
|
ENABLE_CONTRAST := 0
|
||||||
ENABLE_BOOT_BEEPS := 0
|
ENABLE_BOOT_BEEPS := 0
|
||||||
ENABLE_DTMF_CALL_FLASH_LIGHT := 1
|
ENABLE_DTMF_CALL_FLASH_LIGHT := 1
|
||||||
@ -57,7 +57,7 @@ ENABLE_KILL_REVIVE := 0
|
|||||||
# AM Fix 0.8 kB
|
# AM Fix 0.8 kB
|
||||||
ENABLE_AM_FIX := 1
|
ENABLE_AM_FIX := 1
|
||||||
ENABLE_AM_FIX_SHOW_DATA := 0
|
ENABLE_AM_FIX_SHOW_DATA := 0
|
||||||
ENABLE_SQUELCH_MORE_SENSITIVE := 1
|
ENABLE_SQUELCH_MORE_SENSITIVE := 0
|
||||||
ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1
|
ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1
|
||||||
ENABLE_FASTER_CHANNEL_SCAN := 1
|
ENABLE_FASTER_CHANNEL_SCAN := 1
|
||||||
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1
|
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1
|
||||||
@ -70,7 +70,7 @@ ENABLE_TX_AUDIO_BAR := 0
|
|||||||
# Side Button Menu 0.3 kB
|
# Side Button Menu 0.3 kB
|
||||||
ENABLE_SIDE_BUTT_MENU := 1
|
ENABLE_SIDE_BUTT_MENU := 1
|
||||||
# Key Lock 0.4 kB
|
# Key Lock 0.4 kB
|
||||||
ENABLE_KEYLOCK := 1
|
ENABLE_KEYLOCK := 0
|
||||||
#ENABLE_PANADAPTER := 0
|
#ENABLE_PANADAPTER := 0
|
||||||
#ENABLE_SINGLE_VFO_CHAN := 0
|
#ENABLE_SINGLE_VFO_CHAN := 0
|
||||||
|
|
||||||
|
19
app/menu.c
19
app/menu.c
@ -329,6 +329,13 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
|
|||||||
*pMax = ARRAY_SIZE(g_sub_menu_dtmf_rsp) - 1;
|
*pMax = ARRAY_SIZE(g_sub_menu_dtmf_rsp) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
case MENU_MDC1200_ID:
|
||||||
|
*pMin = 0;
|
||||||
|
*pMax = 0xffff;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_PTT_ID:
|
case MENU_PTT_ID:
|
||||||
*pMin = 0;
|
*pMin = 0;
|
||||||
*pMax = ARRAY_SIZE(g_sub_menu_ptt_id) - 1;
|
*pMax = ARRAY_SIZE(g_sub_menu_ptt_id) - 1;
|
||||||
@ -703,6 +710,12 @@ void MENU_AcceptSetting(void)
|
|||||||
g_eeprom.dtmf_preload_time = g_sub_menu_selection * 10;
|
g_eeprom.dtmf_preload_time = g_sub_menu_selection * 10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
case MENU_MDC1200_ID:
|
||||||
|
g_eeprom.mdc1200_id = g_sub_menu_selection;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_PTT_ID:
|
case MENU_PTT_ID:
|
||||||
g_tx_vfo->dtmf_ptt_id_tx_mode = g_sub_menu_selection;
|
g_tx_vfo->dtmf_ptt_id_tx_mode = g_sub_menu_selection;
|
||||||
if (g_tx_vfo->dtmf_ptt_id_tx_mode == PTT_ID_TX_DOWN ||
|
if (g_tx_vfo->dtmf_ptt_id_tx_mode == PTT_ID_TX_DOWN ||
|
||||||
@ -1199,6 +1212,12 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
g_sub_menu_selection = g_eeprom.dtmf_preload_time / 10;
|
g_sub_menu_selection = g_eeprom.dtmf_preload_time / 10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
case MENU_MDC1200_ID:
|
||||||
|
g_sub_menu_selection = g_eeprom.mdc1200_id;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_PTT_ID:
|
case MENU_PTT_ID:
|
||||||
g_sub_menu_selection = g_tx_vfo->dtmf_ptt_id_tx_mode;
|
g_sub_menu_selection = g_tx_vfo->dtmf_ptt_id_tx_mode;
|
||||||
break;
|
break;
|
||||||
|
5
board.c
5
board.c
@ -605,7 +605,10 @@ void BOARD_EEPROM_load(void)
|
|||||||
|
|
||||||
// 0E98..0E9F
|
// 0E98..0E9F
|
||||||
EEPROM_ReadBuffer(0x0E98, Data, 8);
|
EEPROM_ReadBuffer(0x0E98, Data, 8);
|
||||||
memcpy(&g_eeprom.power_on_password, Data, sizeof(g_eeprom.power_on_password));
|
memcpy(&g_eeprom.power_on_password, &Data[0], sizeof(g_eeprom.power_on_password));
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
memcpy(&g_eeprom.mdc1200_id, &Data[4], sizeof(g_eeprom.mdc1200_id));
|
||||||
|
#endif
|
||||||
|
|
||||||
// 0EA0..0EA7
|
// 0EA0..0EA7
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
|
@ -268,7 +268,7 @@ void BK4819_DisableAGC(void)
|
|||||||
// 000=Bypass DC filter;
|
// 000=Bypass DC filter;
|
||||||
//
|
//
|
||||||
BK4819_WriteRegister(0x7E,
|
BK4819_WriteRegister(0x7E,
|
||||||
(1u << 15) | // 0 AGC fix mode
|
(0u << 15) | // 0 AGC fix mode
|
||||||
(3u << 12) | // 3 AGC fix index
|
(3u << 12) | // 3 AGC fix index
|
||||||
(5u << 3) | // 5 DC Filter band width for Tx (MIC In)
|
(5u << 3) | // 5 DC Filter band width for Tx (MIC In)
|
||||||
(6u << 0)); // 6 DC Filter band width for Rx (I.F In)
|
(6u << 0)); // 6 DC Filter band width for Rx (I.F In)
|
||||||
@ -345,7 +345,7 @@ void BK4819_EnableAGC(void)
|
|||||||
//BK4819_WriteRegister(0x7E, (1u << 15) | (4u << 12) | (5u << 3) | (6u << 0));
|
//BK4819_WriteRegister(0x7E, (1u << 15) | (4u << 12) | (5u << 3) | (6u << 0));
|
||||||
|
|
||||||
BK4819_WriteRegister(0x7E,
|
BK4819_WriteRegister(0x7E,
|
||||||
(0u << 15) | // 0 AGC fix mode
|
(1u << 15) | // 0 AGC fix mode
|
||||||
(3u << 12) | // 3 AGC fix index
|
(3u << 12) | // 3 AGC fix index
|
||||||
(5u << 3) | // 5 DC Filter band width for Tx (MIC In)
|
(5u << 3) | // 5 DC Filter band width for Tx (MIC In)
|
||||||
(6u << 0)); // 6 DC Filter band width for Rx (I.F In)
|
(6u << 0)); // 6 DC Filter band width for Rx (I.F In)
|
||||||
@ -1174,7 +1174,8 @@ void BK4819_TxOn_Beep(void)
|
|||||||
{
|
{
|
||||||
BK4819_WriteRegister(0x37, 0x1D0F);
|
BK4819_WriteRegister(0x37, 0x1D0F);
|
||||||
BK4819_WriteRegister(0x52, 0x028F);
|
BK4819_WriteRegister(0x52, 0x028F);
|
||||||
BK4819_WriteRegister(0x30, 0x0000);
|
|
||||||
|
BK4819_WriteRegister(0x30, 0);
|
||||||
BK4819_WriteRegister(0x30, 0xC1FE);
|
BK4819_WriteRegister(0x30, 0xC1FE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1217,7 +1218,7 @@ void BK4819_ExitSubAu(void)
|
|||||||
// 0 = min
|
// 0 = min
|
||||||
// 127 = max
|
// 127 = max
|
||||||
//
|
//
|
||||||
BK4819_WriteRegister(0x51, 0x0000);
|
BK4819_WriteRegister(0x51, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BK4819_Conditional_RX_TurnOn_and_GPIO6_Enable(void)
|
void BK4819_Conditional_RX_TurnOn_and_GPIO6_Enable(void)
|
||||||
@ -1969,14 +1970,21 @@ void BK4819_start_fsk_rx(const unsigned int packet_size)
|
|||||||
|
|
||||||
#ifdef ENABLE_MDC1200
|
#ifdef ENABLE_MDC1200
|
||||||
|
|
||||||
void BK4819_PlayRogerMDC1200(void)
|
void BK4819_send_MDC1200(const uint8_t op, const uint8_t arg, const uint16_t id)
|
||||||
{
|
{
|
||||||
uint16_t fsk_reg59;
|
uint16_t fsk_reg59;
|
||||||
uint8_t packet[42];
|
uint8_t packet[42];
|
||||||
|
|
||||||
const uint8_t op = MDC1200_OP_CODE_POST_ID;
|
// REG_51
|
||||||
const uint8_t arg = 0x80;
|
//
|
||||||
const uint16_t id = 0xB183;
|
// <15> 1 = Enable TxCTCSS/CDCSS
|
||||||
|
// 0 = Disable
|
||||||
|
//
|
||||||
|
if (BK4819_ReadRegister(0x51) & (1u << 15))
|
||||||
|
{ // need to turn oss the CRCSS/CDCSS
|
||||||
|
BK4819_ExitSubAu();
|
||||||
|
SYSTEM_DelayMs(10);
|
||||||
|
}
|
||||||
|
|
||||||
// create the MDC1200 packet
|
// create the MDC1200 packet
|
||||||
const unsigned int size = MDC1200_encode_single_packet(packet, op, arg, id);
|
const unsigned int size = MDC1200_encode_single_packet(packet, op, arg, id);
|
||||||
@ -2116,7 +2124,7 @@ void BK4819_PlayRogerMDC1200(void)
|
|||||||
(0u << 9) | // 0 ~ 1 1 = invert data when TX
|
(0u << 9) | // 0 ~ 1 1 = invert data when TX
|
||||||
(0u << 8) | // 0 ~ 1 ???
|
(0u << 8) | // 0 ~ 1 ???
|
||||||
(0u << 4) | // 0 ~ 15 preamble length
|
(0u << 4) | // 0 ~ 15 preamble length
|
||||||
(0u << 3) | // 0 ~ 1 sync length
|
(1u << 3) | // 0 ~ 1 sync length
|
||||||
(0u << 0); // 0 ~ 7 ???
|
(0u << 0); // 0 ~ 7 ???
|
||||||
|
|
||||||
// Set entire packet length (not including the pre-amble and sync bytes we can't seem to disable)
|
// Set entire packet length (not including the pre-amble and sync bytes we can't seem to disable)
|
||||||
@ -2137,7 +2145,7 @@ void BK4819_PlayRogerMDC1200(void)
|
|||||||
// <15:8> 0x55 FSK Sync Byte 2 (Sync Byte 0 first, then 1,2,3)
|
// <15:8> 0x55 FSK Sync Byte 2 (Sync Byte 0 first, then 1,2,3)
|
||||||
// <7:0> 0xAA FSK Sync Byte 3
|
// <7:0> 0xAA FSK Sync Byte 3
|
||||||
//
|
//
|
||||||
BK4819_WriteRegister(0x5B, 0x0000); // bytes 2 & 3 (not used)
|
BK4819_WriteRegister(0x5B, 0x0000); // bytes 2 & 3
|
||||||
|
|
||||||
// CRC setting (plus other stuff we don't know what)
|
// CRC setting (plus other stuff we don't know what)
|
||||||
//
|
//
|
||||||
|
@ -156,8 +156,9 @@ uint8_t BK4819_GetCTCType(void);
|
|||||||
void BK4819_start_fsk_rx(const unsigned int packet_size);
|
void BK4819_start_fsk_rx(const unsigned int packet_size);
|
||||||
|
|
||||||
void BK4819_PlayRoger(void);
|
void BK4819_PlayRoger(void);
|
||||||
|
|
||||||
#ifdef ENABLE_MDC1200
|
#ifdef ENABLE_MDC1200
|
||||||
void BK4819_PlayRogerMDC1200(void);
|
void BK4819_send_MDC1200(const uint8_t op, const uint8_t arg, const uint16_t id);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void BK4819_Enable_AfDac_DiscMode_TxDsp(void);
|
void BK4819_Enable_AfDac_DiscMode_TxDsp(void);
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -11,8 +11,8 @@
|
|||||||
// >= 24-bit pre-amble
|
// >= 24-bit pre-amble
|
||||||
// 40-bit sync
|
// 40-bit sync
|
||||||
//
|
//
|
||||||
static const uint8_t pre_amble[] = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x0A};
|
static const uint8_t pre_amble[] = {0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
static const uint8_t sync[] = {0x07, 0x09, 0x2a, 0x44, 0x6f};
|
static const uint8_t sync[] = {0xCC, 0x07, 0x09, 0x2a, 0x44, 0x6f};
|
||||||
|
|
||||||
uint8_t bit_reverse_8(uint8_t n)
|
uint8_t bit_reverse_8(uint8_t n)
|
||||||
{
|
{
|
||||||
|
15
radio.c
15
radio.c
@ -32,6 +32,9 @@
|
|||||||
#include "frequencies.h"
|
#include "frequencies.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "helper/battery.h"
|
#include "helper/battery.h"
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
#include "mdc1200.h"
|
||||||
|
#endif
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
@ -843,11 +846,11 @@ void RADIO_enableTX(const bool fsk_tx)
|
|||||||
{
|
{
|
||||||
BK4819_filter_bandwidth_t Bandwidth = g_current_vfo->channel_bandwidth;
|
BK4819_filter_bandwidth_t Bandwidth = g_current_vfo->channel_bandwidth;
|
||||||
|
|
||||||
|
// disable the speaker
|
||||||
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
|
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
|
||||||
|
|
||||||
g_speaker_enabled = false;
|
g_speaker_enabled = false;
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false); // ???
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false);
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough="
|
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough="
|
||||||
@ -1118,15 +1121,21 @@ void RADIO_tx_eot(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (g_eeprom.roger_mode == ROGER_MODE_ROGER)
|
if (g_eeprom.roger_mode == ROGER_MODE_ROGER)
|
||||||
|
{
|
||||||
BK4819_PlayRoger();
|
BK4819_PlayRoger();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
#ifdef ENABLE_MDC1200
|
#ifdef ENABLE_MDC1200
|
||||||
if (g_eeprom.roger_mode == ROGER_MODE_MDC)
|
if (g_eeprom.roger_mode == ROGER_MODE_MDC)
|
||||||
BK4819_PlayRogerMDC1200();
|
{
|
||||||
|
BK4819_send_MDC1200(MDC1200_OP_CODE_POST_ID, 0x80, g_eeprom.mdc1200_id);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (g_current_vfo->dtmf_ptt_id_tx_mode == PTT_ID_APOLLO)
|
if (g_current_vfo->dtmf_ptt_id_tx_mode == PTT_ID_APOLLO)
|
||||||
|
{
|
||||||
BK4819_PlayTone(APOLLO_TONE2_HZ, APOLLO_TONE_MS, 28);
|
BK4819_PlayTone(APOLLO_TONE2_HZ, APOLLO_TONE_MS, 28);
|
||||||
|
}
|
||||||
|
|
||||||
BK4819_ExitDTMF_TX(true);
|
BK4819_ExitDTMF_TX(true);
|
||||||
}
|
}
|
||||||
|
10
settings.c
10
settings.c
@ -243,13 +243,21 @@ void SETTINGS_save(void)
|
|||||||
{
|
{
|
||||||
struct {
|
struct {
|
||||||
uint32_t password;
|
uint32_t password;
|
||||||
uint32_t spare;
|
#ifdef ENABLE_MDC1200
|
||||||
|
uint16_t mdc1200_id; // 1of11
|
||||||
|
uint8_t spare[2];
|
||||||
|
#else
|
||||||
|
uint8_t spare[4];
|
||||||
|
#endif
|
||||||
} __attribute__((packed)) array;
|
} __attribute__((packed)) array;
|
||||||
|
|
||||||
memset(&array, 0xff, sizeof(array));
|
memset(&array, 0xff, sizeof(array));
|
||||||
#ifdef ENABLE_PWRON_PASSWORD
|
#ifdef ENABLE_PWRON_PASSWORD
|
||||||
array.password = g_eeprom.power_on_password;
|
array.password = g_eeprom.power_on_password;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
array.mdc1200_id = g_eeprom.mdc1200_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
EEPROM_WriteBuffer8(0x0E98, &array);
|
EEPROM_WriteBuffer8(0x0E98, &array);
|
||||||
}
|
}
|
||||||
|
@ -334,7 +334,12 @@ typedef struct {
|
|||||||
uint8_t auto_key_lock; //
|
uint8_t auto_key_lock; //
|
||||||
uint8_t display_mode; //
|
uint8_t display_mode; //
|
||||||
uint32_t power_on_password; //
|
uint32_t power_on_password; //
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
uint16_t mdc1200_id; // 1of11
|
||||||
|
uint8_t unused6[2]; // 0xff's
|
||||||
|
#else
|
||||||
uint8_t unused6[4]; // 0xff's
|
uint8_t unused6[4]; // 0xff's
|
||||||
|
#endif
|
||||||
|
|
||||||
// 0x0EA0
|
// 0x0EA0
|
||||||
uint8_t voice_prompt; //
|
uint8_t voice_prompt; //
|
||||||
@ -500,6 +505,10 @@ typedef struct {
|
|||||||
uint8_t scan_list_priority_ch1[2];
|
uint8_t scan_list_priority_ch1[2];
|
||||||
uint8_t scan_list_priority_ch2[2];
|
uint8_t scan_list_priority_ch2[2];
|
||||||
|
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
uint16_t mdc1200_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
bool auto_keypad_lock;
|
bool auto_keypad_lock;
|
||||||
|
|
||||||
#if defined(ENABLE_ALARM) || defined(ENABLE_TX1750)
|
#if defined(ENABLE_ALARM) || defined(ENABLE_TX1750)
|
||||||
|
11
ui/menu.c
11
ui/menu.c
@ -107,6 +107,9 @@ const t_menu_item g_menu_list[] =
|
|||||||
{"ANI ID", VOICE_ID_ANI_CODE, MENU_ANI_ID },
|
{"ANI ID", VOICE_ID_ANI_CODE, MENU_ANI_ID },
|
||||||
{"UpCODE", VOICE_ID_INVALID, MENU_UP_CODE },
|
{"UpCODE", VOICE_ID_INVALID, MENU_UP_CODE },
|
||||||
{"DnCODE", VOICE_ID_INVALID, MENU_DN_CODE }, // was "DWCODE"
|
{"DnCODE", VOICE_ID_INVALID, MENU_DN_CODE }, // was "DWCODE"
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
{"MDC ID", VOICE_ID_INVALID, MENU_MDC1200_ID },
|
||||||
|
#endif
|
||||||
{"PTT ID", VOICE_ID_INVALID, MENU_PTT_ID },
|
{"PTT ID", VOICE_ID_INVALID, MENU_PTT_ID },
|
||||||
{"D ST", VOICE_ID_INVALID, MENU_DTMF_ST },
|
{"D ST", VOICE_ID_INVALID, MENU_DTMF_ST },
|
||||||
{"D RSP", VOICE_ID_INVALID, MENU_DTMF_RSP },
|
{"D RSP", VOICE_ID_INVALID, MENU_DTMF_RSP },
|
||||||
@ -294,7 +297,7 @@ const char g_sub_menu_roger_mode[3][16] =
|
|||||||
{
|
{
|
||||||
"OFF",
|
"OFF",
|
||||||
"TX END\nROGER",
|
"TX END\nROGER",
|
||||||
"TX END\nMDC\n1200"
|
"TX END\nMDC1200"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char g_sub_menu_reset[2][4] =
|
const char g_sub_menu_reset[2][4] =
|
||||||
@ -992,6 +995,12 @@ void UI_DisplayMenu(void)
|
|||||||
sprintf(str + strlen(str), "%dms", 10 * g_sub_menu_selection);
|
sprintf(str + strlen(str), "%dms", 10 * g_sub_menu_selection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_MDC1200
|
||||||
|
case MENU_MDC1200_ID:
|
||||||
|
sprintf(str, "MDC1200\nID\n%04X", g_sub_menu_selection);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_PTT_ID:
|
case MENU_PTT_ID:
|
||||||
strcpy(str, (g_sub_menu_selection > 0) ? "TX ID\n" : "");
|
strcpy(str, (g_sub_menu_selection > 0) ? "TX ID\n" : "");
|
||||||
strcat(str, g_sub_menu_ptt_id[g_sub_menu_selection]);
|
strcat(str, g_sub_menu_ptt_id[g_sub_menu_selection]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user