0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-05-19 00:11:18 +03:00

fix previous messy renaming, plus MDC1200 updates

This commit is contained in:
OneOfEleven 2023-10-21 12:49:21 +01:00
parent 19a1476057
commit b4d50001e1
8 changed files with 157 additions and 142 deletions

View File

@ -125,12 +125,12 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_MEM_DISP:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_MEM_DISP) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_mem_disp) - 1;
break;
case MENU_TX_POWER:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_TX_POWER) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_tx_power) - 1;
break;
case MENU_SHIFT_DIR:
@ -140,7 +140,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_DUAL_WATCH:
*pMin = 0;
// *pMax = ARRAY_SIZE(g_sub_MENU_DUAL_WATCH) - 1;
// *pMax = ARRAY_SIZE(g_sub_menu_dual_watch) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_off_on) - 1;
break;
@ -151,7 +151,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_CROSS_VFO:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_CROSS_VFO) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_cross_vfo) - 1;
break;
#ifdef ENABLE_VOICE
@ -163,12 +163,12 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_SCAN_CAR_RESUME:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_SCAN_CAR_RESUME) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_scan_car_resume) - 1;
break;
case MENU_ROGER_MODE:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_ROGER_MODE_mode) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_roger_mode) - 1;
break;
case MENU_PON_MSG:
@ -191,13 +191,13 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_BANDWIDTH:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_BANDWIDTH) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_bandwidth) - 1;
break;
#ifdef ENABLE_ALARM
case MENU_ALARM_MODE:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_ALARM_MODE) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_alarm_mode) - 1;
break;
#endif
@ -207,13 +207,13 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_SIDE2_SHORT:
case MENU_SIDE2_LONG:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_menu_SIDE_BUTT) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_side_butt) - 1;
break;
#endif
case MENU_RESET:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_menu_RESET) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_reset) - 1;
break;
case MENU_COMPAND:
@ -234,7 +234,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
#ifdef ENABLE_AM_FIX_TEST1
case MENU_AM_FIX_TEST1:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_AM_FIX_test1) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_AM_FIX_test1) - 1;
break;
#endif
@ -273,17 +273,17 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_SCRAMBLER_EN:
case MENU_TX_EN:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_menu_DIS_EN) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_dis_en) - 1;
break;
case MENU_SCRAMBLER:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_SCRAMBLERAMBLER) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_scrambler) - 1;
break;
case MENU_TX_TO:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_TX_TO) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_tx_timeout) - 1;
break;
#ifdef ENABLE_VOX
@ -310,7 +310,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_BAT_SAVE:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_BAT_SAVE) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_bat_save) - 1;
break;
case MENU_MIC_GAIN:
@ -326,17 +326,17 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
case MENU_DTMF_RSP:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_MENU_DTMF_RSP) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_dtmf_rsp) - 1;
break;
case MENU_PTT_ID:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_menu_PTT_ID) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_ptt_id) - 1;
break;
case MENU_BAT_TXT:
*pMin = 0;
*pMax = ARRAY_SIZE(g_sub_menu_BAT_TXT) - 1;
*pMax = ARRAY_SIZE(g_sub_menu_bat_text) - 1;
break;
case MENU_DTMF_HOLD:

Binary file not shown.

Binary file not shown.

133
mdc1200.c
View File

@ -47,61 +47,77 @@ uint16_t reverse_bits(const uint16_t bits_in, const unsigned int num_bits)
return bits_out;
}
uint16_t compute_crc(const uint8_t *data, const unsigned int data_len)
{
// this can be done using the CPU's own CRC calculator once we know we're ok
unsigned int i;
#if 0
uint16_t crc;
CRC_CR = (CRC_CR & ~CRC_CR_CRC_EN_MASK) | CRC_CR_CRC_EN_BITS_ENABLE;
#else
uint16_t crc = 0x0000;
#endif
for (i = 0; i < data_len; i++)
{
#if 0
// bit reverse each data byte before adding it to the CRC
// the cortex CPU might have an instruction to bit reverse for us ?
//
CRC_DATAIN = reverse_bits(*data++, 8);
//CRC_DATAIN = bitReverse8(*data++);
#else
uint8_t mask;
// bit reverse each data byte before adding it to the CRC
// the cortex CPU might have an instruction to bit reverse for us ?
//
const uint8_t bits = reverse_bits(*data++, 8);
//const uint8_t bits = bitReverse8(*data++);
for (mask = 0x0080; mask != 0; mask >>= 1)
{
uint16_t msb = crc & 0x8000;
if (bits & mask)
msb ^= 0x8000;
crc <<= 1;
if (msb)
crc ^= 0x1021;
}
#endif
#if 0
uint16_t compute_crc(const uint8_t *data, const unsigned int data_len)
{ // using the reverse computation avoids having to reverse the bit order during and after
uint16_t crc = 0;
for (i = 0; i < len; i++)
{
unsigned int k;
crc ^= data[i];
for (k = 8; k > 0; k--)
crc = (crc & 1u) ? (crc >> 1) ^ 0x8408 : crc >> 1;
}
crc ^= 0xffff;
return crc;
}
#if 0
crc = (uint16_t)CRC_DATAOUT;
CRC_CR = (CRC_CR & ~CRC_CR_CRC_EN_MASK) | CRC_CR_CRC_EN_BITS_DISABLE;
#endif
#else
uint16_t compute_crc(const uint8_t *data, const unsigned int data_len)
{
// bit reverse and invert the final CRC
return reverse_bits(crc, 16) ^ 0xffff;
// return bitReverse16(crc) ^ 0xffff;
}
// this can be done using the CPU's own CRC calculator once we know we're ok
unsigned int i;
#if 0
uint16_t crc;
CRC_CR = (CRC_CR & ~CRC_CR_CRC_EN_MASK) | CRC_CR_CRC_EN_BITS_ENABLE;
#else
uint16_t crc = 0;
#endif
for (i = 0; i < data_len; i++)
{
#if 0
// bit reverse each data byte before adding it to the CRC
// the cortex CPU might have an instruction to bit reverse for us ?
//
CRC_DATAIN = reverse_bits(data[i], 8);
//CRC_DATAIN = bitReverse8(data[i]);
#else
uint8_t mask;
// bit reverse each data byte before adding it to the CRC
// the cortex CPU might have an instruction to bit reverse for us ?
//
const uint8_t bits = reverse_bits(data[i], 8);
//const uint8_t bits = bitReverse8(*data++);
for (mask = 0x0080; mask != 0; mask >>= 1)
{
uint16_t msb = crc & 0x8000;
if (bits & mask)
msb ^= 0x8000;
crc <<= 1;
if (msb)
crc ^= 0x1021;
}
#endif
}
#if 0
crc = (uint16_t)CRC_DATAOUT;
CRC_CR = (CRC_CR & ~CRC_CR_CRC_EN_MASK) | CRC_CR_CRC_EN_BITS_DISABLE;
#endif
// bit reverse and invert the final CRC
return reverse_bits(crc, 16) ^ 0xffff;
// return bitReverse16(crc) ^ 0xffff;
}
#endif
uint8_t * encode_data(uint8_t *data)
{
@ -154,14 +170,14 @@ uint8_t * encode_data(uint8_t *data)
}
// MDC1200 sync bit reversals and packet header
static const uint8_t header[] = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0x09, 0x2a, 0x44, 0x6f};
//static const uint8_t header[] = {0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x07, 0x09, 0x2a, 0x44, 0x6f};
static const uint8_t header[] = {0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0x07, 0x09, 0x2a, 0x44, 0x6f};
void delta_modulation(uint8_t *data, const unsigned int size)
{ // xor succesive bits in the entire packet, including the bit reversing pre-amble
uint8_t b1;
unsigned int toggle_delay;
unsigned int i;
for (i = 0, toggle_delay = 27, b1 = 1u; i < size; i++)
for (i = 0, b1 = 1u; i < size; i++)
{
int bit_num;
uint8_t in = data[i];
@ -169,9 +185,8 @@ void delta_modulation(uint8_t *data, const unsigned int size)
for (bit_num = 7; bit_num >= 0; bit_num--)
{
const uint8_t b2 = (in >> bit_num) & 1u;
if (toggle_delay > 0)
toggle_delay--;
if (b1 != b2 && toggle_delay == 0)
// const uint8_t b2 = (in >> (7 - bit_num)) & 1u;
if (b1 != b2)
out |= 1u << bit_num; // previous bit and new bit are different
// out |= 1u << (7 - bit_num);
b1 = b2;

View File

@ -261,7 +261,7 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur
p_vfo->am_mode = m_channel.am_mode;
p_vfo->step_setting = (m_channel.step_setting < ARRAY_SIZE(STEP_FREQ_TABLE)) ? m_channel.step_setting : STEP_12_5kHz;
p_vfo->step_freq = STEP_FREQ_TABLE[p_vfo->step_setting];
p_vfo->scrambling_type = (m_channel.scrambler < ARRAY_SIZE(g_sub_MENU_SCRAMBLERAMBLER)) ? m_channel.scrambler : 0;
p_vfo->scrambling_type = (m_channel.scrambler < ARRAY_SIZE(g_sub_menu_scrambler)) ? m_channel.scrambler : 0;
p_vfo->freq_config_rx.code_type = m_channel.rx_ctcss_cdcss_type;
switch (m_channel.rx_ctcss_cdcss_type)
@ -1043,7 +1043,7 @@ void RADIO_PrepareTX(void)
if (g_eeprom.tx_timeout_timer == 0)
g_tx_timer_count_down_500ms = 60; // 30 sec
else
if (g_eeprom.tx_timeout_timer < (ARRAY_SIZE(g_sub_MENU_TX_TO) - 1))
if (g_eeprom.tx_timeout_timer < (ARRAY_SIZE(g_sub_menu_tx_timeout) - 1))
g_tx_timer_count_down_500ms = 120 * g_eeprom.tx_timeout_timer; // minutes
else
g_tx_timer_count_down_500ms = 120 * 15; // 15 minutes

View File

@ -92,7 +92,7 @@ void draw_bar(uint8_t *line, const int len, const int max_width)
if (g_eeprom.tx_timeout_timer == 0)
timeout_secs = 30; // 30 sec
else
if (g_eeprom.tx_timeout_timer < (ARRAY_SIZE(g_sub_MENU_TX_TO) - 1))
if (g_eeprom.tx_timeout_timer < (ARRAY_SIZE(g_sub_menu_tx_timeout) - 1))
timeout_secs = 60 * g_eeprom.tx_timeout_timer; // minutes
else
timeout_secs = 60 * 15; // 15 minutes

View File

@ -168,10 +168,10 @@ const unsigned int g_hidden_menu_count = 9;
// ***************************************************************************************
const char g_sub_MENU_TX_POWER[3][5] =
const char g_sub_menu_tx_power[3][7] =
{
"LOW",
"MID",
"MEDIUM",
"HIGH"
};
@ -182,7 +182,7 @@ const char g_sub_menu_shift_dir[3][4] =
"-"
};
const char g_sub_MENU_BANDWIDTH[2][7] =
const char g_sub_menu_bandwidth[2][7] =
{
"WIDE",
"NARROW"
@ -194,7 +194,7 @@ const char g_sub_menu_off_on[2][4] =
"ON"
};
const char g_sub_MENU_BAT_SAVE[5][9] =
const char g_sub_menu_bat_save[5][9] =
{
"OFF",
"1:1 50%",
@ -203,7 +203,7 @@ const char g_sub_MENU_BAT_SAVE[5][9] =
"1:4 80%"
};
const char g_sub_MENU_TX_TO[11][7] =
const char g_sub_menu_tx_timeout[11][7] =
{
"30 sec",
"1 min",
@ -218,14 +218,14 @@ const char g_sub_MENU_TX_TO[11][7] =
"15 min"
};
const char g_sub_MENU_DUAL_WATCH[3][10] =
const char g_sub_menu_dual_watch[3][10] =
{
"OFF",
"LOWER\nVFO",
"UPPER\nVFO",
};
const char g_sub_MENU_CROSS_VFO[3][10] =
const char g_sub_menu_cross_vfo[3][10] =
{
"RX\nVFO",
"UPPER\nVFO",
@ -241,14 +241,14 @@ const char g_sub_MENU_CROSS_VFO[3][10] =
};
#endif
const char g_sub_MENU_SCAN_CAR_RESUME[3][13] =
const char g_sub_menu_scan_car_resume[3][13] =
{
"TIME",
"CARRIER",
"SEARCH"
};
const char g_sub_MENU_MEM_DISP[4][15] =
const char g_sub_menu_mem_disp[4][15] =
{
"FREQ",
"CHANNEL\nNUMBER",
@ -257,14 +257,14 @@ const char g_sub_MENU_MEM_DISP[4][15] =
};
#ifdef ENABLE_ALARM
const char g_sub_MENU_ALARM_MODE[2][5] =
const char g_sub_menu_alarm_mode[2][5] =
{
"SITE",
"TONE"
};
#endif
const char g_sub_MENU_DTMF_RSP[4][9] =
const char g_sub_menu_dtmf_rsp[4][9] =
{
"NONE",
"RING",
@ -272,7 +272,7 @@ const char g_sub_MENU_DTMF_RSP[4][9] =
"RNG RPLY"
};
const char g_sub_menu_PTT_ID[5][15] =
const char g_sub_menu_ptt_id[5][15] =
{
"OFF",
"BEGIN",
@ -289,14 +289,14 @@ const char g_sub_menu_pwr_on_msg[4][14] =
"NONE"
};
const char g_sub_MENU_ROGER_MODE_mode[3][16] =
const char g_sub_menu_roger_mode[3][16] =
{
"OFF",
"TX END\nROGER",
"TX END\nMDC\n1200"
};
const char g_sub_menu_RESET[2][4] =
const char g_sub_menu_reset[2][4] =
{
"VFO",
"ALL"
@ -323,7 +323,7 @@ const char g_sub_menu_rx_tx[4][6] =
};
#ifdef ENABLE_AM_FIX_TEST1
const char g_sub_MENU_AM_FIX_test1[4][8] =
const char g_sub_menu_AM_FIX_test1[4][8] =
{
"LNA-S 0",
"LNA-S 1",
@ -332,20 +332,20 @@ const char g_sub_menu_rx_tx[4][6] =
};
#endif
const char g_sub_menu_BAT_TXT[3][8] =
const char g_sub_menu_bat_text[3][8] =
{
"NONE",
"VOLTAGE",
"PERCENT"
};
const char g_sub_menu_DIS_EN[2][9] =
const char g_sub_menu_dis_en[2][9] =
{
"DISABLED",
"ENABLED"
};
const char g_sub_MENU_SCRAMBLERAMBLER[11][7] =
const char g_sub_menu_scrambler[11][7] =
{
"OFF",
"2600Hz",
@ -361,8 +361,8 @@ const char g_sub_MENU_SCRAMBLERAMBLER[11][7] =
};
#ifdef ENABLE_SIDE_BUTT_MENU
const char g_sub_menu_SIDE_BUTT[9][16] =
//const char g_sub_menu_SIDE_BUTT[10][16] =
const char g_sub_menu_side_butt[9][16] =
//const char g_sub_menu_side_butt[10][16] =
{
"NONE",
"FLASH\nLIGHT",
@ -586,7 +586,7 @@ void UI_DisplayMenu(void)
}
case MENU_TX_POWER:
strcpy(String, g_sub_MENU_TX_POWER[g_sub_menu_selection]);
strcpy(String, g_sub_menu_tx_power[g_sub_menu_selection]);
break;
case MENU_RX_CDCSS:
@ -673,12 +673,12 @@ void UI_DisplayMenu(void)
break;
case MENU_BANDWIDTH:
strcpy(String, g_sub_MENU_BANDWIDTH[g_sub_menu_selection]);
strcpy(String, g_sub_menu_bandwidth[g_sub_menu_selection]);
break;
case MENU_SCRAMBLER:
strcpy(String, "INVERT\n");
strcat(String, g_sub_MENU_SCRAMBLERAMBLER[g_sub_menu_selection]);
strcat(String, g_sub_menu_scrambler[g_sub_menu_selection]);
#if 1
if (g_sub_menu_selection > 0 && g_setting_scramble_enable)
@ -713,7 +713,7 @@ void UI_DisplayMenu(void)
#ifdef ENABLE_AM_FIX_TEST1
case MENU_AM_FIX_TEST1:
strcpy(String, g_sub_MENU_AM_FIX_test1[g_sub_menu_selection]);
strcpy(String, g_sub_menu_AM_FIX_test1[g_sub_menu_selection]);
// g_setting_am_fix = g_sub_menu_selection;
break;
#endif
@ -784,38 +784,38 @@ void UI_DisplayMenu(void)
#ifdef ENABLE_NOAA
case MENU_NOAA_SCAN:
strcpy(String, "SCAN\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
#endif
case MENU_350_EN:
strcpy(String, "350~400\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
case MENU_350_TX:
strcpy(String, "TX\n350~400\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
case MENU_174_TX:
strcpy(String, "TX\n174~350\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
case MENU_470_TX:
strcpy(String, "TX\n470~600\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
case MENU_SCRAMBLER_EN:
strcpy(String, "SCRAMBLER\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
case MENU_TX_EN:
strcpy(String, "TX\n");
strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]);
strcat(String, g_sub_menu_dis_en[g_sub_menu_selection]);
break;
case MENU_MEM_SAVE:
@ -882,11 +882,11 @@ void UI_DisplayMenu(void)
}
case MENU_BAT_SAVE:
strcpy(String, g_sub_MENU_BAT_SAVE[g_sub_menu_selection]);
strcpy(String, g_sub_menu_bat_save[g_sub_menu_selection]);
break;
case MENU_DUAL_WATCH:
// strcpy(String, g_sub_MENU_DUAL_WATCH[g_sub_menu_selection]);
// strcpy(String, g_sub_menu_dual_watch[g_sub_menu_selection]);
strcpy(String, g_sub_menu_off_on[g_sub_menu_selection]);
break;
@ -896,11 +896,11 @@ void UI_DisplayMenu(void)
break;
case MENU_CROSS_VFO:
strcpy(String, g_sub_MENU_CROSS_VFO[g_sub_menu_selection]);
strcpy(String, g_sub_menu_cross_vfo[g_sub_menu_selection]);
break;
case MENU_TX_TO:
strcpy(String, g_sub_MENU_TX_TO[g_sub_menu_selection]);
strcpy(String, g_sub_menu_tx_timeout[g_sub_menu_selection]);
break;
#ifdef ENABLE_VOICE
@ -911,11 +911,11 @@ void UI_DisplayMenu(void)
case MENU_SCAN_CAR_RESUME:
strcpy(String, "SCAN\nRESUME\n");
strcat(String, g_sub_MENU_SCAN_CAR_RESUME[g_sub_menu_selection]);
strcat(String, g_sub_menu_scan_car_resume[g_sub_menu_selection]);
break;
case MENU_MEM_DISP:
strcpy(String, g_sub_MENU_MEM_DISP[g_sub_menu_selection]);
strcpy(String, g_sub_menu_mem_disp[g_sub_menu_selection]);
break;
case MENU_RP_STE:
@ -935,7 +935,7 @@ void UI_DisplayMenu(void)
#ifdef ENABLE_ALARM
case MENU_ALARM_MODE:
strcpy(String, "TX ALARM\n");
sprintf(String + strlen(String), g_sub_MENU_ALARM_MODE[g_sub_menu_selection]);
sprintf(String + strlen(String), g_sub_menu_alarm_mode[g_sub_menu_selection]);
break;
#endif
@ -956,7 +956,7 @@ void UI_DisplayMenu(void)
case MENU_DTMF_RSP:
strcpy(String, "DTMF\nRESPONSE\n");
strcat(String, g_sub_MENU_DTMF_RSP[g_sub_menu_selection]);
strcat(String, g_sub_menu_dtmf_rsp[g_sub_menu_selection]);
break;
case MENU_DTMF_HOLD:
@ -995,11 +995,11 @@ void UI_DisplayMenu(void)
case MENU_PTT_ID:
strcpy(String, (g_sub_menu_selection > 0) ? "TX ID\n" : "");
strcat(String, g_sub_menu_PTT_ID[g_sub_menu_selection]);
strcat(String, g_sub_menu_ptt_id[g_sub_menu_selection]);
break;
case MENU_BAT_TXT:
strcpy(String, g_sub_menu_BAT_TXT[g_sub_menu_selection]);
strcpy(String, g_sub_menu_bat_text[g_sub_menu_selection]);
break;
case MENU_DTMF_LIST:
@ -1023,7 +1023,7 @@ void UI_DisplayMenu(void)
break;
case MENU_ROGER_MODE:
strcpy(String, g_sub_MENU_ROGER_MODE_mode[g_sub_menu_selection]);
strcpy(String, g_sub_menu_roger_mode[g_sub_menu_selection]);
break;
case MENU_VOLTAGE:
@ -1038,7 +1038,7 @@ void UI_DisplayMenu(void)
case MENU_SIDE1_LONG:
case MENU_SIDE2_SHORT:
case MENU_SIDE2_LONG:
strcpy(String, g_sub_menu_SIDE_BUTT[g_sub_menu_selection]);
strcpy(String, g_sub_menu_side_butt[g_sub_menu_selection]);
break;
#endif
@ -1081,7 +1081,7 @@ void UI_DisplayMenu(void)
}
case MENU_RESET:
strcpy(String, g_sub_menu_RESET[g_sub_menu_selection]);
strcpy(String, g_sub_menu_reset[g_sub_menu_selection]);
break;
case MENU_FREQ_LOCK:

View File

@ -158,37 +158,37 @@ enum
extern const t_menu_item g_menu_list[];
extern uint8_t g_menu_list_sorted[];
extern const char g_sub_MENU_TX_POWER[3][5];
extern const char g_sub_menu_tx_power[3][7];
extern const char g_sub_menu_shift_dir[3][4];
extern const char g_sub_MENU_BANDWIDTH[2][7];
extern const char g_sub_menu_bandwidth[2][7];
extern const char g_sub_menu_off_on[2][4];
extern const char g_sub_MENU_BAT_SAVE[5][9];
extern const char g_sub_MENU_TX_TO[11][7];
extern const char g_sub_MENU_DUAL_WATCH[3][10];
extern const char g_sub_MENU_CROSS_VFO[3][10];
extern const char g_sub_menu_bat_save[5][9];
extern const char g_sub_menu_tx_timeout[11][7];
extern const char g_sub_menu_dual_watch[3][10];
extern const char g_sub_menu_cross_vfo[3][10];
#ifdef ENABLE_VOICE
extern const char g_sub_menu_voice[3][4];
#endif
extern const char g_sub_MENU_SCAN_CAR_RESUME[3][13];
extern const char g_sub_MENU_MEM_DISP[4][15];
extern const char g_sub_menu_scan_car_resume[3][13];
extern const char g_sub_menu_mem_disp[4][15];
#ifdef ENABLE_ALARM
extern const char g_sub_MENU_ALARM_MODE[2][5];
extern const char g_sub_menu_alarm_mode[2][5];
#endif
extern const char g_sub_MENU_DTMF_RSP[4][9];
extern const char g_sub_menu_PTT_ID[5][15];
extern const char g_sub_menu_dtmf_rsp[4][9];
extern const char g_sub_menu_ptt_id[5][15];
extern const char g_sub_menu_pwr_on_msg[4][14];
extern const char g_sub_MENU_ROGER_MODE_mode[3][16];
extern const char g_sub_menu_RESET[2][4];
extern const char g_sub_menu_roger_mode[3][16];
extern const char g_sub_menu_reset[2][4];
extern const char g_sub_menu_backlight[8][7];
extern const char g_sub_menu_rx_tx[4][6];
#ifdef ENABLE_AM_FIX_TEST1
extern const char g_sub_MENU_AM_FIX_test1[4][8];
extern const char g_sub_menu_AM_FIX_test1[4][8];
#endif
extern const char g_sub_menu_BAT_TXT[3][8];
extern const char g_sub_menu_DIS_EN[2][9];
extern const char g_sub_MENU_SCRAMBLERAMBLER[11][7];
extern const char g_sub_menu_bat_text[3][8];
extern const char g_sub_menu_dis_en[2][9];
extern const char g_sub_menu_scrambler[11][7];
#ifdef ENABLE_SIDE_BUTT_MENU
extern const char g_sub_menu_SIDE_BUTT[9][16];
extern const char g_sub_menu_side_butt[9][16];
#endif
extern bool g_in_sub_menu;