This commit is contained in:
29
Makefile
29
Makefile
@@ -4,12 +4,12 @@
|
|||||||
# 1 = enable
|
# 1 = enable
|
||||||
|
|
||||||
# ---- STOCK QUANSHENG FEATURES ----
|
# ---- STOCK QUANSHENG FEATURES ----
|
||||||
ENABLE_FMRADIO ?= 0
|
ENABLE_FMRADIO ?= 1
|
||||||
ENABLE_UART ?= 1
|
ENABLE_UART ?= 1
|
||||||
ENABLE_AIRCOPY ?= 0
|
ENABLE_AIRCOPY ?= 0
|
||||||
ENABLE_NOAA ?= 0
|
ENABLE_NOAA ?= 0
|
||||||
ENABLE_VOICE ?= 0
|
ENABLE_VOICE ?= 0
|
||||||
ENABLE_VOX ?= 1
|
ENABLE_VOX ?= 0
|
||||||
ENABLE_ALARM ?= 0
|
ENABLE_ALARM ?= 0
|
||||||
ENABLE_TX1750 ?= 1
|
ENABLE_TX1750 ?= 1
|
||||||
ENABLE_PWRON_PASSWORD ?= 0
|
ENABLE_PWRON_PASSWORD ?= 0
|
||||||
@@ -17,15 +17,15 @@ ENABLE_DTMF_CALLING ?= 0
|
|||||||
ENABLE_FLASHLIGHT ?= 1
|
ENABLE_FLASHLIGHT ?= 1
|
||||||
|
|
||||||
# ---- CUSTOM MODS ----
|
# ---- CUSTOM MODS ----
|
||||||
ENABLE_SPECTRUM ?= 0
|
ENABLE_SPECTRUM ?= 1
|
||||||
ENABLE_BIG_FREQ ?= 1
|
ENABLE_BIG_FREQ ?= 0
|
||||||
ENABLE_SMALL_BOLD ?= 1
|
ENABLE_SMALL_BOLD ?= 0
|
||||||
ENABLE_CUSTOM_MENU_LAYOUT ?= 1
|
ENABLE_CUSTOM_MENU_LAYOUT ?= 1
|
||||||
ENABLE_KEEP_MEM_NAME ?= 1
|
ENABLE_KEEP_MEM_NAME ?= 1
|
||||||
ENABLE_WIDE_RX ?= 1
|
ENABLE_WIDE_RX ?= 1
|
||||||
ENABLE_TX_WHEN_AM ?= 0
|
ENABLE_TX_WHEN_AM ?= 0
|
||||||
ENABLE_F_CAL_MENU ?= 0
|
ENABLE_F_CAL_MENU ?= 1
|
||||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT ?= 0
|
ENABLE_CTCSS_TAIL_PHASE_SHIFT ?= 1
|
||||||
ENABLE_BOOT_BEEPS ?= 0
|
ENABLE_BOOT_BEEPS ?= 0
|
||||||
ENABLE_SHOW_CHARGE_LEVEL ?= 0
|
ENABLE_SHOW_CHARGE_LEVEL ?= 0
|
||||||
ENABLE_REVERSE_BAT_SYMBOL ?= 0
|
ENABLE_REVERSE_BAT_SYMBOL ?= 0
|
||||||
@@ -36,26 +36,26 @@ ENABLE_FASTER_CHANNEL_SCAN ?= 1
|
|||||||
ENABLE_RSSI_BAR ?= 1
|
ENABLE_RSSI_BAR ?= 1
|
||||||
ENABLE_AUDIO_BAR ?= 1
|
ENABLE_AUDIO_BAR ?= 1
|
||||||
ENABLE_COPY_CHAN_TO_VFO ?= 1
|
ENABLE_COPY_CHAN_TO_VFO ?= 1
|
||||||
ENABLE_REDUCE_LOW_MID_TX_POWER ?= 0
|
ENABLE_REDUCE_LOW_MID_TX_POWER ?= 1
|
||||||
ENABLE_BYP_RAW_DEMODULATORS ?= 0
|
ENABLE_BYP_RAW_DEMODULATORS ?= 1
|
||||||
ENABLE_BLMIN_TMP_OFF ?= 0
|
ENABLE_BLMIN_TMP_OFF ?= 1
|
||||||
ENABLE_SCAN_RANGES ?= 1
|
ENABLE_SCAN_RANGES ?= 1
|
||||||
ENABLE_FEAT_F4HWN ?= 1
|
ENABLE_FEAT_F4HWN ?= 1
|
||||||
ENABLE_FEAT_F4HWN_SCREENSHOT ?= 0
|
ENABLE_FEAT_F4HWN_SCREENSHOT ?= 0
|
||||||
ENABLE_FEAT_F4HWN_SPECTRUM ?= 1
|
ENABLE_FEAT_F4HWN_SPECTRUM ?= 1
|
||||||
ENABLE_FEAT_F4HWN_RX_TX_TIMER ?= 1
|
ENABLE_FEAT_F4HWN_RX_TX_TIMER ?= 0
|
||||||
ENABLE_FEAT_F4HWN_CHARGING_C ?= 0
|
ENABLE_FEAT_F4HWN_CHARGING_C ?= 0
|
||||||
ENABLE_FEAT_F4HWN_SLEEP ?= 1
|
ENABLE_FEAT_F4HWN_SLEEP ?= 1
|
||||||
ENABLE_FEAT_F4HWN_RESUME_STATE ?= 1
|
ENABLE_FEAT_F4HWN_RESUME_STATE ?= 1
|
||||||
ENABLE_FEAT_F4HWN_NARROWER ?= 1
|
ENABLE_FEAT_F4HWN_NARROWER ?= 1
|
||||||
ENABLE_FEAT_F4HWN_INV ?= 1
|
ENABLE_FEAT_F4HWN_INV ?= 0
|
||||||
ENABLE_FEAT_F4HWN_CTR ?= 1
|
ENABLE_FEAT_F4HWN_CTR ?= 1
|
||||||
ENABLE_FEAT_F4HWN_RESCUE_OPS ?= 0
|
ENABLE_FEAT_F4HWN_RESCUE_OPS ?= 0
|
||||||
ENABLE_FEAT_F4HWN_VOL ?= 0
|
ENABLE_FEAT_F4HWN_VOL ?= 1
|
||||||
ENABLE_FEAT_F4HWN_RESET_CHANNEL ?= 0
|
ENABLE_FEAT_F4HWN_RESET_CHANNEL ?= 0
|
||||||
ENABLE_FEAT_F4HWN_PMR ?= 0
|
ENABLE_FEAT_F4HWN_PMR ?= 0
|
||||||
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS ?= 0
|
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS ?= 0
|
||||||
ENABLE_FEAT_F4HWN_CA ?= 1
|
ENABLE_FEAT_F4HWN_CA ?= 0
|
||||||
ENABLE_FEAT_F4HWN_DEBUG ?= 0
|
ENABLE_FEAT_F4HWN_DEBUG ?= 0
|
||||||
ENABLE_REGA ?= 0
|
ENABLE_REGA ?= 0
|
||||||
|
|
||||||
@@ -138,6 +138,7 @@ OBJS += app/app.o
|
|||||||
OBJS += app/chFrScanner.o
|
OBJS += app/chFrScanner.o
|
||||||
OBJS += app/common.o
|
OBJS += app/common.o
|
||||||
OBJS += app/dtmf.o
|
OBJS += app/dtmf.o
|
||||||
|
OBJS += app/fskmodem.o
|
||||||
ifeq ($(ENABLE_REGA),1)
|
ifeq ($(ENABLE_REGA),1)
|
||||||
OBJS += app/rega.o
|
OBJS += app/rega.o
|
||||||
endif
|
endif
|
||||||
|
@@ -45,16 +45,13 @@ uint8_t gAirCopyIsSendMode;
|
|||||||
|
|
||||||
uint16_t g_FSK_Buffer[36];
|
uint16_t g_FSK_Buffer[36];
|
||||||
|
|
||||||
static void AIRCOPY_clear()
|
static void AIRCOPY_clear() {
|
||||||
{
|
for (uint8_t i = 0; i < 15; i++) {
|
||||||
for (uint8_t i = 0; i < 15; i++)
|
|
||||||
{
|
|
||||||
crc[i] = 0;
|
crc[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AIRCOPY_SendMessage(void)
|
bool AIRCOPY_SendMessage(void) {
|
||||||
{
|
|
||||||
static uint8_t gAircopySendCountdown = 1;
|
static uint8_t gAircopySendCountdown = 1;
|
||||||
|
|
||||||
if (gAircopyState != AIRCOPY_TRANSFER) {
|
if (gAircopyState != AIRCOPY_TRANSFER) {
|
||||||
@@ -94,8 +91,7 @@ bool AIRCOPY_SendMessage(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AIRCOPY_StorePacket(void)
|
void AIRCOPY_StorePacket(void) {
|
||||||
{
|
|
||||||
if (gFSKWriteIndex < 36) {
|
if (gFSKWriteIndex < 36) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -146,8 +142,7 @@ void AIRCOPY_StorePacket(void)
|
|||||||
gAirCopyBlockNumber++;
|
gAirCopyBlockNumber++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AIRCOPY_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
static void AIRCOPY_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld || !bKeyPressed) {
|
if (bKeyHeld || !bKeyPressed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -194,8 +189,7 @@ static void AIRCOPY_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
gRequestDisplayScreen = DISPLAY_AIRCOPY;
|
gRequestDisplayScreen = DISPLAY_AIRCOPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AIRCOPY_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
static void AIRCOPY_Key_EXIT(bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld || !bKeyPressed) {
|
if (bKeyHeld || !bKeyPressed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -220,8 +214,7 @@ static void AIRCOPY_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
gRequestDisplayScreen = DISPLAY_AIRCOPY;
|
gRequestDisplayScreen = DISPLAY_AIRCOPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AIRCOPY_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
static void AIRCOPY_Key_MENU(bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld || !bKeyPressed) {
|
if (bKeyHeld || !bKeyPressed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -242,8 +235,7 @@ static void AIRCOPY_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
|||||||
gAircopyState = AIRCOPY_TRANSFER;
|
gAircopyState = AIRCOPY_TRANSFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AIRCOPY_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
void AIRCOPY_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
case KEY_0:
|
case KEY_0:
|
||||||
case KEY_1:
|
case KEY_1:
|
||||||
|
@@ -24,12 +24,20 @@
|
|||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
|
|
||||||
void APP_EndTransmission(void);
|
void APP_EndTransmission(void);
|
||||||
|
|
||||||
void APP_StartListening(FUNCTION_Type_t function);
|
void APP_StartListening(FUNCTION_Type_t function);
|
||||||
|
|
||||||
uint32_t APP_SetFreqByStepAndLimits(VFO_Info_t *pInfo, int8_t direction, uint32_t lower, uint32_t upper);
|
uint32_t APP_SetFreqByStepAndLimits(VFO_Info_t *pInfo, int8_t direction, uint32_t lower, uint32_t upper);
|
||||||
|
|
||||||
uint32_t APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t direction);
|
uint32_t APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t direction);
|
||||||
|
|
||||||
void APP_Update(void);
|
void APP_Update(void);
|
||||||
|
|
||||||
void APP_TimeSlice10ms(void);
|
void APP_TimeSlice10ms(void);
|
||||||
|
|
||||||
void APP_TimeSlice500ms(void);
|
void APP_TimeSlice500ms(void);
|
||||||
|
|
||||||
|
void APP_EndTransmission(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
94
app/dtmf.c
94
app/dtmf.c
@@ -248,7 +248,7 @@ void DTMF_HandleRequest(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gRxVfo->DTMF_DECODING_ENABLE && !gSetting_KILLED)
|
if (!gRxVfo->DTMF_DECODING_ENABLE)
|
||||||
{ // D-DCD is disabled or we're alive
|
{ // D-DCD is disabled or we're alive
|
||||||
DTMF_clear_RX();
|
DTMF_clear_RX();
|
||||||
return;
|
return;
|
||||||
@@ -266,28 +266,28 @@ void DTMF_HandleRequest(void)
|
|||||||
if (CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
if (CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
||||||
{ // bugger
|
{ // bugger
|
||||||
|
|
||||||
if (gEeprom.PERMIT_REMOTE_KILL)
|
// if (gEeprom.PERMIT_REMOTE_KILL)
|
||||||
{
|
// {
|
||||||
gSetting_KILLED = true; // oooerr !
|
// gSetting_KILLED = true; // oooerr !
|
||||||
|
//
|
||||||
DTMF_clear_RX();
|
// DTMF_clear_RX();
|
||||||
|
//
|
||||||
SETTINGS_SaveSettings();
|
// SETTINGS_SaveSettings();
|
||||||
|
//
|
||||||
gDTMF_ReplyState = DTMF_REPLY_AB;
|
// gDTMF_ReplyState = DTMF_REPLY_AB;
|
||||||
|
//
|
||||||
#ifdef ENABLE_FMRADIO
|
// #ifdef ENABLE_FMRADIO
|
||||||
if (gFmRadioMode)
|
// if (gFmRadioMode)
|
||||||
{
|
// {
|
||||||
FM_TurnOff();
|
// FM_TurnOff();
|
||||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
// GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||||
}
|
// }
|
||||||
#endif
|
// #endif
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
gDTMF_ReplyState = DTMF_REPLY_NONE;
|
gDTMF_ReplyState = DTMF_REPLY_NONE;
|
||||||
}
|
// }
|
||||||
|
|
||||||
gDTMF_CallState = DTMF_CALL_STATE_NONE;
|
gDTMF_CallState = DTMF_CALL_STATE_NONE;
|
||||||
|
|
||||||
@@ -297,30 +297,30 @@ void DTMF_HandleRequest(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gDTMF_RX_index >= 9)
|
// if (gDTMF_RX_index >= 9)
|
||||||
{ // look for the REVIVE code
|
// { // look for the REVIVE code
|
||||||
|
//
|
||||||
sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, gEeprom.REVIVE_CODE);
|
// sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, gEeprom.REVIVE_CODE);
|
||||||
|
//
|
||||||
Offset = gDTMF_RX_index - strlen(String);
|
// Offset = gDTMF_RX_index - strlen(String);
|
||||||
|
//
|
||||||
if (CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
// if (CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
||||||
{ // shit, we're back !
|
// { // shit, we're back !
|
||||||
|
//
|
||||||
gSetting_KILLED = false;
|
// gSetting_KILLED = false;
|
||||||
|
//
|
||||||
DTMF_clear_RX();
|
// DTMF_clear_RX();
|
||||||
|
//
|
||||||
SETTINGS_SaveSettings();
|
// SETTINGS_SaveSettings();
|
||||||
|
//
|
||||||
gDTMF_ReplyState = DTMF_REPLY_AB;
|
// gDTMF_ReplyState = DTMF_REPLY_AB;
|
||||||
gDTMF_CallState = DTMF_CALL_STATE_NONE;
|
// gDTMF_CallState = DTMF_CALL_STATE_NONE;
|
||||||
|
//
|
||||||
gUpdateDisplay = true;
|
// gUpdateDisplay = true;
|
||||||
gUpdateStatus = true;
|
// gUpdateStatus = true;
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (gDTMF_RX_index >= 2)
|
if (gDTMF_RX_index >= 2)
|
||||||
{ // look for ACK reply
|
{ // look for ACK reply
|
||||||
@@ -360,7 +360,7 @@ void DTMF_HandleRequest(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSetting_KILLED || gDTMF_CallState != DTMF_CALL_STATE_NONE)
|
if (gDTMF_CallState != DTMF_CALL_STATE_NONE)
|
||||||
{ // we've been killed or expecting a reply
|
{ // we've been killed or expecting a reply
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
265
app/main.c
265
app/main.c
@@ -20,15 +20,21 @@
|
|||||||
#include "app/app.h"
|
#include "app/app.h"
|
||||||
#include "app/chFrScanner.h"
|
#include "app/chFrScanner.h"
|
||||||
#include "app/common.h"
|
#include "app/common.h"
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
|
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "app/generic.h"
|
#include "app/generic.h"
|
||||||
#include "app/main.h"
|
#include "app/main.h"
|
||||||
#include "app/scanner.h"
|
#include "app/scanner.h"
|
||||||
|
|
||||||
#ifdef ENABLE_SPECTRUM
|
#ifdef ENABLE_SPECTRUM
|
||||||
|
|
||||||
#include "app/spectrum.h"
|
#include "app/spectrum.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
@@ -43,8 +49,22 @@
|
|||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
static void toggle_chan_scanlist(void)
|
#define T9Count 9
|
||||||
{ // toggle the selected channels scanlist setting
|
|
||||||
|
const char T9Table[10][T9Count] = {
|
||||||
|
{'#', '(', ')', ';', ':', '<', '>', '/', '0'},
|
||||||
|
{',', '.', '?', '&', '!', ' ', '-', '_', '1'},
|
||||||
|
{'a', 'b', 'c', 'A', 'B', 'C', '[', ']', '2'},
|
||||||
|
{'d', 'e', 'f', 'D', 'E', 'F', '@', '%', '3'},
|
||||||
|
{'g', 'h', 'i', 'G', 'H', 'I', '~', '$', '4'},
|
||||||
|
{'j', 'k', 'l', 'J', 'K', 'L', '|', '*', '5'},
|
||||||
|
{'m', 'n', 'o', 'M', 'N', 'O', '{', '}', '6'},
|
||||||
|
{'p', 'q', 'r', 's', 'P', 'Q', 'R', 'S', '7'},
|
||||||
|
{'t', 'u', 'v', 'T', 'U', 'V', '"', '\'', '8'},
|
||||||
|
{'w', 'x', 'y', 'z', 'W', 'X', 'Y', 'Z', '9'}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void toggle_chan_scanlist(void) { // toggle the selected channels scanlist setting
|
||||||
|
|
||||||
if (SCANNER_IsScanning())
|
if (SCANNER_IsScanning())
|
||||||
return;
|
return;
|
||||||
@@ -60,13 +80,13 @@ static void toggle_chan_scanlist(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove exclude
|
// Remove exclude
|
||||||
if(gMR_ChannelExclude[gTxVfo->CHANNEL_SAVE] == true)
|
if (gMR_ChannelExclude[gTxVfo->CHANNEL_SAVE] == true) {
|
||||||
{
|
|
||||||
gMR_ChannelExclude[gTxVfo->CHANNEL_SAVE] = false;
|
gMR_ChannelExclude[gTxVfo->CHANNEL_SAVE] = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t scanTmp = gTxVfo->SCANLIST1_PARTICIPATION | (gTxVfo->SCANLIST2_PARTICIPATION << 1) | (gTxVfo->SCANLIST3_PARTICIPATION << 2);
|
uint8_t scanTmp = gTxVfo->SCANLIST1_PARTICIPATION | (gTxVfo->SCANLIST2_PARTICIPATION << 1) |
|
||||||
|
(gTxVfo->SCANLIST3_PARTICIPATION << 2);
|
||||||
|
|
||||||
scanTmp = (scanTmp++ < 7) ? scanTmp : 0;
|
scanTmp = (scanTmp++ < 7) ? scanTmp : 0;
|
||||||
|
|
||||||
@@ -80,8 +100,7 @@ static void toggle_chan_scanlist(void)
|
|||||||
gFlagResetVfos = true;
|
gFlagResetVfos = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
static void processFKeyFunction(const KEY_Code_t Key, const bool beep) {
|
||||||
{
|
|
||||||
uint8_t Vfo = gEeprom.TX_VFO;
|
uint8_t Vfo = gEeprom.TX_VFO;
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
@@ -126,16 +145,14 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
if (gScanStateDir != SCAN_OFF) {
|
if (gScanStateDir != SCAN_OFF) {
|
||||||
if (gCurrentFunction != FUNCTION_INCOMING ||
|
if (gCurrentFunction != FUNCTION_INCOMING ||
|
||||||
gRxReceptionMode == RX_MODE_NONE ||
|
gRxReceptionMode == RX_MODE_NONE ||
|
||||||
gScanPauseDelayIn_10ms == 0)
|
gScanPauseDelayIn_10ms == 0) { // scan is running (not paused)
|
||||||
{ // scan is running (not paused)
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t vfo = gEeprom.TX_VFO;
|
const uint8_t vfo = gEeprom.TX_VFO;
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo]))
|
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo])) { // copy channel to VFO, then swap to the VFO
|
||||||
{ // copy channel to VFO, then swap to the VFO
|
|
||||||
|
|
||||||
gEeprom.ScreenChannel[vfo] = FREQ_CHANNEL_FIRST + gEeprom.VfoInfo[vfo].Band;
|
gEeprom.ScreenChannel[vfo] = FREQ_CHANNEL_FIRST + gEeprom.VfoInfo[vfo].Band;
|
||||||
gEeprom.VfoInfo[vfo].CHANNEL_SAVE = gEeprom.ScreenChannel[vfo];
|
gEeprom.VfoInfo[vfo].CHANNEL_SAVE = gEeprom.ScreenChannel[vfo];
|
||||||
@@ -234,8 +251,7 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
APP_RunSpectrum();
|
APP_RunSpectrum();
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
#endif
|
#endif
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
toggle_chan_scanlist();
|
toggle_chan_scanlist();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,12 +306,10 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
|
|
||||||
case KEY_SIDE1:
|
case KEY_SIDE1:
|
||||||
uint8_t a = FREQUENCY_GetSortedIdxFromStepIdx(gTxVfo->STEP_SETTING);
|
uint8_t a = FREQUENCY_GetSortedIdxFromStepIdx(gTxVfo->STEP_SETTING);
|
||||||
if (a < STEP_N_ELEM - 1)
|
if (a < STEP_N_ELEM - 1) {
|
||||||
{
|
|
||||||
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(a + 1);
|
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(a + 1);
|
||||||
}
|
}
|
||||||
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE)) {
|
||||||
{
|
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
}
|
}
|
||||||
gVfoConfigureMode = VFO_CONFIGURE;
|
gVfoConfigureMode = VFO_CONFIGURE;
|
||||||
@@ -303,12 +317,10 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
break;
|
break;
|
||||||
case KEY_SIDE2:
|
case KEY_SIDE2:
|
||||||
uint8_t b = FREQUENCY_GetSortedIdxFromStepIdx(gTxVfo->STEP_SETTING);
|
uint8_t b = FREQUENCY_GetSortedIdxFromStepIdx(gTxVfo->STEP_SETTING);
|
||||||
if (b > 0)
|
if (b > 0) {
|
||||||
{
|
|
||||||
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(b - 1);
|
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(b - 1);
|
||||||
}
|
}
|
||||||
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE)) {
|
||||||
{
|
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
}
|
}
|
||||||
gVfoConfigureMode = VFO_CONFIGURE;
|
gVfoConfigureMode = VFO_CONFIGURE;
|
||||||
@@ -326,8 +338,7 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void channelMove(uint16_t Channel)
|
void channelMove(uint16_t Channel) {
|
||||||
{
|
|
||||||
const uint8_t Vfo = gEeprom.TX_VFO;
|
const uint8_t Vfo = gEeprom.TX_VFO;
|
||||||
|
|
||||||
if (!RADIO_CheckValidChannel(Channel, false, 0)) {
|
if (!RADIO_CheckValidChannel(Channel, false, 0)) {
|
||||||
@@ -400,8 +411,7 @@ void channelMoveSwitch(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld) { // key held down
|
if (bKeyHeld) { // key held down
|
||||||
if (bKeyPressed) {
|
if (bKeyPressed) {
|
||||||
if (gScreenToDisplay == DISPLAY_MAIN) {
|
if (gScreenToDisplay == DISPLAY_MAIN) {
|
||||||
@@ -419,8 +429,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bKeyPressed)
|
if (bKeyPressed) { // key is pressed
|
||||||
{ // key is pressed
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; // beep when key is pressed
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; // beep when key is pressed
|
||||||
return; // don't use the key till it's released
|
return; // don't use the key till it's released
|
||||||
}
|
}
|
||||||
@@ -463,8 +472,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
// #ifdef ENABLE_NOAA
|
// #ifdef ENABLE_NOAA
|
||||||
// if (!IS_NOAA_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
// if (!IS_NOAA_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
// #endif
|
// #endif
|
||||||
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE)) { // user is entering a frequency
|
||||||
{ // user is entering a frequency
|
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||||
@@ -479,7 +487,8 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gKeyInputCountdown = (gInputBoxIndex == totalDigits) ? (key_input_timeout_500ms / 16) : (key_input_timeout_500ms / 3);
|
gKeyInputCountdown = (gInputBoxIndex == totalDigits) ? (key_input_timeout_500ms / 16) : (
|
||||||
|
key_input_timeout_500ms / 3);
|
||||||
|
|
||||||
const char *inputStr = INPUTBOX_GetAscii();
|
const char *inputStr = INPUTBOX_GetAscii();
|
||||||
uint8_t inputLength = gInputBoxIndex;
|
uint8_t inputLength = gInputBoxIndex;
|
||||||
@@ -500,12 +509,10 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
// clamp the frequency entered to some valid value
|
// clamp the frequency entered to some valid value
|
||||||
if (Frequency < frequencyBandTable[0].lower) {
|
if (Frequency < frequencyBandTable[0].lower) {
|
||||||
Frequency = frequencyBandTable[0].lower;
|
Frequency = frequencyBandTable[0].lower;
|
||||||
}
|
} else if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) {
|
||||||
else if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) {
|
|
||||||
const uint32_t center = (BX4819_band1.upper + BX4819_band2.lower) / 2;
|
const uint32_t center = (BX4819_band1.upper + BX4819_band2.lower) / 2;
|
||||||
Frequency = (Frequency < center) ? BX4819_band1.upper : BX4819_band2.lower;
|
Frequency = (Frequency < center) ? BX4819_band1.upper : BX4819_band2.lower;
|
||||||
}
|
} else if (Frequency > frequencyBandTable[BAND_N_ELEM - 1].upper) {
|
||||||
else if (Frequency > frequencyBandTable[BAND_N_ELEM - 1].upper) {
|
|
||||||
Frequency = frequencyBandTable[BAND_N_ELEM - 1].upper;
|
Frequency = frequencyBandTable[BAND_N_ELEM - 1].upper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -523,8 +530,8 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
Frequency = FREQUENCY_RoundToStep(Frequency, gTxVfo->StepFrequency);
|
Frequency = FREQUENCY_RoundToStep(Frequency, gTxVfo->StepFrequency);
|
||||||
|
|
||||||
if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower)
|
if (Frequency >= BX4819_band1.upper &&
|
||||||
{ // clamp the frequency to the limit
|
Frequency < BX4819_band2.lower) { // clamp the frequency to the limit
|
||||||
const uint32_t center = (BX4819_band1.upper + BX4819_band2.lower) / 2;
|
const uint32_t center = (BX4819_band1.upper + BX4819_band2.lower) / 2;
|
||||||
Frequency = (Frequency < center) ? BX4819_band1.upper - gTxVfo->StepFrequency : BX4819_band2.lower;
|
Frequency = (Frequency < center) ? BX4819_band1.upper - gTxVfo->StepFrequency : BX4819_band2.lower;
|
||||||
}
|
}
|
||||||
@@ -572,13 +579,10 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
gWasFKeyPressed = false;
|
gWasFKeyPressed = false;
|
||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
|
|
||||||
if(Key == 8)
|
if (Key == 8) {
|
||||||
{
|
|
||||||
ACTION_BackLightOnDemand();
|
ACTION_BackLightOnDemand();
|
||||||
return;
|
return;
|
||||||
}
|
} else if (Key == 9) {
|
||||||
else if(Key == 9)
|
|
||||||
{
|
|
||||||
ACTION_BackLight();
|
ACTION_BackLight();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -586,8 +590,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
processFKeyFunction(Key, true);
|
processFKeyFunction(Key, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (!bKeyHeld && bKeyPressed) { // exit key pressed
|
if (!bKeyHeld && bKeyPressed) { // exit key pressed
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
@@ -615,8 +618,7 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
if (gInputBoxIndex == 0)
|
if (gInputBoxIndex == 0)
|
||||||
gAnotherVoiceID = VOICE_ID_CANCEL;
|
gAnotherVoiceID = VOICE_ID_CANCEL;
|
||||||
#endif
|
#endif
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
gScanKeepResult = false;
|
gScanKeepResult = false;
|
||||||
CHFRSCANNER_Stop();
|
CHFRSCANNER_Stop();
|
||||||
|
|
||||||
@@ -636,8 +638,8 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bKeyHeld && bKeyPressed) { // exit key held down
|
if (bKeyHeld && bKeyPressed) { // exit key held down
|
||||||
if (gInputBoxIndex > 0 || gDTMF_InputBox_Index > 0 || gDTMF_InputMode)
|
if (gInputBoxIndex > 0 || gDTMF_InputBox_Index > 0 ||
|
||||||
{ // cancel key input mode (channel/frequency entry)
|
gDTMF_InputMode) { // cancel key input mode (channel/frequency entry)
|
||||||
gDTMF_InputMode = false;
|
gDTMF_InputMode = false;
|
||||||
gDTMF_InputBox_Index = 0;
|
gDTMF_InputBox_Index = 0;
|
||||||
memset(gDTMF_String, 0, sizeof(gDTMF_String));
|
memset(gDTMF_String, 0, sizeof(gDTMF_String));
|
||||||
@@ -648,8 +650,7 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
static void MAIN_Key_MENU(bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyPressed && !bKeyHeld) // menu key pressed
|
if (bKeyPressed && !bKeyHeld) // menu key pressed
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
@@ -658,10 +659,8 @@ static void MAIN_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
// Exclude work with list 1, 2, 3 or all list
|
// Exclude work with list 1, 2, 3 or all list
|
||||||
if(gScanStateDir != SCAN_OFF)
|
if (gScanStateDir != SCAN_OFF) {
|
||||||
{
|
if (FUNCTION_IsRx()) {
|
||||||
if(FUNCTION_IsRx())
|
|
||||||
{
|
|
||||||
gMR_ChannelExclude[gTxVfo->CHANNEL_SAVE] = true;
|
gMR_ChannelExclude[gTxVfo->CHANNEL_SAVE] = true;
|
||||||
|
|
||||||
gVfoConfigureMode = VFO_CONFIGURE;
|
gVfoConfigureMode = VFO_CONFIGURE;
|
||||||
@@ -717,15 +716,13 @@ static void MAIN_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
|||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld)
|
static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
if(gEeprom.MENU_LOCK == true) {
|
if(gEeprom.MENU_LOCK == true) {
|
||||||
@@ -780,8 +777,7 @@ static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld)
|
|||||||
#ifdef ENABLE_SCAN_RANGES
|
#ifdef ENABLE_SCAN_RANGES
|
||||||
&& gScanRangeStart == 0
|
&& gScanRangeStart == 0
|
||||||
#endif
|
#endif
|
||||||
)
|
) { // start entering a DTMF string
|
||||||
{ // start entering a DTMF string
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
memcpy(gDTMF_InputBox, gDTMF_String, MIN(sizeof(gDTMF_InputBox), sizeof(gDTMF_String) - 1));
|
memcpy(gDTMF_InputBox, gDTMF_String, MIN(sizeof(gDTMF_InputBox), sizeof(gDTMF_String) - 1));
|
||||||
gDTMF_InputBox_Index = 0;
|
gDTMF_InputBox_Index = 0;
|
||||||
@@ -790,12 +786,9 @@ static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld)
|
|||||||
gKeyInputCountdown = key_input_timeout_500ms;
|
gKeyInputCountdown = key_input_timeout_500ms;
|
||||||
|
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
}
|
} else { // with the F-key
|
||||||
else
|
|
||||||
{ // with the F-key
|
|
||||||
gWasFKeyPressed = false;
|
gWasFKeyPressed = false;
|
||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
@@ -816,13 +809,11 @@ static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld)
|
|||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction) {
|
||||||
{
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN // Set Squelch F + UP or Down
|
#ifdef ENABLE_FEAT_F4HWN // Set Squelch F + UP or Down
|
||||||
if (gWasFKeyPressed) {
|
if (gWasFKeyPressed) {
|
||||||
switch(Direction)
|
switch (Direction) {
|
||||||
{
|
|
||||||
case 1:
|
case 1:
|
||||||
processFKeyFunction(KEY_UP, false);
|
processFKeyFunction(KEY_UP, false);
|
||||||
break;
|
break;
|
||||||
@@ -855,8 +846,7 @@ static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
|||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
} else { // short pressed
|
||||||
else { // short pressed
|
|
||||||
if (gInputBoxIndex > 0) {
|
if (gInputBoxIndex > 0) {
|
||||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
return;
|
return;
|
||||||
@@ -920,8 +910,13 @@ static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
|||||||
gPttWasReleased = true;
|
gPttWasReleased = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MAIN_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
void updatePrevChar(KEY_Code_t Key) {
|
||||||
{
|
if (Key != prevKey) {
|
||||||
|
prevKey = Key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MAIN_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
if (gFmRadioMode && Key != KEY_PTT && Key != KEY_EXIT) {
|
if (gFmRadioMode && Key != KEY_PTT && Key != KEY_EXIT) {
|
||||||
if (!bKeyHeld && bKeyPressed)
|
if (!bKeyHeld && bKeyPressed)
|
||||||
@@ -932,8 +927,7 @@ void MAIN_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
if (gDTMF_InputMode && bKeyPressed && !bKeyHeld) {
|
if (gDTMF_InputMode && bKeyPressed && !bKeyHeld) {
|
||||||
const char Character = DTMF_GetCharacter(Key);
|
const char Character = DTMF_GetCharacter(Key);
|
||||||
if (Character != 0xFF)
|
if (Character != 0xFF) { // add key to DTMF string
|
||||||
{ // add key to DTMF string
|
|
||||||
DTMF_Append(Character);
|
DTMF_Append(Character);
|
||||||
gKeyInputCountdown = key_input_timeout_500ms;
|
gKeyInputCountdown = key_input_timeout_500ms;
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
@@ -949,31 +943,138 @@ void MAIN_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
// Key = KEY_SIDE2; // what's this doing ???
|
// Key = KEY_SIDE2; // what's this doing ???
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
if (Key == KEY_9 && bKeyHeld) {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
if (gEnteringSMS == SMS_NOT_ENTERING) {
|
||||||
|
gEnteringSMS = SMS_ENTERING_DEST;
|
||||||
|
updatePrevChar(Key);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Key == KEY_MENU) {
|
||||||
|
if (gEnteringSMS == SMS_ENTERING_DEST) {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
memset(dataPacket.data, 0, DataPacketDataSize);
|
||||||
|
prepareDataPacket();
|
||||||
|
dataPacket.flags = 126;
|
||||||
|
gEnteringSMS = SMS_ENTERING_MESSAGE;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (gEnteringSMS == SMS_ENTERING_MESSAGE) {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
if (strlen((char *) dataPacket.data)) {
|
||||||
|
BK4819_ToggleGpioOut(BK4819_GPIO5_PIN1_RED, true);
|
||||||
|
AUDIO_AudioPathOff();
|
||||||
|
gEnableSpeaker = false;
|
||||||
|
RADIO_PrepareTX();
|
||||||
|
if (gCurrentVfo->SCRAMBLING_TYPE > 0)
|
||||||
|
BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1);
|
||||||
|
else
|
||||||
|
BK4819_DisableScramble();
|
||||||
|
MSG_FSKSendData();
|
||||||
|
AUDIO_AudioPathOn();
|
||||||
|
gEnableSpeaker = true;
|
||||||
|
BK4819_ExitTxMute();
|
||||||
|
MSG_EnableRX(true);
|
||||||
|
gVfoConfigureMode = VFO_CONFIGURE;
|
||||||
|
BK4819_ToggleGpioOut(BK4819_GPIO5_PIN1_RED, false);
|
||||||
|
dataPTR = dataPacket.data;
|
||||||
|
memset(dataPacket.data, 0, DataPacketDataSize);
|
||||||
|
gEnteringSMS = SMS_NOT_ENTERING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Key == KEY_EXIT && gEnteringSMS != SMS_NOT_ENTERING) {
|
||||||
|
if (bKeyHeld) {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
gEnteringSMS = SMS_NOT_ENTERING;
|
||||||
|
dataPTR = dataPacket.data;
|
||||||
|
memset(dataPacket.data, 0, DataPacketDataSize);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
if (gEnteringSMS == SMS_ENTERING_MESSAGE) {
|
||||||
|
if (dataPacket.data <= dataPTR) {
|
||||||
|
*dataPTR = '\0';
|
||||||
|
if (dataPacket.data < dataPTR) {
|
||||||
|
dataPTR--;
|
||||||
|
}
|
||||||
|
*dataPTR = '\0';
|
||||||
|
}
|
||||||
|
} else if (gEnteringSMS == SMS_ENTERING_DEST) {
|
||||||
|
dataPacket.dest /= 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updatePrevChar(Key);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gEnteringSMS != SMS_NOT_ENTERING && !bKeyHeld) {
|
||||||
|
if (!dataPTR) {
|
||||||
|
dataPTR = dataPacket.data;
|
||||||
|
}
|
||||||
|
if (gEnteringSMS == SMS_ENTERING_MESSAGE) {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
if (prevKey != Key) {
|
||||||
|
dataPTR++;
|
||||||
|
if (dataPTR - dataPacket.data >= DataPacketDataSize) {
|
||||||
|
dataPTR = dataPacket.data;
|
||||||
|
}
|
||||||
|
prevLetter = 0;
|
||||||
|
}
|
||||||
|
*(dataPTR - 1) = T9Table[Key][(prevLetter++) % T9Count];
|
||||||
|
updatePrevChar(Key);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else if (gEnteringSMS == SMS_ENTERING_DEST) {
|
||||||
|
if (bKeyPressed) {
|
||||||
|
dataPacket.dest *= 10;
|
||||||
|
dataPacket.dest += Key;
|
||||||
|
prevLetter = 0;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
case KEY_SIDE1:
|
case KEY_SIDE1:
|
||||||
case KEY_SIDE2:
|
case KEY_SIDE2:
|
||||||
#endif
|
#endif
|
||||||
case KEY_0...KEY_9:
|
case
|
||||||
MAIN_Key_DIGITS(Key, bKeyPressed, bKeyHeld);
|
KEY_0...KEY_9
|
||||||
|
:
|
||||||
|
MAIN_Key_DIGITS(Key, bKeyPressed, bKeyHeld
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case KEY_MENU:
|
case KEY_MENU:
|
||||||
MAIN_Key_MENU(bKeyPressed, bKeyHeld);
|
MAIN_Key_MENU(bKeyPressed, bKeyHeld
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case KEY_UP:
|
case KEY_UP:
|
||||||
MAIN_Key_UP_DOWN(bKeyPressed, bKeyHeld, 1);
|
MAIN_Key_UP_DOWN(bKeyPressed, bKeyHeld,
|
||||||
|
1);
|
||||||
break;
|
break;
|
||||||
case KEY_DOWN:
|
case KEY_DOWN:
|
||||||
MAIN_Key_UP_DOWN(bKeyPressed, bKeyHeld, -1);
|
MAIN_Key_UP_DOWN(bKeyPressed, bKeyHeld,
|
||||||
|
-1);
|
||||||
break;
|
break;
|
||||||
case KEY_EXIT:
|
case KEY_EXIT:
|
||||||
MAIN_Key_EXIT(bKeyPressed, bKeyHeld);
|
MAIN_Key_EXIT(bKeyPressed, bKeyHeld
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case KEY_STAR:
|
case KEY_STAR:
|
||||||
MAIN_Key_STAR(bKeyPressed, bKeyHeld);
|
MAIN_Key_STAR(bKeyPressed, bKeyHeld
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case KEY_F:
|
case KEY_F:
|
||||||
GENERIC_Key_F(bKeyPressed, bKeyHeld);
|
GENERIC_Key_F(bKeyPressed, bKeyHeld
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case KEY_PTT:
|
case KEY_PTT:
|
||||||
GENERIC_Key_PTT(bKeyPressed);
|
GENERIC_Key_PTT(bKeyPressed);
|
||||||
|
346
app/menu.c
346
app/menu.c
@@ -17,8 +17,11 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#if !defined(ENABLE_OVERLAY)
|
#if !defined(ENABLE_OVERLAY)
|
||||||
|
|
||||||
#include "ARMCM0.h"
|
#include "ARMCM0.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
#include "app/generic.h"
|
#include "app/generic.h"
|
||||||
#include "app/menu.h"
|
#include "app/menu.h"
|
||||||
@@ -35,9 +38,11 @@
|
|||||||
#include "helper/battery.h"
|
#include "helper/battery.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
#if defined(ENABLE_OVERLAY)
|
#if defined(ENABLE_OVERLAY)
|
||||||
#include "sram-overlay.h"
|
#include "sram-overlay.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "ui/inputbox.h"
|
#include "ui/inputbox.h"
|
||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
@@ -76,8 +81,7 @@ uint8_t gUnlockAllTxConfCnt;
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void MENU_StartCssScan(void)
|
void MENU_StartCssScan(void) {
|
||||||
{
|
|
||||||
SCANNER_Start(true);
|
SCANNER_Start(true);
|
||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
gCssBackgroundScan = true;
|
gCssBackgroundScan = true;
|
||||||
@@ -85,12 +89,10 @@ void MENU_StartCssScan(void)
|
|||||||
gRequestDisplayScreen = DISPLAY_MENU;
|
gRequestDisplayScreen = DISPLAY_MENU;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MENU_CssScanFound(void)
|
void MENU_CssScanFound(void) {
|
||||||
{
|
|
||||||
if (gScanCssResultType == CODE_TYPE_DIGITAL || gScanCssResultType == CODE_TYPE_REVERSE_DIGITAL) {
|
if (gScanCssResultType == CODE_TYPE_DIGITAL || gScanCssResultType == CODE_TYPE_REVERSE_DIGITAL) {
|
||||||
gMenuCursor = UI_MENU_GetMenuIdx(MENU_R_DCS);
|
gMenuCursor = UI_MENU_GetMenuIdx(MENU_R_DCS);
|
||||||
}
|
} else if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE) {
|
||||||
else if(gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE) {
|
|
||||||
gMenuCursor = UI_MENU_GetMenuIdx(MENU_R_CTCS);
|
gMenuCursor = UI_MENU_GetMenuIdx(MENU_R_CTCS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,8 +102,7 @@ void MENU_CssScanFound(void)
|
|||||||
gUpdateDisplay = true;
|
gUpdateDisplay = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MENU_StopCssScan(void)
|
void MENU_StopCssScan(void) {
|
||||||
{
|
|
||||||
gCssBackgroundScan = false;
|
gCssBackgroundScan = false;
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
@@ -111,12 +112,10 @@ void MENU_StopCssScan(void)
|
|||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax)
|
int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax) {
|
||||||
{
|
|
||||||
*pMin = 0;
|
*pMin = 0;
|
||||||
|
|
||||||
switch (menu_id)
|
switch (menu_id) {
|
||||||
{
|
|
||||||
case MENU_SQL:
|
case MENU_SQL:
|
||||||
//*pMin = 0;
|
//*pMin = 0;
|
||||||
*pMax = 9;
|
*pMax = 9;
|
||||||
@@ -184,9 +183,9 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax)
|
|||||||
*pMax = ARRAY_SIZE(gSubMenu_ROGER) - 1;
|
*pMax = ARRAY_SIZE(gSubMenu_ROGER) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_PONMSG:
|
case MENU_FSKMOD:
|
||||||
//*pMin = 0;
|
//*pMin = 0;
|
||||||
*pMax = ARRAY_SIZE(gSubMenu_PONMSG) - 1;
|
*pMax = ARRAY_SIZE(gSubMenu_FSKMod) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_R_DCS:
|
case MENU_R_DCS:
|
||||||
@@ -253,9 +252,6 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax)
|
|||||||
case MENU_500TX:
|
case MENU_500TX:
|
||||||
#endif
|
#endif
|
||||||
case MENU_350EN:
|
case MENU_350EN:
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
case MENU_SCREN:
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
case MENU_SET_TMR:
|
case MENU_SET_TMR:
|
||||||
#endif
|
#endif
|
||||||
@@ -267,17 +263,20 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax)
|
|||||||
*pMax = ARRAY_SIZE(gModulationStr) - 1;
|
*pMax = ARRAY_SIZE(gModulationStr) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
case MENU_SCR:
|
case MENU_SCR:
|
||||||
//*pMin = 0;
|
//*pMin = 0;
|
||||||
*pMax = ARRAY_SIZE(gSubMenu_SCRAMBLER) - 1;
|
*pMax = ARRAY_SIZE(gSubMenu_SCRAMBLER) - 1;
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
|
|
||||||
case MENU_AUTOLK:
|
case MENU_AUTOLK:
|
||||||
*pMax = 40;
|
*pMax = 40;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MENU_FSKSRC:
|
||||||
|
*pMax = INT32_MAX;
|
||||||
|
*pMin = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
case MENU_TOT:
|
case MENU_TOT:
|
||||||
//*pMin = 0;
|
//*pMin = 0;
|
||||||
*pMin = 5;
|
*pMin = 5;
|
||||||
@@ -449,21 +448,17 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MENU_AcceptSetting(void)
|
void MENU_AcceptSetting(void) {
|
||||||
{
|
|
||||||
int32_t Min;
|
int32_t Min;
|
||||||
int32_t Max;
|
int32_t Max;
|
||||||
FREQ_Config_t *pConfig = &gTxVfo->freq_config_RX;
|
FREQ_Config_t *pConfig = &gTxVfo->freq_config_RX;
|
||||||
|
|
||||||
if (!MENU_GetLimits(UI_MENU_GetCurrentMenuId(), &Min, &Max))
|
if (!MENU_GetLimits(UI_MENU_GetCurrentMenuId(), &Min, &Max)) {
|
||||||
{
|
|
||||||
if (gSubMenuSelection < Min) gSubMenuSelection = Min;
|
if (gSubMenuSelection < Min) gSubMenuSelection = Min;
|
||||||
else
|
else if (gSubMenuSelection > Max) gSubMenuSelection = Max;
|
||||||
if (gSubMenuSelection > Max) gSubMenuSelection = Max;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (UI_MENU_GetCurrentMenuId())
|
switch (UI_MENU_GetCurrentMenuId()) {
|
||||||
{
|
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -474,8 +469,7 @@ void MENU_AcceptSetting(void)
|
|||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP:
|
||||||
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(gSubMenuSelection);
|
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(gSubMenuSelection);
|
||||||
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE)) {
|
||||||
{
|
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -497,12 +491,10 @@ void MENU_AcceptSetting(void)
|
|||||||
}
|
}
|
||||||
pConfig->Code = 0;
|
pConfig->Code = 0;
|
||||||
pConfig->CodeType = CODE_TYPE_OFF;
|
pConfig->CodeType = CODE_TYPE_OFF;
|
||||||
}
|
} else if (gSubMenuSelection < 105) {
|
||||||
else if (gSubMenuSelection < 105) {
|
|
||||||
pConfig->CodeType = CODE_TYPE_DIGITAL;
|
pConfig->CodeType = CODE_TYPE_DIGITAL;
|
||||||
pConfig->Code = gSubMenuSelection - 1;
|
pConfig->Code = gSubMenuSelection - 1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
pConfig->CodeType = CODE_TYPE_REVERSE_DIGITAL;
|
pConfig->CodeType = CODE_TYPE_REVERSE_DIGITAL;
|
||||||
pConfig->Code = gSubMenuSelection - 105;
|
pConfig->Code = gSubMenuSelection - 105;
|
||||||
}
|
}
|
||||||
@@ -520,8 +512,7 @@ void MENU_AcceptSetting(void)
|
|||||||
}
|
}
|
||||||
pConfig->Code = 0;
|
pConfig->Code = 0;
|
||||||
pConfig->CodeType = CODE_TYPE_OFF;
|
pConfig->CodeType = CODE_TYPE_OFF;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
pConfig->Code = gSubMenuSelection - 1;
|
pConfig->Code = gSubMenuSelection - 1;
|
||||||
pConfig->CodeType = CODE_TYPE_CONTINUOUS_TONE;
|
pConfig->CodeType = CODE_TYPE_CONTINUOUS_TONE;
|
||||||
}
|
}
|
||||||
@@ -544,18 +535,14 @@ void MENU_AcceptSetting(void)
|
|||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
case MENU_SCR:
|
case MENU_SCR:
|
||||||
gTxVfo->SCRAMBLING_TYPE = gSubMenuSelection;
|
gTxVfo->SCRAMBLING_TYPE = gSubMenuSelection;
|
||||||
#if 0
|
if (gSubMenuSelection > 0)
|
||||||
if (gSubMenuSelection > 0 && gSetting_ScrambleEnable)
|
|
||||||
BK4819_EnableScramble(gSubMenuSelection - 1);
|
BK4819_EnableScramble(gSubMenuSelection - 1);
|
||||||
else
|
else
|
||||||
BK4819_DisableScramble();
|
BK4819_DisableScramble();
|
||||||
#endif
|
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
return;
|
return;
|
||||||
#endif
|
|
||||||
|
|
||||||
case MENU_BCL:
|
case MENU_BCL:
|
||||||
gTxVfo->BUSY_CHANNEL_LOCK = gSubMenuSelection;
|
gTxVfo->BUSY_CHANNEL_LOCK = gSubMenuSelection;
|
||||||
@@ -772,8 +759,7 @@ void MENU_AcceptSetting(void)
|
|||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
case MENU_D_LIST:
|
case MENU_D_LIST:
|
||||||
gDTMF_chosen_contact = gSubMenuSelection - 1;
|
gDTMF_chosen_contact = gSubMenuSelection - 1;
|
||||||
if (gIsDtmfContactValid)
|
if (gIsDtmfContactValid) {
|
||||||
{
|
|
||||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||||
gDTMF_InputMode = true;
|
gDTMF_InputMode = true;
|
||||||
gDTMF_InputBox_Index = 3;
|
gDTMF_InputBox_Index = 3;
|
||||||
@@ -782,8 +768,12 @@ void MENU_AcceptSetting(void)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
case MENU_PONMSG:
|
case MENU_FSKMOD:
|
||||||
gEeprom.POWER_ON_DISPLAY_MODE = gSubMenuSelection;
|
gEeprom.FSKMode = gSubMenuSelection;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MENU_FSKSRC:
|
||||||
|
gEeprom.FSKSRCAddress = gSubMenuSelection;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ROGER:
|
case MENU_ROGER:
|
||||||
@@ -829,18 +819,6 @@ void MENU_AcceptSetting(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_F_LOCK: {
|
case MENU_F_LOCK: {
|
||||||
if(gSubMenuSelection == F_LOCK_NONE) { // select 10 times to enable
|
|
||||||
gUnlockAllTxConfCnt++;
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
if(gUnlockAllTxConfCnt < 3)
|
|
||||||
#else
|
|
||||||
if(gUnlockAllTxConfCnt < 10)
|
|
||||||
#endif
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
gUnlockAllTxConfCnt = 0;
|
|
||||||
|
|
||||||
gSetting_F_LOCK = gSubMenuSelection;
|
gSetting_F_LOCK = gSubMenuSelection;
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
@@ -864,12 +842,10 @@ void MENU_AcceptSetting(void)
|
|||||||
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
||||||
gFlagResetVfos = true;
|
gFlagResetVfos = true;
|
||||||
break;
|
break;
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
// case MENU_SCREN:
|
||||||
case MENU_SCREN:
|
// gSetting_ScrambleEnable = gSubMenuSelection;
|
||||||
gSetting_ScrambleEnable = gSubMenuSelection;
|
// gFlagReconfigureVfos = true;
|
||||||
gFlagReconfigureVfos = true;
|
// break;
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
case MENU_F_CALI:
|
case MENU_F_CALI:
|
||||||
@@ -877,8 +853,7 @@ void MENU_AcceptSetting(void)
|
|||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_BATCAL:
|
case MENU_BATCAL: { // voltages are averages between discharge curves of 1600 and 2200 mAh
|
||||||
{ // voltages are averages between discharge curves of 1600 and 2200 mAh
|
|
||||||
// gBatteryCalibration[0] = (520ul * gSubMenuSelection) / 760; // 5.20V empty, blinking above this value, reduced functionality below
|
// gBatteryCalibration[0] = (520ul * gSubMenuSelection) / 760; // 5.20V empty, blinking above this value, reduced functionality below
|
||||||
// gBatteryCalibration[1] = (689ul * gSubMenuSelection) / 760; // 6.89V, ~5%, 1 bars above this value
|
// gBatteryCalibration[1] = (689ul * gSubMenuSelection) / 760; // 6.89V, ~5%, 1 bars above this value
|
||||||
// gBatteryCalibration[2] = (724ul * gSubMenuSelection) / 760; // 7.24V, ~17%, 2 bars above this value
|
// gBatteryCalibration[2] = (724ul * gSubMenuSelection) / 760; // 7.24V, ~17%, 2 bars above this value
|
||||||
@@ -897,8 +872,7 @@ void MENU_AcceptSetting(void)
|
|||||||
case MENU_F1LONG:
|
case MENU_F1LONG:
|
||||||
case MENU_F2SHRT:
|
case MENU_F2SHRT:
|
||||||
case MENU_F2LONG:
|
case MENU_F2LONG:
|
||||||
case MENU_MLONG:
|
case MENU_MLONG: {
|
||||||
{
|
|
||||||
uint8_t *fun[] = {
|
uint8_t *fun[] = {
|
||||||
&gEeprom.KEY_1_SHORT_PRESS_ACTION,
|
&gEeprom.KEY_1_SHORT_PRESS_ACTION,
|
||||||
&gEeprom.KEY_1_LONG_PRESS_ACTION,
|
&gEeprom.KEY_1_LONG_PRESS_ACTION,
|
||||||
@@ -977,25 +951,20 @@ void MENU_AcceptSetting(void)
|
|||||||
gRequestSaveSettings = true;
|
gRequestSaveSettings = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MENU_ClampSelection(int8_t Direction)
|
static void MENU_ClampSelection(int8_t Direction) {
|
||||||
{
|
|
||||||
int32_t Min;
|
int32_t Min;
|
||||||
int32_t Max;
|
int32_t Max;
|
||||||
|
|
||||||
if (!MENU_GetLimits(UI_MENU_GetCurrentMenuId(), &Min, &Max))
|
if (!MENU_GetLimits(UI_MENU_GetCurrentMenuId(), &Min, &Max)) {
|
||||||
{
|
|
||||||
int32_t Selection = gSubMenuSelection;
|
int32_t Selection = gSubMenuSelection;
|
||||||
if (Selection < Min) Selection = Min;
|
if (Selection < Min) Selection = Min;
|
||||||
else
|
else if (Selection > Max) Selection = Max;
|
||||||
if (Selection > Max) Selection = Max;
|
|
||||||
gSubMenuSelection = NUMBER_AddWithWraparound(Selection, Direction, Min, Max);
|
gSubMenuSelection = NUMBER_AddWithWraparound(Selection, Direction, Min, Max);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MENU_ShowCurrentSetting(void)
|
void MENU_ShowCurrentSetting(void) {
|
||||||
{
|
switch (UI_MENU_GetCurrentMenuId()) {
|
||||||
switch (UI_MENU_GetCurrentMenuId())
|
|
||||||
{
|
|
||||||
case MENU_SQL:
|
case MENU_SQL:
|
||||||
gSubMenuSelection = gEeprom.SQUELCH_LEVEL;
|
gSubMenuSelection = gEeprom.SQUELCH_LEVEL;
|
||||||
break;
|
break;
|
||||||
@@ -1013,8 +982,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_R_DCS:
|
case MENU_R_DCS:
|
||||||
case MENU_R_CTCS:
|
case MENU_R_CTCS: {
|
||||||
{
|
|
||||||
DCS_CodeType_t type = gTxVfo->freq_config_RX.CodeType;
|
DCS_CodeType_t type = gTxVfo->freq_config_RX.CodeType;
|
||||||
uint8_t code = gTxVfo->freq_config_RX.Code;
|
uint8_t code = gTxVfo->freq_config_RX.Code;
|
||||||
int menuid = UI_MENU_GetCurrentMenuId();
|
int menuid = UI_MENU_GetCurrentMenuId();
|
||||||
@@ -1045,8 +1013,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
case MENU_T_DCS:
|
case MENU_T_DCS:
|
||||||
switch (gTxVfo->freq_config_TX.CodeType)
|
switch (gTxVfo->freq_config_TX.CodeType) {
|
||||||
{
|
|
||||||
case CODE_TYPE_DIGITAL:
|
case CODE_TYPE_DIGITAL:
|
||||||
gSubMenuSelection = gTxVfo->freq_config_TX.Code + 1;
|
gSubMenuSelection = gTxVfo->freq_config_TX.Code + 1;
|
||||||
break;
|
break;
|
||||||
@@ -1060,7 +1027,8 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_T_CTCS:
|
case MENU_T_CTCS:
|
||||||
gSubMenuSelection = (gTxVfo->freq_config_TX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->freq_config_TX.Code + 1 : 0;
|
gSubMenuSelection = (gTxVfo->freq_config_TX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ?
|
||||||
|
gTxVfo->freq_config_TX.Code + 1 : 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_SFT_D:
|
case MENU_SFT_D:
|
||||||
@@ -1075,11 +1043,9 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
gSubMenuSelection = gTxVfo->CHANNEL_BANDWIDTH;
|
gSubMenuSelection = gTxVfo->CHANNEL_BANDWIDTH;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
case MENU_SCR:
|
case MENU_SCR:
|
||||||
gSubMenuSelection = gTxVfo->SCRAMBLING_TYPE;
|
gSubMenuSelection = gTxVfo->SCRAMBLING_TYPE;
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
|
|
||||||
case MENU_BCL:
|
case MENU_BCL:
|
||||||
gSubMenuSelection = gTxVfo->BUSY_CHANNEL_LOCK;
|
gSubMenuSelection = gTxVfo->BUSY_CHANNEL_LOCK;
|
||||||
@@ -1109,12 +1075,9 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
|
|
||||||
case MENU_ABR:
|
case MENU_ABR:
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if(gBackLight)
|
if (gBackLight) {
|
||||||
{
|
|
||||||
gSubMenuSelection = gBacklightTimeOriginal;
|
gSubMenuSelection = gBacklightTimeOriginal;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
gSubMenuSelection = gEeprom.BACKLIGHT_TIME;
|
gSubMenuSelection = gEeprom.BACKLIGHT_TIME;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -1135,7 +1098,8 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_TDR:
|
case MENU_TDR:
|
||||||
gSubMenuSelection = (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2;
|
gSubMenuSelection =
|
||||||
|
(gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_BEEP:
|
case MENU_BEEP:
|
||||||
@@ -1256,8 +1220,12 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
gSubMenuSelection = gSetting_live_DTMF_decoder;
|
gSubMenuSelection = gSetting_live_DTMF_decoder;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_PONMSG:
|
case MENU_FSKMOD:
|
||||||
gSubMenuSelection = gEeprom.POWER_ON_DISPLAY_MODE;
|
gSubMenuSelection = gEeprom.FSKMode;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MENU_FSKSRC:
|
||||||
|
gSubMenuSelection = (int32_t) gEeprom.FSKSRCAddress;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ROGER:
|
case MENU_ROGER:
|
||||||
@@ -1309,15 +1277,6 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
gSubMenuSelection = gSetting_500TX;
|
gSubMenuSelection = gSetting_500TX;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#endif
|
|
||||||
case MENU_350EN:
|
|
||||||
gSubMenuSelection = gSetting_350EN;
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
case MENU_SCREN:
|
|
||||||
gSubMenuSelection = gSetting_ScrambleEnable;
|
|
||||||
break;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
@@ -1338,8 +1297,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
case MENU_F1LONG:
|
case MENU_F1LONG:
|
||||||
case MENU_F2SHRT:
|
case MENU_F2SHRT:
|
||||||
case MENU_F2LONG:
|
case MENU_F2LONG:
|
||||||
case MENU_MLONG:
|
case MENU_MLONG: {
|
||||||
{
|
|
||||||
uint8_t *fun[] = {
|
uint8_t *fun[] = {
|
||||||
&gEeprom.KEY_1_SHORT_PRESS_ACTION,
|
&gEeprom.KEY_1_SHORT_PRESS_ACTION,
|
||||||
&gEeprom.KEY_1_LONG_PRESS_ACTION,
|
&gEeprom.KEY_1_LONG_PRESS_ACTION,
|
||||||
@@ -1422,8 +1380,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
uint8_t Offset;
|
uint8_t Offset;
|
||||||
int32_t Min;
|
int32_t Min;
|
||||||
int32_t Max;
|
int32_t Max;
|
||||||
@@ -1434,17 +1391,13 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && edit_index >= 0)
|
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && edit_index >= 0) { // currently editing the channel name
|
||||||
{ // currently editing the channel name
|
|
||||||
|
|
||||||
if (edit_index < 10)
|
if (edit_index < 10) {
|
||||||
{
|
if (Key <= KEY_9) {
|
||||||
if (Key <= KEY_9)
|
|
||||||
{
|
|
||||||
edit[edit_index] = '0' + Key - KEY_0;
|
edit[edit_index] = '0' + Key - KEY_0;
|
||||||
|
|
||||||
if (++edit_index >= 10)
|
if (++edit_index >= 10) { // exit edit
|
||||||
{ // exit edit
|
|
||||||
gFlagAcceptSetting = false;
|
gFlagAcceptSetting = false;
|
||||||
gAskForConfirmation = 1;
|
gAskForConfirmation = 1;
|
||||||
}
|
}
|
||||||
@@ -1460,17 +1413,14 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
gRequestDisplayScreen = DISPLAY_MENU;
|
gRequestDisplayScreen = DISPLAY_MENU;
|
||||||
|
|
||||||
if (!gIsInSubMenu)
|
if (!gIsInSubMenu) {
|
||||||
{
|
switch (gInputBoxIndex) {
|
||||||
switch (gInputBoxIndex)
|
|
||||||
{
|
|
||||||
case 2:
|
case 2:
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
|
|
||||||
Value = (gInputBox[0] * 10) + gInputBox[1];
|
Value = (gInputBox[0] * 10) + gInputBox[1];
|
||||||
|
|
||||||
if (Value > 0 && Value <= gMenuListCount)
|
if (Value > 0 && Value <= gMenuListCount) {
|
||||||
{
|
|
||||||
gMenuCursor = Value - 1;
|
gMenuCursor = Value - 1;
|
||||||
gFlagRefreshSetting = true;
|
gFlagRefreshSetting = true;
|
||||||
return;
|
return;
|
||||||
@@ -1484,8 +1434,7 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
[[fallthrough]];
|
[[fallthrough]];
|
||||||
case 1:
|
case 1:
|
||||||
Value = gInputBox[0];
|
Value = gInputBox[0];
|
||||||
if (Value > 0 && Value <= gMenuListCount)
|
if (Value > 0 && Value <= gMenuListCount) {
|
||||||
{
|
|
||||||
gMenuCursor = Value - 1;
|
gMenuCursor = Value - 1;
|
||||||
gFlagRefreshSetting = true;
|
gFlagRefreshSetting = true;
|
||||||
return;
|
return;
|
||||||
@@ -1499,12 +1448,10 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_OFFSET)
|
if (UI_MENU_GetCurrentMenuId() == MENU_OFFSET) {
|
||||||
{
|
|
||||||
uint32_t Frequency;
|
uint32_t Frequency;
|
||||||
|
|
||||||
if (gInputBoxIndex < 6)
|
if (gInputBoxIndex < 6) { // invalid frequency
|
||||||
{ // invalid frequency
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||||
#endif
|
#endif
|
||||||
@@ -1525,11 +1472,9 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_CH ||
|
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_CH ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_DEL_CH ||
|
UI_MENU_GetCurrentMenuId() == MENU_DEL_CH ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_1_CALL ||
|
UI_MENU_GetCurrentMenuId() == MENU_1_CALL ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME)
|
UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME) { // enter 3-digit channel number
|
||||||
{ // enter 3-digit channel number
|
|
||||||
|
|
||||||
if (gInputBoxIndex < 3)
|
if (gInputBoxIndex < 3) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||||
#endif
|
#endif
|
||||||
@@ -1541,8 +1486,7 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
Value = ((gInputBox[0] * 100) + (gInputBox[1] * 10) + gInputBox[2]) - 1;
|
Value = ((gInputBox[0] * 100) + (gInputBox[1] * 10) + gInputBox[2]) - 1;
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(Value))
|
if (IS_MR_CHANNEL(Value)) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||||
#endif
|
#endif
|
||||||
@@ -1554,8 +1498,7 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MENU_GetLimits(UI_MENU_GetCurrentMenuId(), &Min, &Max))
|
if (MENU_GetLimits(UI_MENU_GetCurrentMenuId(), &Min, &Max)) {
|
||||||
{
|
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
return;
|
return;
|
||||||
@@ -1585,8 +1528,7 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
if (Offset == gInputBoxIndex)
|
if (Offset == gInputBoxIndex)
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
|
|
||||||
if (Value <= Max)
|
if (Value <= Max) {
|
||||||
{
|
|
||||||
gSubMenuSelection = Value;
|
gSubMenuSelection = Value;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1594,23 +1536,19 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld || !bKeyPressed)
|
if (bKeyHeld || !bKeyPressed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
if (!gCssBackgroundScan)
|
if (!gCssBackgroundScan) {
|
||||||
{
|
|
||||||
/* Backlight related menus set full brightness. Set it back to the configured value,
|
/* Backlight related menus set full brightness. Set it back to the configured value,
|
||||||
just in case we are exiting from one of them. */
|
just in case we are exiting from one of them. */
|
||||||
BACKLIGHT_TurnOn();
|
BACKLIGHT_TurnOn();
|
||||||
|
|
||||||
if (gIsInSubMenu)
|
if (gIsInSubMenu) {
|
||||||
{
|
if (gInputBoxIndex == 0 || UI_MENU_GetCurrentMenuId() != MENU_OFFSET) {
|
||||||
if (gInputBoxIndex == 0 || UI_MENU_GetCurrentMenuId() != MENU_OFFSET)
|
|
||||||
{
|
|
||||||
gAskForConfirmation = 0;
|
gAskForConfirmation = 0;
|
||||||
gIsInSubMenu = false;
|
gIsInSubMenu = false;
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
@@ -1619,8 +1557,7 @@ static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
gAnotherVoiceID = VOICE_ID_CANCEL;
|
gAnotherVoiceID = VOICE_ID_CANCEL;
|
||||||
#endif
|
#endif
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
gInputBox[--gInputBoxIndex] = 10;
|
gInputBox[--gInputBoxIndex] = 10;
|
||||||
|
|
||||||
// ***********************
|
// ***********************
|
||||||
@@ -1639,9 +1576,7 @@ static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
{
|
{
|
||||||
BACKLIGHT_TurnOff(); // turn the backlight OFF
|
BACKLIGHT_TurnOff(); // turn the backlight OFF
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
MENU_StopCssScan();
|
MENU_StopCssScan();
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
@@ -1654,16 +1589,14 @@ static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
|
|||||||
gPttWasReleased = true;
|
gPttWasReleased = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld || !bKeyPressed)
|
if (bKeyHeld || !bKeyPressed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
gRequestDisplayScreen = DISPLAY_MENU;
|
gRequestDisplayScreen = DISPLAY_MENU;
|
||||||
|
|
||||||
if (!gIsInSubMenu)
|
if (!gIsInSubMenu) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
if (UI_MENU_GetCurrentMenuId() != MENU_SCR)
|
if (UI_MENU_GetCurrentMenuId() != MENU_SCR)
|
||||||
gAnotherVoiceID = MenuList[gMenuCursor].voice_id;
|
gAnotherVoiceID = MenuList[gMenuCursor].voice_id;
|
||||||
@@ -1693,10 +1626,8 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME)
|
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME) {
|
||||||
{
|
if (edit_index < 0) { // enter channel name edit mode
|
||||||
if (edit_index < 0)
|
|
||||||
{ // enter channel name edit mode
|
|
||||||
if (!RADIO_CheckValidChannel(gSubMenuSelection, false, 0))
|
if (!RADIO_CheckValidChannel(gSubMenuSelection, false, 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -1713,10 +1644,7 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
memcpy(edit_original, edit, sizeof(edit_original));
|
memcpy(edit_original, edit, sizeof(edit_original));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
} else if (edit_index >= 0 && edit_index < 10) { // editing the channel name characters
|
||||||
else
|
|
||||||
if (edit_index >= 0 && edit_index < 10)
|
|
||||||
{ // editing the channel name characters
|
|
||||||
|
|
||||||
if (++edit_index < 10)
|
if (++edit_index < 10)
|
||||||
return; // next char
|
return; // next char
|
||||||
@@ -1733,15 +1661,12 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
|
|
||||||
// exiting the sub menu
|
// exiting the sub menu
|
||||||
|
|
||||||
if (gIsInSubMenu)
|
if (gIsInSubMenu) {
|
||||||
{
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_RESET ||
|
if (UI_MENU_GetCurrentMenuId() == MENU_RESET ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_MEM_CH ||
|
UI_MENU_GetCurrentMenuId() == MENU_MEM_CH ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_DEL_CH ||
|
UI_MENU_GetCurrentMenuId() == MENU_DEL_CH ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME)
|
UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME) {
|
||||||
{
|
switch (gAskForConfirmation) {
|
||||||
switch (gAskForConfirmation)
|
|
||||||
{
|
|
||||||
case 0:
|
case 0:
|
||||||
gAskForConfirmation = 1;
|
gAskForConfirmation = 1;
|
||||||
break;
|
break;
|
||||||
@@ -1751,8 +1676,7 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
|
|
||||||
UI_DisplayMenu();
|
UI_DisplayMenu();
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_RESET)
|
if (UI_MENU_GetCurrentMenuId() == MENU_RESET) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
AUDIO_SetVoiceID(0, VOICE_ID_CONFIRM);
|
AUDIO_SetVoiceID(0, VOICE_ID_CONFIRM);
|
||||||
AUDIO_PlaySingleVoice(true);
|
AUDIO_PlaySingleVoice(true);
|
||||||
@@ -1771,9 +1695,7 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
gIsInSubMenu = false;
|
gIsInSubMenu = false;
|
||||||
gAskForConfirmation = 0;
|
gAskForConfirmation = 0;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
gFlagAcceptSetting = true;
|
gFlagAcceptSetting = true;
|
||||||
gIsInSubMenu = false;
|
gIsInSubMenu = false;
|
||||||
}
|
}
|
||||||
@@ -1791,22 +1713,18 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MENU_Key_STAR(const bool bKeyPressed, const bool bKeyHeld)
|
static void MENU_Key_STAR(const bool bKeyPressed, const bool bKeyHeld) {
|
||||||
{
|
|
||||||
if (bKeyHeld || !bKeyPressed)
|
if (bKeyHeld || !bKeyPressed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && edit_index >= 0)
|
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && edit_index >= 0) { // currently editing the channel name
|
||||||
{ // currently editing the channel name
|
|
||||||
|
|
||||||
if (edit_index < 10)
|
if (edit_index < 10) {
|
||||||
{
|
|
||||||
edit[edit_index] = '-';
|
edit[edit_index] = '-';
|
||||||
|
|
||||||
if (++edit_index >= 10)
|
if (++edit_index >= 10) { // exit edit
|
||||||
{ // exit edit
|
|
||||||
gFlagAcceptSetting = false;
|
gFlagAcceptSetting = false;
|
||||||
gAskForConfirmation = 1;
|
gAskForConfirmation = 1;
|
||||||
}
|
}
|
||||||
@@ -1825,8 +1743,8 @@ static void MENU_Key_STAR(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
if (gRxVfo->Modulation == MODULATION_FM)
|
if (gRxVfo->Modulation == MODULATION_FM)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if ((UI_MENU_GetCurrentMenuId() == MENU_R_CTCS || UI_MENU_GetCurrentMenuId() == MENU_R_DCS) && gIsInSubMenu)
|
if ((UI_MENU_GetCurrentMenuId() == MENU_R_CTCS || UI_MENU_GetCurrentMenuId() == MENU_R_DCS) &&
|
||||||
{ // scan CTCSS or DCS to find the tone/code of the incoming signal
|
gIsInSubMenu) { // scan CTCSS or DCS to find the tone/code of the incoming signal
|
||||||
if (!SCANNER_IsScanning())
|
if (!SCANNER_IsScanning())
|
||||||
MENU_StartCssScan();
|
MENU_StartCssScan();
|
||||||
else
|
else
|
||||||
@@ -1840,23 +1758,18 @@ static void MENU_Key_STAR(const bool bKeyPressed, const bool bKeyHeld)
|
|||||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MENU_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
static void MENU_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction) {
|
||||||
{
|
|
||||||
uint8_t VFO;
|
uint8_t VFO;
|
||||||
uint8_t Channel;
|
uint8_t Channel;
|
||||||
bool bCheckScanList;
|
bool bCheckScanList;
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && gIsInSubMenu && edit_index >= 0)
|
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && gIsInSubMenu && edit_index >= 0) { // change the character
|
||||||
{ // change the character
|
if (bKeyPressed && edit_index < 10 && Direction != 0) {
|
||||||
if (bKeyPressed && edit_index < 10 && Direction != 0)
|
|
||||||
{
|
|
||||||
const char unwanted[] = "$%&!\"':;?^`|{}";
|
const char unwanted[] = "$%&!\"':;?^`|{}";
|
||||||
char c = edit[edit_index] + Direction;
|
char c = edit[edit_index] + Direction;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
while (i < sizeof(unwanted) && c >= 32 && c <= 126)
|
while (i < sizeof(unwanted) && c >= 32 && c <= 126) {
|
||||||
{
|
if (c == unwanted[i++]) { // choose next character
|
||||||
if (c == unwanted[i++])
|
|
||||||
{ // choose next character
|
|
||||||
c += Direction;
|
c += Direction;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
@@ -1868,25 +1781,21 @@ static void MENU_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bKeyHeld)
|
if (!bKeyHeld) {
|
||||||
{
|
|
||||||
if (!bKeyPressed)
|
if (!bKeyPressed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
}
|
} else if (!bKeyPressed)
|
||||||
else
|
|
||||||
if (!bKeyPressed)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (SCANNER_IsScanning()) {
|
if (SCANNER_IsScanning()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gIsInSubMenu)
|
if (!gIsInSubMenu) {
|
||||||
{
|
|
||||||
gMenuCursor = NUMBER_AddWithWraparound(gMenuCursor, -Direction, 0, gMenuListCount - 1);
|
gMenuCursor = NUMBER_AddWithWraparound(gMenuCursor, -Direction, 0, gMenuListCount - 1);
|
||||||
|
|
||||||
gFlagRefreshSetting = true;
|
gFlagRefreshSetting = true;
|
||||||
@@ -1904,15 +1813,12 @@ static void MENU_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_OFFSET)
|
if (UI_MENU_GetCurrentMenuId() == MENU_OFFSET) {
|
||||||
{
|
|
||||||
int32_t Offset = (Direction * gTxVfo->StepFrequency) + gSubMenuSelection;
|
int32_t Offset = (Direction * gTxVfo->StepFrequency) + gSubMenuSelection;
|
||||||
if (Offset < 99999990)
|
if (Offset < 99999990) {
|
||||||
{
|
|
||||||
if (Offset < 0)
|
if (Offset < 0)
|
||||||
Offset = 99999990;
|
Offset = 99999990;
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
Offset = 0;
|
Offset = 0;
|
||||||
|
|
||||||
gSubMenuSelection = FREQUENCY_RoundToStep(Offset, gTxVfo->StepFrequency);
|
gSubMenuSelection = FREQUENCY_RoundToStep(Offset, gTxVfo->StepFrequency);
|
||||||
@@ -1922,8 +1828,7 @@ static void MENU_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
|||||||
|
|
||||||
VFO = 0;
|
VFO = 0;
|
||||||
|
|
||||||
switch (UI_MENU_GetCurrentMenuId())
|
switch (UI_MENU_GetCurrentMenuId()) {
|
||||||
{
|
|
||||||
case MENU_DEL_CH:
|
case MENU_DEL_CH:
|
||||||
case MENU_1_CALL:
|
case MENU_1_CALL:
|
||||||
case MENU_MEM_NAME:
|
case MENU_MEM_NAME:
|
||||||
@@ -1956,10 +1861,8 @@ static void MENU_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction)
|
|||||||
gRequestDisplayScreen = DISPLAY_MENU;
|
gRequestDisplayScreen = DISPLAY_MENU;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MENU_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
void MENU_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||||
{
|
switch (Key) {
|
||||||
switch (Key)
|
|
||||||
{
|
|
||||||
case KEY_0:
|
case KEY_0:
|
||||||
case KEY_1:
|
case KEY_1:
|
||||||
case KEY_2:
|
case KEY_2:
|
||||||
@@ -1988,16 +1891,13 @@ void MENU_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
MENU_Key_STAR(bKeyPressed, bKeyHeld);
|
MENU_Key_STAR(bKeyPressed, bKeyHeld);
|
||||||
break;
|
break;
|
||||||
case KEY_F:
|
case KEY_F:
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME && edit_index >= 0)
|
if (UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME &&
|
||||||
{ // currently editing the channel name
|
edit_index >= 0) { // currently editing the channel name
|
||||||
if (!bKeyHeld && bKeyPressed)
|
if (!bKeyHeld && bKeyPressed) {
|
||||||
{
|
|
||||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
if (edit_index < 10)
|
if (edit_index < 10) {
|
||||||
{
|
|
||||||
edit[edit_index] = ' ';
|
edit[edit_index] = ' ';
|
||||||
if (++edit_index >= 10)
|
if (++edit_index >= 10) { // exit edit
|
||||||
{ // exit edit
|
|
||||||
gFlagAcceptSetting = false;
|
gFlagAcceptSetting = false;
|
||||||
gAskForConfirmation = 1;
|
gAskForConfirmation = 1;
|
||||||
}
|
}
|
||||||
@@ -2018,18 +1918,14 @@ void MENU_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gScreenToDisplay == DISPLAY_MENU)
|
if (gScreenToDisplay == DISPLAY_MENU) {
|
||||||
{
|
if (
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_VOL ||
|
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_F_CALI ||
|
UI_MENU_GetCurrentMenuId() == MENU_F_CALI ||
|
||||||
#endif
|
#endif
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_BATCAL)
|
UI_MENU_GetCurrentMenuId() == MENU_BATCAL) {
|
||||||
{
|
|
||||||
gMenuCountdown = menu_timeout_long_500ms;
|
gMenuCountdown = menu_timeout_long_500ms;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
gMenuCountdown = menu_timeout_500ms;
|
gMenuCountdown = menu_timeout_500ms;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
668
app/spectrum.c
668
app/spectrum.c
File diff suppressed because it is too large
Load Diff
@@ -68,12 +68,6 @@ void BACKLIGHT_InitHardware()
|
|||||||
|
|
||||||
static void BACKLIGHT_Sound(void)
|
static void BACKLIGHT_Sound(void)
|
||||||
{
|
{
|
||||||
if (gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_SOUND || gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_ALL)
|
|
||||||
{
|
|
||||||
AUDIO_PlayBeep(BEEP_880HZ_60MS_DOUBLE_BEEP);
|
|
||||||
AUDIO_PlayBeep(BEEP_880HZ_60MS_DOUBLE_BEEP);
|
|
||||||
}
|
|
||||||
|
|
||||||
gK5startup = false;
|
gK5startup = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -74,6 +74,7 @@ enum BK4819_REGISTER_t {
|
|||||||
BK4819_REG_3D = 0x3DU,
|
BK4819_REG_3D = 0x3DU,
|
||||||
BK4819_REG_3E = 0x3EU,
|
BK4819_REG_3E = 0x3EU,
|
||||||
BK4819_REG_3F = 0x3FU,
|
BK4819_REG_3F = 0x3FU,
|
||||||
|
BK4819_REG_40 = 0x40U,
|
||||||
BK4819_REG_43 = 0x43U,
|
BK4819_REG_43 = 0x43U,
|
||||||
BK4819_REG_46 = 0x46U,
|
BK4819_REG_46 = 0x46U,
|
||||||
BK4819_REG_47 = 0x47U,
|
BK4819_REG_47 = 0x47U,
|
||||||
@@ -96,6 +97,7 @@ enum BK4819_REGISTER_t {
|
|||||||
BK4819_REG_5A = 0x5AU,
|
BK4819_REG_5A = 0x5AU,
|
||||||
BK4819_REG_5B = 0x5BU,
|
BK4819_REG_5B = 0x5BU,
|
||||||
BK4819_REG_5C = 0x5CU,
|
BK4819_REG_5C = 0x5CU,
|
||||||
|
BK4819_REG_5E = 0x5EU,
|
||||||
BK4819_REG_5D = 0x5DU,
|
BK4819_REG_5D = 0x5DU,
|
||||||
BK4819_REG_5F = 0x5FU,
|
BK4819_REG_5F = 0x5FU,
|
||||||
BK4819_REG_63 = 0x63U,
|
BK4819_REG_63 = 0x63U,
|
||||||
|
@@ -48,6 +48,21 @@ __inline uint16_t scale_freq(const uint16_t freq)
|
|||||||
return (((uint32_t)freq * 1353245u) + (1u << 16)) >> 17; // with rounding
|
return (((uint32_t)freq * 1353245u) + (1u << 16)) >> 17; // with rounding
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BK4819_FskEnableTx(void){
|
||||||
|
const uint16_t fsk_reg59 = BK4819_ReadRegister(BK4819_REG_59);
|
||||||
|
BK4819_WriteRegister(BK4819_REG_59, (1u << 11) | fsk_reg59);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BK4819_FskClearFifo(void){
|
||||||
|
const uint16_t fsk_reg59 = BK4819_ReadRegister(BK4819_REG_59);
|
||||||
|
BK4819_WriteRegister(BK4819_REG_59, (1u << 15) | (1u << 14) | fsk_reg59);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BK4819_FskEnableRx(void){
|
||||||
|
const uint16_t fsk_reg59 = BK4819_ReadRegister(BK4819_REG_59);
|
||||||
|
BK4819_WriteRegister(BK4819_REG_59, (1u << 12) | fsk_reg59);
|
||||||
|
}
|
||||||
|
|
||||||
void BK4819_Init(void)
|
void BK4819_Init(void)
|
||||||
{
|
{
|
||||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN);
|
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN);
|
||||||
|
@@ -77,6 +77,11 @@ void BK4819_InitAGC(bool amModulation);
|
|||||||
|
|
||||||
void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet);
|
void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet);
|
||||||
|
|
||||||
|
void BK4819_ResetFSK(void);
|
||||||
|
void BK4819_FskClearFifo(void);
|
||||||
|
void BK4819_FskEnableRx(void);
|
||||||
|
void BK4819_FskEnableTx(void);
|
||||||
|
|
||||||
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord);
|
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord);
|
||||||
void BK4819_SetCTCSSFrequency(uint32_t BaudRate);
|
void BK4819_SetCTCSSFrequency(uint32_t BaudRate);
|
||||||
void BK4819_SetTailDetection(const uint32_t freq_10Hz);
|
void BK4819_SetTailDetection(const uint32_t freq_10Hz);
|
||||||
|
@@ -26,6 +26,8 @@ KEY_Code_t gKeyReading0 = KEY_INVALID;
|
|||||||
KEY_Code_t gKeyReading1 = KEY_INVALID;
|
KEY_Code_t gKeyReading1 = KEY_INVALID;
|
||||||
uint16_t gDebounceCounter = 0;
|
uint16_t gDebounceCounter = 0;
|
||||||
bool gWasFKeyPressed = false;
|
bool gWasFKeyPressed = false;
|
||||||
|
uint8_t prevLetter = 0;
|
||||||
|
KEY_Code_t prevKey = KEY_INVALID;
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
|
|
||||||
|
@@ -49,6 +49,8 @@ extern KEY_Code_t gKeyReading0;
|
|||||||
extern KEY_Code_t gKeyReading1;
|
extern KEY_Code_t gKeyReading1;
|
||||||
extern uint16_t gDebounceCounter;
|
extern uint16_t gDebounceCounter;
|
||||||
extern bool gWasFKeyPressed;
|
extern bool gWasFKeyPressed;
|
||||||
|
extern uint8_t prevLetter;
|
||||||
|
extern KEY_Code_t prevKey;
|
||||||
|
|
||||||
KEY_Code_t KEYBOARD_Poll(void);
|
KEY_Code_t KEYBOARD_Poll(void);
|
||||||
|
|
||||||
|
@@ -4084,9 +4084,9 @@ called in the following order:
|
|||||||
a=>b [label="GetVersion ()", textcolor="gray", linecolor="gray"];
|
a=>b [label="GetVersion ()", textcolor="gray", linecolor="gray"];
|
||||||
--- [label="Obtain driver features"];
|
--- [label="Obtain driver features"];
|
||||||
a=>b [label="GetCapabilities (...)", textcolor="gray", linecolor="gray"];
|
a=>b [label="GetCapabilities (...)", textcolor="gray", linecolor="gray"];
|
||||||
--- [label="Setup software resources"];
|
--- [label="Sup software resources"];
|
||||||
a=>b [label="Initialize (...)", textcolor="red", linecolor="red"];
|
a=>b [label="Initialize (...)", textcolor="red", linecolor="red"];
|
||||||
--- [label="Setup the peripheral"];
|
--- [label="Sup the peripheral"];
|
||||||
a=>b [label="PowerControl (ARM_POWER_FULL)", textcolor="red", linecolor="red"];
|
a=>b [label="PowerControl (ARM_POWER_FULL)", textcolor="red", linecolor="red"];
|
||||||
--- [label="Operate with the peripheral"];
|
--- [label="Operate with the peripheral"];
|
||||||
a=>b [label="Data Transfer Functions"];
|
a=>b [label="Data Transfer Functions"];
|
||||||
|
420
font.c
420
font.c
@@ -18,202 +18,202 @@
|
|||||||
|
|
||||||
// removed last and middle column which was all 0x00
|
// removed last and middle column which was all 0x00
|
||||||
// also the space char is not needed
|
// also the space char is not needed
|
||||||
const uint8_t gFontBig[95 - 1][16 - 2] =
|
//const uint8_t gFontBig[95 - 1][16 - 2] =
|
||||||
{
|
//{
|
||||||
#if 0
|
//#if 0
|
||||||
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // ' '
|
//// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // ' '
|
||||||
{0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00}, // , 0x00}, // '!'
|
// {0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00}, // , 0x00}, // '!'
|
||||||
{0x00, 0x1E, 0x3E, 0x00, 0x00, 0x3E, 0x1E, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '"'
|
// {0x00, 0x1E, 0x3E, 0x00, 0x00, 0x3E, 0x1E, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '"'
|
||||||
{0x40, 0xF0, 0xF0, 0x40, 0xF0, 0xF0, 0x40, /*0x00,*/ 0x04, 0x1F, 0x1F, 0x04, 0x1F, 0x1F, 0x04}, // , 0x00}, // '#'
|
// {0x40, 0xF0, 0xF0, 0x40, 0xF0, 0xF0, 0x40, /*0x00,*/ 0x04, 0x1F, 0x1F, 0x04, 0x1F, 0x1F, 0x04}, // , 0x00}, // '#'
|
||||||
{0x70, 0xF8, 0x88, 0x8F, 0x8F, 0x98, 0x30, /*0x00,*/ 0x06, 0x0C, 0x08, 0x38, 0x38, 0x0F, 0x07}, // , 0x00}, // '$'
|
// {0x70, 0xF8, 0x88, 0x8F, 0x8F, 0x98, 0x30, /*0x00,*/ 0x06, 0x0C, 0x08, 0x38, 0x38, 0x0F, 0x07}, // , 0x00}, // '$'
|
||||||
{0x60, 0x60, 0x00, 0x00, 0x80, 0xC0, 0x60, /*0x00,*/ 0x18, 0x0C, 0x06, 0x03, 0x01, 0x18, 0x18}, // , 0x00}, // '%'
|
// {0x60, 0x60, 0x00, 0x00, 0x80, 0xC0, 0x60, /*0x00,*/ 0x18, 0x0C, 0x06, 0x03, 0x01, 0x18, 0x18}, // , 0x00}, // '%'
|
||||||
{0x00, 0xB0, 0xF8, 0xC8, 0x78, 0xB0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x11, 0x0F, 0x1F, 0x10}, // , 0x00}, // '&'
|
// {0x00, 0xB0, 0xF8, 0xC8, 0x78, 0xB0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x11, 0x0F, 0x1F, 0x10}, // , 0x00}, // '&'
|
||||||
{0x00, 0x20, 0x3E, 0x1E, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '''
|
// {0x00, 0x20, 0x3E, 0x1E, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '''
|
||||||
{0x00, 0x00, 0xE0, 0xF0, 0x18, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x07, 0x0F, 0x18, 0x10, 0x00}, // , 0x00}, // '('
|
// {0x00, 0x00, 0xE0, 0xF0, 0x18, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x07, 0x0F, 0x18, 0x10, 0x00}, // , 0x00}, // '('
|
||||||
{0x00, 0x00, 0x08, 0x18, 0xF0, 0xE0, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x18, 0x0F, 0x07, 0x00}, // , 0x00}, // ')'
|
// {0x00, 0x00, 0x08, 0x18, 0xF0, 0xE0, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x18, 0x0F, 0x07, 0x00}, // , 0x00}, // ')'
|
||||||
{0x00, 0x40, 0xC0, 0x80, 0x80, 0xC0, 0x40, /*0x00,*/ 0x01, 0x05, 0x07, 0x03, 0x03, 0x07, 0x05}, // , 0x01}, // '*'
|
// {0x00, 0x40, 0xC0, 0x80, 0x80, 0xC0, 0x40, /*0x00,*/ 0x01, 0x05, 0x07, 0x03, 0x03, 0x07, 0x05}, // , 0x01}, // '*'
|
||||||
{0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, /*0x00,*/ 0x00, 0x01, 0x01, 0x07, 0x07, 0x01, 0x01}, // , 0x00}, // '+'
|
// {0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, /*0x00,*/ 0x00, 0x01, 0x01, 0x07, 0x07, 0x01, 0x01}, // , 0x00}, // '+'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x20, 0x3C, 0x1C, 0x00, 0x00}, // , 0x00}, // ','
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x20, 0x3C, 0x1C, 0x00, 0x00}, // , 0x00}, // ','
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, // , 0x00}, // '-'
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, // , 0x00}, // '-'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // , 0x00}, // '.'
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // , 0x00}, // '.'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, /*0x00,*/ 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00}, // , 0x00}, // '/'
|
// {0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, /*0x00,*/ 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00}, // , 0x00}, // '/'
|
||||||
{0xF0, 0xF8, 0x08, 0x88, 0x48, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x1F, 0x12, 0x11, 0x10, 0x1F, 0x0F}, // , 0x00}, // '0'
|
// {0xF0, 0xF8, 0x08, 0x88, 0x48, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x1F, 0x12, 0x11, 0x10, 0x1F, 0x0F}, // , 0x00}, // '0'
|
||||||
{0x00, 0x20, 0x30, 0xF8, 0xF8, 0x00, 0x00, /*0x00,*/ 0x00, 0x10, 0x10, 0x1F, 0x1F, 0x10, 0x10}, // , 0x00}, // '1'
|
// {0x00, 0x20, 0x30, 0xF8, 0xF8, 0x00, 0x00, /*0x00,*/ 0x00, 0x10, 0x10, 0x1F, 0x1F, 0x10, 0x10}, // , 0x00}, // '1'
|
||||||
{0x10, 0x18, 0x08, 0x88, 0xC8, 0x78, 0x30, /*0x00,*/ 0x1C, 0x1E, 0x13, 0x11, 0x10, 0x18, 0x18}, // , 0x00}, // '2'
|
// {0x10, 0x18, 0x08, 0x88, 0xC8, 0x78, 0x30, /*0x00,*/ 0x1C, 0x1E, 0x13, 0x11, 0x10, 0x18, 0x18}, // , 0x00}, // '2'
|
||||||
{0x10, 0x18, 0x88, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x08, 0x18, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '3'
|
// {0x10, 0x18, 0x88, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x08, 0x18, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '3'
|
||||||
{0x80, 0xC0, 0x60, 0x30, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x01, 0x01, 0x01, 0x11, 0x1F, 0x1F, 0x11}, // , 0x00}, // '4'
|
// {0x80, 0xC0, 0x60, 0x30, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x01, 0x01, 0x01, 0x11, 0x1F, 0x1F, 0x11}, // , 0x00}, // '4'
|
||||||
{0xF8, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x08, /*0x00,*/ 0x08, 0x18, 0x10, 0x10, 0x11, 0x1F, 0x0F}, // , 0x00}, // '5'
|
// {0xF8, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x08, /*0x00,*/ 0x08, 0x18, 0x10, 0x10, 0x11, 0x1F, 0x0F}, // , 0x00}, // '5'
|
||||||
{0xE0, 0xF0, 0x98, 0x88, 0x88, 0x80, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '6'
|
// {0xE0, 0xF0, 0x98, 0x88, 0x88, 0x80, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '6'
|
||||||
{0x18, 0x18, 0x08, 0x08, 0x88, 0xF8, 0x78, /*0x00,*/ 0x00, 0x00, 0x1E, 0x1F, 0x01, 0x00, 0x00}, // , 0x00}, // '7'
|
// {0x18, 0x18, 0x08, 0x08, 0x88, 0xF8, 0x78, /*0x00,*/ 0x00, 0x00, 0x1E, 0x1F, 0x01, 0x00, 0x00}, // , 0x00}, // '7'
|
||||||
{0x70, 0xF8, 0x88, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '8'
|
// {0x70, 0xF8, 0x88, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // '8'
|
||||||
{0x70, 0xF8, 0x88, 0x88, 0x88, 0xF8, 0xF0, /*0x00,*/ 0x00, 0x10, 0x10, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // '9'
|
// {0x70, 0xF8, 0x88, 0x88, 0x88, 0xF8, 0xF0, /*0x00,*/ 0x00, 0x10, 0x10, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // '9'
|
||||||
{0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00}, // , 0x00}, // ':'
|
// {0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00}, // , 0x00}, // ':'
|
||||||
{0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1C, 0x0C, 0x00, 0x00}, // , 0x00}, // ';'
|
// {0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1C, 0x0C, 0x00, 0x00}, // , 0x00}, // ';'
|
||||||
{0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x10, /*0x00,*/ 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x10}, // , 0x00}, // '<'
|
// {0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x10, /*0x00,*/ 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x10}, // , 0x00}, // '<'
|
||||||
{0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, /*0x00,*/ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, // , 0x00}, // '='
|
// {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, /*0x00,*/ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, // , 0x00}, // '='
|
||||||
{0x00, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, /*0x00,*/ 0x00, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x01}, // , 0x00}, // '>'
|
// {0x00, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, /*0x00,*/ 0x00, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x01}, // , 0x00}, // '>'
|
||||||
{0x30, 0x38, 0x08, 0x88, 0xC8, 0x78, 0x30, /*0x00,*/ 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00}, // , 0x00}, // '?'
|
// {0x30, 0x38, 0x08, 0x88, 0xC8, 0x78, 0x30, /*0x00,*/ 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00}, // , 0x00}, // '?'
|
||||||
{0xE0, 0xF0, 0x10, 0x90, 0x90, 0xF0, 0xE0, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x17, 0x17, 0x17, 0x03}, // , 0x00}, // '@'
|
// {0xE0, 0xF0, 0x10, 0x90, 0x90, 0xF0, 0xE0, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x17, 0x17, 0x17, 0x03}, // , 0x00}, // '@'
|
||||||
{0xC0, 0xE0, 0x30, 0x18, 0x30, 0xE0, 0xC0, /*0x00,*/ 0x1F, 0x1F, 0x01, 0x01, 0x01, 0x1F, 0x1F}, // , 0x00}, // 'A'
|
// {0xC0, 0xE0, 0x30, 0x18, 0x30, 0xE0, 0xC0, /*0x00,*/ 0x1F, 0x1F, 0x01, 0x01, 0x01, 0x1F, 0x1F}, // , 0x00}, // 'A'
|
||||||
{0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'B'
|
// {0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'B'
|
||||||
{0xE0, 0xF0, 0x18, 0x08, 0x08, 0x18, 0x30, /*0x00,*/ 0x07, 0x0F, 0x18, 0x10, 0x10, 0x18, 0x0C}, // , 0x00}, // 'C'
|
// {0xE0, 0xF0, 0x18, 0x08, 0x08, 0x18, 0x30, /*0x00,*/ 0x07, 0x0F, 0x18, 0x10, 0x10, 0x18, 0x0C}, // , 0x00}, // 'C'
|
||||||
{0x08, 0xF8, 0xF8, 0x08, 0x18, 0xF0, 0xE0, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // 'D'
|
// {0x08, 0xF8, 0xF8, 0x08, 0x18, 0xF0, 0xE0, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // 'D'
|
||||||
{0x08, 0xF8, 0xF8, 0x88, 0xC8, 0x18, 0x38, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x11, 0x18, 0x1C}, // , 0x00}, // 'E'
|
// {0x08, 0xF8, 0xF8, 0x88, 0xC8, 0x18, 0x38, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x11, 0x18, 0x1C}, // , 0x00}, // 'E'
|
||||||
{0x08, 0xF8, 0xF8, 0x88, 0xC8, 0x18, 0x38, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x01, 0x00, 0x00}, // , 0x00}, // 'F'
|
// {0x08, 0xF8, 0xF8, 0x88, 0xC8, 0x18, 0x38, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x01, 0x00, 0x00}, // , 0x00}, // 'F'
|
||||||
{0xE0, 0xF0, 0x18, 0x08, 0x08, 0x18, 0x30, /*0x00,*/ 0x07, 0x0F, 0x18, 0x11, 0x11, 0x0F, 0x1F}, // , 0x00}, // 'G'
|
// {0xE0, 0xF0, 0x18, 0x08, 0x08, 0x18, 0x30, /*0x00,*/ 0x07, 0x0F, 0x18, 0x11, 0x11, 0x0F, 0x1F}, // , 0x00}, // 'G'
|
||||||
{0xF8, 0xF8, 0x80, 0x80, 0x80, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'H'
|
// {0xF8, 0xF8, 0x80, 0x80, 0x80, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'H'
|
||||||
{0x00, 0x00, 0x08, 0xF8, 0xF8, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'I'
|
// {0x00, 0x00, 0x08, 0xF8, 0xF8, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'I'
|
||||||
{0x00, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x08, /*0x00,*/ 0x0E, 0x1E, 0x10, 0x10, 0x1F, 0x0F, 0x00}, // , 0x00}, // 'J'
|
// {0x00, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x08, /*0x00,*/ 0x0E, 0x1E, 0x10, 0x10, 0x1F, 0x0F, 0x00}, // , 0x00}, // 'J'
|
||||||
{0x08, 0xF8, 0xF8, 0x80, 0xE0, 0x78, 0x18, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x01, 0x03, 0x1E, 0x1C}, // , 0x00}, // 'K'
|
// {0x08, 0xF8, 0xF8, 0x80, 0xE0, 0x78, 0x18, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x01, 0x03, 0x1E, 0x1C}, // , 0x00}, // 'K'
|
||||||
{0x08, 0xF8, 0xF8, 0x08, 0x00, 0x00, 0x00, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x18, 0x1C}, // , 0x00}, // 'L'
|
// {0x08, 0xF8, 0xF8, 0x08, 0x00, 0x00, 0x00, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x18, 0x1C}, // , 0x00}, // 'L'
|
||||||
{0xF8, 0xF8, 0x70, 0xE0, 0x70, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'M'
|
// {0xF8, 0xF8, 0x70, 0xE0, 0x70, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'M'
|
||||||
{0xF8, 0xF8, 0x70, 0xE0, 0xC0, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x01, 0x1F, 0x1F}, // , 0x00}, // 'N'
|
// {0xF8, 0xF8, 0x70, 0xE0, 0xC0, 0xF8, 0xF8, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x00, 0x01, 0x1F, 0x1F}, // , 0x00}, // 'N'
|
||||||
{0xE0, 0xF0, 0x18, 0x08, 0x18, 0xF0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x18, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // 'O'
|
// {0xE0, 0xF0, 0x18, 0x08, 0x18, 0xF0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x18, 0x10, 0x18, 0x0F, 0x07}, // , 0x00}, // 'O'
|
||||||
{0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00}, // , 0x00}, // 'P'
|
// {0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00}, // , 0x00}, // 'P'
|
||||||
{0xF0, 0xF8, 0x08, 0x08, 0x08, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x1C, 0x78, 0x7F, 0x4F}, // , 0x00}, // 'Q'
|
// {0xF0, 0xF8, 0x08, 0x08, 0x08, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x1C, 0x78, 0x7F, 0x4F}, // , 0x00}, // 'Q'
|
||||||
{0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x00, 0x01, 0x1F, 0x1E}, // , 0x00}, // 'R'
|
// {0x08, 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x00, 0x01, 0x1F, 0x1E}, // , 0x00}, // 'R'
|
||||||
{0x30, 0x78, 0xC8, 0x88, 0x88, 0x38, 0x30, /*0x00,*/ 0x0C, 0x1C, 0x10, 0x10, 0x11, 0x1F, 0x0E}, // , 0x00}, // 'S'
|
// {0x30, 0x78, 0xC8, 0x88, 0x88, 0x38, 0x30, /*0x00,*/ 0x0C, 0x1C, 0x10, 0x10, 0x11, 0x1F, 0x0E}, // , 0x00}, // 'S'
|
||||||
{0x00, 0x38, 0x18, 0xF8, 0xF8, 0x18, 0x38, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'T'
|
// {0x00, 0x38, 0x18, 0xF8, 0xF8, 0x18, 0x38, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'T'
|
||||||
{0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'U'
|
// {0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'U'
|
||||||
{0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x03, 0x07, 0x0C, 0x18, 0x0C, 0x07, 0x03}, // , 0x00}, // 'V'
|
// {0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x03, 0x07, 0x0C, 0x18, 0x0C, 0x07, 0x03}, // , 0x00}, // 'V'
|
||||||
{0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x07, 0x1F, 0x1C, 0x07, 0x1C, 0x1F, 0x07}, // , 0x00}, // 'W'
|
// {0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, /*0x00,*/ 0x07, 0x1F, 0x1C, 0x07, 0x1C, 0x1F, 0x07}, // , 0x00}, // 'W'
|
||||||
{0x18, 0x78, 0xE0, 0x80, 0xE0, 0x78, 0x18, /*0x00,*/ 0x18, 0x1E, 0x07, 0x01, 0x07, 0x1E, 0x18}, // , 0x00}, // 'X'
|
// {0x18, 0x78, 0xE0, 0x80, 0xE0, 0x78, 0x18, /*0x00,*/ 0x18, 0x1E, 0x07, 0x01, 0x07, 0x1E, 0x18}, // , 0x00}, // 'X'
|
||||||
{0x00, 0x78, 0xF8, 0x80, 0x80, 0xF8, 0x78, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'Y'
|
// {0x00, 0x78, 0xF8, 0x80, 0x80, 0xF8, 0x78, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'Y'
|
||||||
{0x38, 0x18, 0x08, 0x88, 0xC8, 0x78, 0x38, /*0x00,*/ 0x1C, 0x1E, 0x13, 0x11, 0x10, 0x18, 0x1C}, // , 0x00}, // 'Z'
|
// {0x38, 0x18, 0x08, 0x88, 0xC8, 0x78, 0x38, /*0x00,*/ 0x1C, 0x1E, 0x13, 0x11, 0x10, 0x18, 0x1C}, // , 0x00}, // 'Z'
|
||||||
{0x00, 0x00, 0xF8, 0xF8, 0x08, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x1F, 0x1F, 0x10, 0x10, 0x00}, // , 0x00}, // '['
|
// {0x00, 0x00, 0xF8, 0xF8, 0x08, 0x08, 0x00, /*0x00,*/ 0x00, 0x00, 0x1F, 0x1F, 0x10, 0x10, 0x00}, // , 0x00}, // '['
|
||||||
{0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C}, // , 0x00}, // '"\'
|
// {0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C}, // , 0x00}, // '"\'
|
||||||
{0x00, 0x00, 0x08, 0x08, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x10, 0x1F, 0x1F, 0x00}, // , 0x00}, // ']'
|
// {0x00, 0x00, 0x08, 0x08, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x10, 0x1F, 0x1F, 0x00}, // , 0x00}, // ']'
|
||||||
{0x10, 0x18, 0x0E, 0x07, 0x0E, 0x18, 0x10, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '^'
|
// {0x10, 0x18, 0x0E, 0x07, 0x0E, 0x18, 0x10, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '^'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // , 0x40}, // '_'
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // , 0x40}, // '_'
|
||||||
{0x00, 0x00, 0x07, 0x0F, 0x08, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '`'
|
// {0x00, 0x00, 0x07, 0x0F, 0x08, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // , 0x00}, // '`'
|
||||||
{0x00, 0x40, 0x40, 0x40, 0xC0, 0x80, 0x00, /*0x00,*/ 0x0E, 0x1F, 0x11, 0x11, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'a'
|
// {0x00, 0x40, 0x40, 0x40, 0xC0, 0x80, 0x00, /*0x00,*/ 0x0E, 0x1F, 0x11, 0x11, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'a'
|
||||||
{0x08, 0xF8, 0xF8, 0x40, 0xC0, 0x80, 0x00, /*0x00,*/ 0x10, 0x1F, 0x0F, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'b'
|
// {0x08, 0xF8, 0xF8, 0x40, 0xC0, 0x80, 0x00, /*0x00,*/ 0x10, 0x1F, 0x0F, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'b'
|
||||||
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x18, 0x08}, // , 0x00}, // 'c'
|
// {0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x18, 0x08}, // , 0x00}, // 'c'
|
||||||
{0x00, 0x80, 0xC0, 0x48, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'd'
|
// {0x00, 0x80, 0xC0, 0x48, 0xF8, 0xF8, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'd'
|
||||||
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x11, 0x11, 0x11, 0x19, 0x09}, // , 0x00}, // 'e'
|
// {0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x11, 0x11, 0x11, 0x19, 0x09}, // , 0x00}, // 'e'
|
||||||
{0x80, 0xF0, 0xF8, 0x88, 0x18, 0x30, 0x00, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00}, // , 0x00}, // 'f'
|
// {0x80, 0xF0, 0xF8, 0x88, 0x18, 0x30, 0x00, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x00}, // , 0x00}, // 'f'
|
||||||
{0x80, 0xC0, 0x40, 0x40, 0x80, 0xC0, 0x40, /*0x00,*/ 0x4F, 0xDF, 0x90, 0x90, 0xFF, 0x7F, 0x00}, // , 0x00}, // 'g'
|
// {0x80, 0xC0, 0x40, 0x40, 0x80, 0xC0, 0x40, /*0x00,*/ 0x4F, 0xDF, 0x90, 0x90, 0xFF, 0x7F, 0x00}, // , 0x00}, // 'g'
|
||||||
{0x08, 0xF8, 0xF8, 0x80, 0x40, 0xC0, 0x80, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'h'
|
// {0x08, 0xF8, 0xF8, 0x80, 0x40, 0xC0, 0x80, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'h'
|
||||||
{0x00, 0x00, 0x40, 0xD8, 0xD8, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'i'
|
// {0x00, 0x00, 0x40, 0xD8, 0xD8, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'i'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x40, 0xD8, 0xD8, /*0x00,*/ 0x00, 0x60, 0xE0, 0x80, 0x80, 0xFF, 0x7F}, // , 0x00}, // 'j'
|
// {0x00, 0x00, 0x00, 0x00, 0x40, 0xD8, 0xD8, /*0x00,*/ 0x00, 0x60, 0xE0, 0x80, 0x80, 0xFF, 0x7F}, // , 0x00}, // 'j'
|
||||||
{0x08, 0xF8, 0xF8, 0x00, 0x80, 0xC0, 0x40, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x03, 0x07, 0x1C, 0x18}, // , 0x00}, // 'k'
|
// {0x08, 0xF8, 0xF8, 0x00, 0x80, 0xC0, 0x40, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x03, 0x07, 0x1C, 0x18}, // , 0x00}, // 'k'
|
||||||
{0x00, 0x00, 0x08, 0xF8, 0xF8, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'l'
|
// {0x00, 0x00, 0x08, 0xF8, 0xF8, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1F, 0x1F, 0x10, 0x00}, // , 0x00}, // 'l'
|
||||||
{0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0x80, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'm'
|
// {0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0x80, /*0x00,*/ 0x1F, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'm'
|
||||||
{0x40, 0xC0, 0x80, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'n'
|
// {0x40, 0xC0, 0x80, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F}, // , 0x00}, // 'n'
|
||||||
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'o'
|
// {0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'o'
|
||||||
{0x40, 0xC0, 0x80, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x80, 0xFF, 0xFF, 0x90, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'p'
|
// {0x40, 0xC0, 0x80, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x80, 0xFF, 0xFF, 0x90, 0x10, 0x1F, 0x0F}, // , 0x00}, // 'p'
|
||||||
{0x80, 0xC0, 0x40, 0x40, 0x80, 0xC0, 0x40, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x90, 0xFF, 0xFF, 0x80}, // , 0x00}, // 'q'
|
// {0x80, 0xC0, 0x40, 0x40, 0x80, 0xC0, 0x40, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x90, 0xFF, 0xFF, 0x80}, // , 0x00}, // 'q'
|
||||||
{0x40, 0xC0, 0x80, 0xC0, 0x40, 0xC0, 0x80, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x01}, // , 0x00}, // 'r'
|
// {0x40, 0xC0, 0x80, 0xC0, 0x40, 0xC0, 0x80, /*0x00,*/ 0x10, 0x1F, 0x1F, 0x10, 0x00, 0x00, 0x01}, // , 0x00}, // 'r'
|
||||||
{0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x08, 0x19, 0x13, 0x12, 0x16, 0x1C, 0x08}, // , 0x00}, // 's'
|
// {0x80, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, /*0x00,*/ 0x08, 0x19, 0x13, 0x12, 0x16, 0x1C, 0x08}, // , 0x00}, // 's'
|
||||||
{0x40, 0x40, 0xF0, 0xF8, 0x40, 0x40, 0x00, /*0x00,*/ 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x18, 0x08}, // , 0x00}, // 't'
|
// {0x40, 0x40, 0xF0, 0xF8, 0x40, 0x40, 0x00, /*0x00,*/ 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x18, 0x08}, // , 0x00}, // 't'
|
||||||
{0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'u'
|
// {0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, /*0x00,*/ 0x0F, 0x1F, 0x10, 0x10, 0x0F, 0x1F, 0x10}, // , 0x00}, // 'u'
|
||||||
{0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x00, 0x07, 0x0F, 0x18, 0x18, 0x0F, 0x07}, // , 0x00}, // 'v'
|
// {0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x00, 0x07, 0x0F, 0x18, 0x18, 0x0F, 0x07}, // , 0x00}, // 'v'
|
||||||
{0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x0F, 0x1F, 0x18, 0x0E, 0x18, 0x1F, 0x0F}, // , 0x00}, // 'w'
|
// {0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x0F, 0x1F, 0x18, 0x0E, 0x18, 0x1F, 0x0F}, // , 0x00}, // 'w'
|
||||||
{0x40, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0x40, /*0x00,*/ 0x10, 0x18, 0x0F, 0x07, 0x0F, 0x18, 0x10}, // , 0x00}, // 'x'
|
// {0x40, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0x40, /*0x00,*/ 0x10, 0x18, 0x0F, 0x07, 0x0F, 0x18, 0x10}, // , 0x00}, // 'x'
|
||||||
{0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x8F, 0x9F, 0x90, 0x90, 0xD0, 0x7F, 0x3F}, // , 0x00}, // 'y'
|
// {0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, /*0x00,*/ 0x8F, 0x9F, 0x90, 0x90, 0xD0, 0x7F, 0x3F}, // , 0x00}, // 'y'
|
||||||
{0xC0, 0xC0, 0x40, 0x40, 0xC0, 0xC0, 0x40, /*0x00,*/ 0x18, 0x1C, 0x16, 0x13, 0x11, 0x18, 0x18}, // , 0x00}, // 'z'
|
// {0xC0, 0xC0, 0x40, 0x40, 0xC0, 0xC0, 0x40, /*0x00,*/ 0x18, 0x1C, 0x16, 0x13, 0x11, 0x18, 0x18}, // , 0x00}, // 'z'
|
||||||
{0x00, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10}, // , 0x00}, // '{'
|
// {0x00, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10}, // , 0x00}, // '{'
|
||||||
{0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00}, // , 0x00}, // '|'
|
// {0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00}, // , 0x00}, // '|'
|
||||||
{0x00, 0x08, 0x08, 0x78, 0xF0, 0x80, 0x80, /*0x00,*/ 0x00, 0x10, 0x10, 0x1F, 0x0F, 0x00, 0x00}, // , 0x00}, // '}'
|
// {0x00, 0x08, 0x08, 0x78, 0xF0, 0x80, 0x80, /*0x00,*/ 0x00, 0x10, 0x10, 0x1F, 0x0F, 0x00, 0x00}, // , 0x00}, // '}'
|
||||||
{0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // , 0x00} // '->'
|
// {0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // , 0x00} // '->'
|
||||||
#else
|
//#else
|
||||||
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' '
|
// // {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' '
|
||||||
{0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00}, // '!'
|
// {0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00}, // '!'
|
||||||
{0x00, 0x0F, 0x1F, 0x00, 0x00, 0x1F, 0x0F, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
|
// {0x00, 0x0F, 0x1F, 0x00, 0x00, 0x1F, 0x0F, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
|
||||||
{0x20, 0xF8, 0xF8, 0x20, 0xF8, 0xF8, 0x20, /*0x00,*/ 0x02, 0x0F, 0x0F, 0x02, 0x0F, 0x0F, 0x02}, // '#'
|
// {0x20, 0xF8, 0xF8, 0x20, 0xF8, 0xF8, 0x20, /*0x00,*/ 0x02, 0x0F, 0x0F, 0x02, 0x0F, 0x0F, 0x02}, // '#'
|
||||||
{0x70, 0xF8, 0x88, 0x8E, 0x8E, 0x98, 0x10, /*0x00,*/ 0x04, 0x0C, 0x08, 0x38, 0x38, 0x0F, 0x07}, // '$'
|
// {0x70, 0xF8, 0x88, 0x8E, 0x8E, 0x98, 0x10, /*0x00,*/ 0x04, 0x0C, 0x08, 0x38, 0x38, 0x0F, 0x07}, // '$'
|
||||||
{0x30, 0x30, 0x00, 0x80, 0xC0, 0x60, 0x30, /*0x00,*/ 0x0C, 0x06, 0x03, 0x01, 0x00, 0x0C, 0x0C}, // '%'
|
// {0x30, 0x30, 0x00, 0x80, 0xC0, 0x60, 0x30, /*0x00,*/ 0x0C, 0x06, 0x03, 0x01, 0x00, 0x0C, 0x0C}, // '%'
|
||||||
{0x80, 0xD8, 0x7C, 0xE4, 0xBC, 0xD8, 0x40, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x07, 0x0F, 0x08}, // '&'
|
// {0x80, 0xD8, 0x7C, 0xE4, 0xBC, 0xD8, 0x40, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x07, 0x0F, 0x08}, // '&'
|
||||||
{0x00, 0x10, 0x1F, 0x0F, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '''
|
// {0x00, 0x10, 0x1F, 0x0F, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '''
|
||||||
{0x00, 0x00, 0xF0, 0xF8, 0x0C, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x03, 0x07, 0x0C, 0x08, 0x00}, // '('
|
// {0x00, 0x00, 0xF0, 0xF8, 0x0C, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x03, 0x07, 0x0C, 0x08, 0x00}, // '('
|
||||||
{0x00, 0x00, 0x04, 0x0C, 0xF8, 0xF0, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0C, 0x07, 0x03, 0x00}, // ')'
|
// {0x00, 0x00, 0x04, 0x0C, 0xF8, 0xF0, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0C, 0x07, 0x03, 0x00}, // ')'
|
||||||
{0x00, 0x80, 0xA0, 0xE0, 0xC0, 0xE0, 0xA0, /*0x80,*/ 0x00, 0x00, 0x02, 0x03, 0x01, 0x03, 0x02}, // '*'
|
// {0x00, 0x80, 0xA0, 0xE0, 0xC0, 0xE0, 0xA0, /*0x80,*/ 0x00, 0x00, 0x02, 0x03, 0x01, 0x03, 0x02}, // '*'
|
||||||
{0x00, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, /*0x00,*/ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00}, // '+'
|
// {0x00, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, /*0x00,*/ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00}, // '+'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1E, 0x0E, 0x00, 0x00}, // ','
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x10, 0x1E, 0x0E, 0x00, 0x00}, // ','
|
||||||
{0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '-'
|
// {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '-'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00}, // '.'
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00}, // '.'
|
||||||
{0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, /*0x00,*/ 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00}, // '/'
|
// {0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, /*0x00,*/ 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00}, // '/'
|
||||||
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '0'
|
// {0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '0'
|
||||||
{0x00, 0x10, 0x18, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08}, // '1'
|
// {0x00, 0x10, 0x18, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08}, // '1'
|
||||||
{0x18, 0x1C, 0x04, 0x84, 0xC4, 0x7C, 0x38, /*0x00,*/ 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x08}, // '2'
|
// {0x18, 0x1C, 0x04, 0x84, 0xC4, 0x7C, 0x38, /*0x00,*/ 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x08}, // '2'
|
||||||
{0x18, 0x1C, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '3'
|
// {0x18, 0x1C, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '3'
|
||||||
{0x80, 0xC0, 0x60, 0x30, 0x18, 0xFC, 0xFC, /*0x00,*/ 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F}, // '4'
|
// {0x80, 0xC0, 0x60, 0x30, 0x18, 0xFC, 0xFC, /*0x00,*/ 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F}, // '4'
|
||||||
{0x7C, 0x7C, 0x44, 0x44, 0x44, 0xC4, 0x84, /*0x00,*/ 0x04, 0x0C, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '5'
|
// {0x7C, 0x7C, 0x44, 0x44, 0x44, 0xC4, 0x84, /*0x00,*/ 0x04, 0x0C, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '5'
|
||||||
{0xF0, 0xF8, 0x4C, 0x44, 0x44, 0xC4, 0x80, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '6'
|
// {0xF0, 0xF8, 0x4C, 0x44, 0x44, 0xC4, 0x80, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '6'
|
||||||
{0x04, 0x04, 0x04, 0x84, 0xE4, 0x7C, 0x1C, /*0x00,*/ 0x00, 0x00, 0x0E, 0x0F, 0x01, 0x00, 0x00}, // '7'
|
// {0x04, 0x04, 0x04, 0x84, 0xE4, 0x7C, 0x1C, /*0x00,*/ 0x00, 0x00, 0x0E, 0x0F, 0x01, 0x00, 0x00}, // '7'
|
||||||
{0xB8, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '8'
|
// {0xB8, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // '8'
|
||||||
{0x78, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0xF8, /*0x00,*/ 0x00, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x03}, // '9'
|
// {0x78, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0xF8, /*0x00,*/ 0x00, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x03}, // '9'
|
||||||
{0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00}, // ':'
|
// {0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00}, // ':'
|
||||||
{0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0E, 0x06, 0x00, 0x00}, // ';'
|
// {0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0E, 0x06, 0x00, 0x00}, // ';'
|
||||||
{0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x08, /*0x00,*/ 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x08}, // '<'
|
// {0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x08, /*0x00,*/ 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x08}, // '<'
|
||||||
{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, /*0x00,*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, // '='
|
// {0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, /*0x00,*/ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, // '='
|
||||||
{0x00, 0x08, 0x18, 0x30, 0x60, 0xC0, 0x80, /*0x00,*/ 0x00, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x00}, // '>'
|
// {0x00, 0x08, 0x18, 0x30, 0x60, 0xC0, 0x80, /*0x00,*/ 0x00, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x00}, // '>'
|
||||||
{0x38, 0x3C, 0x04, 0x84, 0xC4, 0x7C, 0x38, /*0x00,*/ 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00}, // '?'
|
// {0x38, 0x3C, 0x04, 0x84, 0xC4, 0x7C, 0x38, /*0x00,*/ 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00}, // '?'
|
||||||
{0xF0, 0xF8, 0x08, 0xC8, 0xC8, 0xF8, 0xF0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0B, 0x0B, 0x0B, 0x01}, // '@'
|
// {0xF0, 0xF8, 0x08, 0xC8, 0xC8, 0xF8, 0xF0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0B, 0x0B, 0x0B, 0x01}, // '@'
|
||||||
{0xF8, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0xF8, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'A'
|
// {0xF8, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0xF8, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'A'
|
||||||
{0xFC, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'B'
|
// {0xFC, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'B'
|
||||||
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0x1C, 0x18, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0E, 0x06}, // 'C'
|
// {0xF8, 0xFC, 0x04, 0x04, 0x04, 0x1C, 0x18, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0E, 0x06}, // 'C'
|
||||||
{0xFC, 0xFC, 0x04, 0x04, 0x0C, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x0C, 0x07, 0x03}, // 'D'
|
// {0xFC, 0xFC, 0x04, 0x04, 0x0C, 0xF8, 0xF0, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x0C, 0x07, 0x03}, // 'D'
|
||||||
{0xFC, 0xFC, 0x44, 0x44, 0x44, 0x04, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08}, // 'E'
|
// {0xFC, 0xFC, 0x44, 0x44, 0x44, 0x04, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08}, // 'E'
|
||||||
{0xFC, 0xFC, 0x44, 0x44, 0x44, 0x04, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'F'
|
// {0xFC, 0xFC, 0x44, 0x44, 0x44, 0x04, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'F'
|
||||||
{0xF8, 0xFC, 0x04, 0x84, 0x84, 0x9C, 0x98, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'G'
|
// {0xF8, 0xFC, 0x04, 0x84, 0x84, 0x9C, 0x98, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'G'
|
||||||
{0xFC, 0xFC, 0x40, 0x40, 0x40, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'H'
|
// {0xFC, 0xFC, 0x40, 0x40, 0x40, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'H'
|
||||||
{0x00, 0x00, 0x04, 0xFC, 0xFC, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'I'
|
// {0x00, 0x00, 0x04, 0xFC, 0xFC, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'I'
|
||||||
{0x00, 0x00, 0x00, 0x04, 0xFC, 0xFC, 0x04, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x0F, 0x07, 0x00}, // 'J'
|
// {0x00, 0x00, 0x00, 0x04, 0xFC, 0xFC, 0x04, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x0F, 0x07, 0x00}, // 'J'
|
||||||
{0xFC, 0xFC, 0xE0, 0x30, 0x18, 0x0C, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'K'
|
// {0xFC, 0xFC, 0xE0, 0x30, 0x18, 0x0C, 0x04, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'K'
|
||||||
{0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08}, // 'L'
|
// {0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08}, // 'L'
|
||||||
{0xFC, 0xFC, 0x18, 0x70, 0x18, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'M'
|
// {0xFC, 0xFC, 0x18, 0x70, 0x18, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'M'
|
||||||
{0xFC, 0xFC, 0x60, 0xC0, 0x80, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0F}, // 'N'
|
// {0xFC, 0xFC, 0x60, 0xC0, 0x80, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0F}, // 'N'
|
||||||
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'O'
|
// {0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'O'
|
||||||
{0xFC, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0x78, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'P'
|
// {0xFC, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0x78, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'P'
|
||||||
{0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0C, 0x0C, 0x1F, 0x17}, // 'Q'
|
// {0xF8, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0xF8, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0C, 0x0C, 0x1F, 0x17}, // 'Q'
|
||||||
{0xFC, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0x78, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'R'
|
// {0xFC, 0xFC, 0x84, 0x84, 0x84, 0xFC, 0x78, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'R'
|
||||||
{0x38, 0x7C, 0x44, 0x44, 0x44, 0xCC, 0x88, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'S'
|
// {0x38, 0x7C, 0x44, 0x44, 0x44, 0xCC, 0x88, /*0x00,*/ 0x06, 0x0E, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'S'
|
||||||
{0x00, 0x04, 0x04, 0xFC, 0xFC, 0x04, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // 'T'
|
// {0x00, 0x04, 0x04, 0xFC, 0xFC, 0x04, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // 'T'
|
||||||
{0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'U'
|
// {0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'U'
|
||||||
{0x7C, 0xFC, 0x80, 0x00, 0x80, 0xFC, 0x7C, /*0x00,*/ 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00}, // 'V'
|
// {0x7C, 0xFC, 0x80, 0x00, 0x80, 0xFC, 0x7C, /*0x00,*/ 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00}, // 'V'
|
||||||
{0xFC, 0xFC, 0x00, 0x80, 0x00, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x06, 0x03, 0x06, 0x0F, 0x0F}, // 'W'
|
// {0xFC, 0xFC, 0x00, 0x80, 0x00, 0xFC, 0xFC, /*0x00,*/ 0x0F, 0x0F, 0x06, 0x03, 0x06, 0x0F, 0x0F}, // 'W'
|
||||||
{0x0C, 0x3C, 0xF0, 0xC0, 0xF0, 0x3C, 0x0C, /*0x00,*/ 0x0C, 0x0F, 0x03, 0x00, 0x03, 0x0F, 0x0C}, // 'X'
|
// {0x0C, 0x3C, 0xF0, 0xC0, 0xF0, 0x3C, 0x0C, /*0x00,*/ 0x0C, 0x0F, 0x03, 0x00, 0x03, 0x0F, 0x0C}, // 'X'
|
||||||
{0x00, 0x3C, 0x7C, 0xC0, 0xC0, 0x7C, 0x3C, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // 'Y'
|
// {0x00, 0x3C, 0x7C, 0xC0, 0xC0, 0x7C, 0x3C, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // 'Y'
|
||||||
{0x04, 0x04, 0x84, 0xC4, 0x64, 0x3C, 0x1C, /*0x00,*/ 0x0E, 0x0F, 0x09, 0x08, 0x08, 0x08, 0x08}, // 'Z'
|
// {0x04, 0x04, 0x84, 0xC4, 0x64, 0x3C, 0x1C, /*0x00,*/ 0x0E, 0x0F, 0x09, 0x08, 0x08, 0x08, 0x08}, // 'Z'
|
||||||
{0x00, 0x00, 0xFC, 0xFC, 0x04, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x0F, 0x0F, 0x08, 0x08, 0x00}, // '['
|
// {0x00, 0x00, 0xFC, 0xFC, 0x04, 0x04, 0x00, /*0x00,*/ 0x00, 0x00, 0x0F, 0x0F, 0x08, 0x08, 0x00}, // '['
|
||||||
{0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E}, // '"\'
|
// {0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E}, // '"\'
|
||||||
{0x00, 0x00, 0x04, 0x04, 0xFC, 0xFC, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x00}, // ']'
|
// {0x00, 0x00, 0x04, 0x04, 0xFC, 0xFC, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x00}, // ']'
|
||||||
{0x08, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
|
// {0x08, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x08, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, // '_'
|
// {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*0x00,*/ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, // '_'
|
||||||
{0x00, 0x00, 0x03, 0x07, 0x04, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
|
// {0x00, 0x00, 0x03, 0x07, 0x04, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
|
||||||
{0x00, 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'a'
|
// {0x00, 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'a'
|
||||||
{0xFC, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'b'
|
// {0xFC, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'b'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0x60, 0x40, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x04}, // 'c'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0x60, 0x40, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x04}, // 'c'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xFC, 0xFC, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'd'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0xFC, 0xFC, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'd'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x01}, // 'e'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x01}, // 'e'
|
||||||
{0x20, 0x20, 0xF8, 0xFC, 0x24, 0x24, 0x04, /*0x00,*/ 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00}, // 'f'
|
// {0x20, 0x20, 0xF8, 0xFC, 0x24, 0x24, 0x04, /*0x00,*/ 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00}, // 'f'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x3F}, // 'g'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x3F}, // 'g'
|
||||||
{0xFC, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'h'
|
// {0xFC, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'h'
|
||||||
{0x00, 0x00, 0x20, 0xEC, 0xEC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'i'
|
// {0x00, 0x00, 0x20, 0xEC, 0xEC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'i'
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x20, 0xEC, 0xEC, /*0x00,*/ 0x00, 0x30, 0x70, 0x40, 0x40, 0x7F, 0x3F}, // 'j'
|
// {0x00, 0x00, 0x00, 0x00, 0x20, 0xEC, 0xEC, /*0x00,*/ 0x00, 0x30, 0x70, 0x40, 0x40, 0x7F, 0x3F}, // 'j'
|
||||||
{0xFC, 0xFC, 0x00, 0x80, 0xC0, 0x60, 0x20, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'k'
|
// {0xFC, 0xFC, 0x00, 0x80, 0xC0, 0x60, 0x20, /*0x00,*/ 0x0F, 0x0F, 0x01, 0x03, 0x06, 0x0C, 0x08}, // 'k'
|
||||||
{0x00, 0x00, 0x04, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'l'
|
// {0x00, 0x00, 0x04, 0xFC, 0xFC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00}, // 'l'
|
||||||
{0xE0, 0xE0, 0x20, 0xE0, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x0F}, // 'm'
|
// {0xE0, 0xE0, 0x20, 0xE0, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x0F}, // 'm'
|
||||||
{0xE0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'n'
|
// {0xE0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F}, // 'n'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'o'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'o'
|
||||||
{0xE0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x7F, 0x7F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'p'
|
// {0xE0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, /*0x00,*/ 0x7F, 0x7F, 0x08, 0x08, 0x08, 0x0F, 0x07}, // 'p'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x7F, 0x7F}, // 'q'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x7F, 0x7F}, // 'q'
|
||||||
{0xE0, 0xE0, 0x60, 0x20, 0x20, 0x20, 0x20, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'r'
|
// {0xE0, 0xE0, 0x60, 0x20, 0x20, 0x20, 0x20, /*0x00,*/ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'r'
|
||||||
{0xC0, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, /*0x00,*/ 0x08, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x06}, // 's'
|
// {0xC0, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, /*0x00,*/ 0x08, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x06}, // 's'
|
||||||
{0x20, 0x20, 0xFC, 0xFC, 0x20, 0x20, 0x00, /*0x00,*/ 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08, 0x08}, // 't'
|
// {0x20, 0x20, 0xFC, 0xFC, 0x20, 0x20, 0x00, /*0x00,*/ 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08, 0x08}, // 't'
|
||||||
{0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'u'
|
// {0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x0F}, // 'u'
|
||||||
{0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00}, // 'v'
|
// {0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00}, // 'v'
|
||||||
{0xE0, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0F, 0x08, 0x0F, 0x07}, // 'w'
|
// {0xE0, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x0F, 0x08, 0x0F, 0x08, 0x0F, 0x07}, // 'w'
|
||||||
{0x60, 0xE0, 0x80, 0x00, 0x80, 0xE0, 0x60, /*0x00,*/ 0x0C, 0x0E, 0x03, 0x01, 0x03, 0x0E, 0x0C}, // 'x'
|
// {0x60, 0xE0, 0x80, 0x00, 0x80, 0xE0, 0x60, /*0x00,*/ 0x0C, 0x0E, 0x03, 0x01, 0x03, 0x0E, 0x0C}, // 'x'
|
||||||
{0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x3F}, // 'y'
|
// {0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, /*0x00,*/ 0x07, 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x3F}, // 'y'
|
||||||
{0x20, 0x20, 0x20, 0xA0, 0xE0, 0x60, 0x20, /*0x00,*/ 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x08}, // 'z'
|
// {0x20, 0x20, 0x20, 0xA0, 0xE0, 0x60, 0x20, /*0x00,*/ 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x08}, // 'z'
|
||||||
{0x00, 0x00, 0x40, 0xF8, 0xBC, 0x04, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08}, // '{'
|
// {0x00, 0x00, 0x40, 0xF8, 0xBC, 0x04, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08}, // '{'
|
||||||
{0x00, 0x00, 0x00, 0xBC, 0xBC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // '|'
|
// {0x00, 0x00, 0x00, 0xBC, 0xBC, 0x00, 0x00, /*0x00,*/ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00}, // '|'
|
||||||
{0x00, 0x04, 0x04, 0xBC, 0xF8, 0x40, 0x00, /*0x00,*/ 0x00, 0x08, 0x08, 0x0F, 0x07, 0x00, 0x00}, // '}'
|
// {0x00, 0x04, 0x04, 0xBC, 0xF8, 0x40, 0x00, /*0x00,*/ 0x00, 0x08, 0x08, 0x0F, 0x07, 0x00, 0x00}, // '}'
|
||||||
{0x08, 0x0C, 0x04, 0x0C, 0x08, 0x0C, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // '->'
|
// {0x08, 0x0C, 0x04, 0x0C, 0x08, 0x0C, 0x04, /*0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // '->'
|
||||||
#endif
|
//#endif
|
||||||
};
|
//};
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// original font
|
// original font
|
||||||
@@ -252,20 +252,20 @@ const uint8_t gFontBig[95 - 1][16 - 2] =
|
|||||||
#else
|
#else
|
||||||
// Terminus font
|
// Terminus font
|
||||||
|
|
||||||
const uint8_t gFontBigDigits[11][26 - 6] =
|
// const uint8_t gFontBigDigits[11][26 - 6] =
|
||||||
{
|
// {
|
||||||
{/*0x00, 0x00,*/ 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x00, 0x00, 0x18, 0x1C, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x00, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0x00, 0x00, 0x18, 0x1C, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x00, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x1C, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x60, 0x70, 0x78, 0x7C, 0x6E, 0x67, 0x63, 0x61, 0x60, 0x60, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0x1C, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x60, 0x70, 0x78, 0x7C, 0x6E, 0x67, 0x63, 0x61, 0x60, 0x60, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x0C, 0x0E, 0x0E, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x30, 0x70, 0x70, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x7F, 0x3E, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0x0C, 0x0E, 0x0E, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x30, 0x70, 0x70, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x7F, 0x3E, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0xFE, 0xFE, 0xFE, /*0x00,*/ /*0x00, 0x00,*/ 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x7F, 0x7F, 0x7F, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0xFE, 0xFE, 0xFE, /*0x00,*/ /*0x00, 0x00,*/ 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x7F, 0x7F, 0x7F, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0xFE, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x86, /*0x00,*/ /*0x00, 0x00,*/ 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0xFE, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x86, /*0x00,*/ /*0x00, 0x00,*/ 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0xF8, 0xFC, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x80, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0xF8, 0xFC, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x80, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x0E, 0x0E, 0x0E, 0x06, 0x06, 0x86, 0xE6, 0xFE, 0x7E, 0x1E, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7F, 0x7F, 0x03, 0x00, 0x00, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0x0E, 0x0E, 0x0E, 0x06, 0x06, 0x86, 0xE6, 0xFE, 0x7E, 0x1E, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7F, 0x7F, 0x03, 0x00, 0x00, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x7C, 0xFE, 0xFE, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0x7C, 0xFE, 0xFE, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0x7C, /*0x00,*/ /*0x00, 0x00,*/ 0x3F, 0x7F, 0x7F, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x7F, 0x3F, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, /*0x00,*/ /*0x00, 0x00,*/ 0x01, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7F, 0x3F, 0x1F, /*0x00*/},
|
// {/*0x00, 0x00,*/ 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, /*0x00,*/ /*0x00, 0x00,*/ 0x01, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7F, 0x3F, 0x1F, /*0x00*/},
|
||||||
{/*0x00, 0x00,*/ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*0x00*/}
|
// {/*0x00, 0x00,*/ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, /*0x00,*/ /*0x00, 0x00,*/ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*0x00*/}
|
||||||
};
|
// };
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
const uint8_t gFontSmallDigits[11][7] =
|
const uint8_t gFontSmallDigits[11][7] =
|
||||||
|
@@ -195,40 +195,40 @@ int32_t TX_freq_check(const uint32_t Frequency)
|
|||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_LOCK_FCC:
|
// case F_LOCK_FCC:
|
||||||
if (Frequency >= 14400000 && Frequency < 14800000)
|
// if (Frequency >= 14400000 && Frequency < 14800000)
|
||||||
return 0;
|
// return 0;
|
||||||
if (Frequency >= 42000000 && Frequency < 45000000)
|
// if (Frequency >= 42000000 && Frequency < 45000000)
|
||||||
return 0;
|
// return 0;
|
||||||
break;
|
// break;
|
||||||
|
//
|
||||||
case F_LOCK_CE:
|
// case F_LOCK_CE:
|
||||||
if (Frequency >= 14400000 && Frequency < 14600000)
|
// if (Frequency >= 14400000 && Frequency < 14600000)
|
||||||
return 0;
|
// return 0;
|
||||||
if (Frequency >= 43000000 && Frequency < 44000000)
|
// if (Frequency >= 43000000 && Frequency < 44000000)
|
||||||
return 0;
|
// return 0;
|
||||||
break;
|
// break;
|
||||||
|
//
|
||||||
case F_LOCK_GB:
|
// case F_LOCK_GB:
|
||||||
if (Frequency >= 14400000 && Frequency < 14800000)
|
// if (Frequency >= 14400000 && Frequency < 14800000)
|
||||||
return 0;
|
// return 0;
|
||||||
if (Frequency >= 43000000 && Frequency < 44000000)
|
// if (Frequency >= 43000000 && Frequency < 44000000)
|
||||||
return 0;
|
// return 0;
|
||||||
break;
|
// break;
|
||||||
|
//
|
||||||
case F_LOCK_430:
|
// case F_LOCK_430:
|
||||||
if (Frequency >= frequencyBandTable[BAND3_137MHz].lower && Frequency < 17400000)
|
// if (Frequency >= frequencyBandTable[BAND3_137MHz].lower && Frequency < 17400000)
|
||||||
return 0;
|
// return 0;
|
||||||
if (Frequency >= 40000000 && Frequency < 43000000)
|
// if (Frequency >= 40000000 && Frequency < 43000000)
|
||||||
return 0;
|
// return 0;
|
||||||
break;
|
// break;
|
||||||
|
//
|
||||||
case F_LOCK_438:
|
// case F_LOCK_438:
|
||||||
if (Frequency >= frequencyBandTable[BAND3_137MHz].lower && Frequency < 17400000)
|
// if (Frequency >= frequencyBandTable[BAND3_137MHz].lower && Frequency < 17400000)
|
||||||
return 0;
|
// return 0;
|
||||||
if (Frequency >= 40000000 && Frequency < 43800000)
|
// if (Frequency >= 40000000 && Frequency < 43800000)
|
||||||
return 0;
|
// return 0;
|
||||||
break;
|
// break;
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_PMR
|
#ifdef ENABLE_FEAT_F4HWN_PMR
|
||||||
case F_LOCK_PMR:
|
case F_LOCK_PMR:
|
||||||
|
56
functions.c
56
functions.c
@@ -17,16 +17,24 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
|
|
||||||
#if defined(ENABLE_FMRADIO)
|
#if defined(ENABLE_FMRADIO)
|
||||||
|
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
#include "bsp/dp32g030/gpio.h"
|
#include "bsp/dp32g030/gpio.h"
|
||||||
#include "dcs.h"
|
#include "dcs.h"
|
||||||
#include "driver/backlight.h"
|
#include "driver/backlight.h"
|
||||||
|
|
||||||
#if defined(ENABLE_FMRADIO)
|
#if defined(ENABLE_FMRADIO)
|
||||||
|
|
||||||
#include "driver/bk1080.h"
|
#include "driver/bk1080.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "driver/bk4819.h"
|
#include "driver/bk4819.h"
|
||||||
#include "driver/gpio.h"
|
#include "driver/gpio.h"
|
||||||
#include "driver/system.h"
|
#include "driver/system.h"
|
||||||
@@ -39,18 +47,18 @@
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "ui/status.h"
|
#include "ui/status.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
#include "app/app.h"
|
||||||
|
|
||||||
|
|
||||||
FUNCTION_Type_t gCurrentFunction;
|
FUNCTION_Type_t gCurrentFunction;
|
||||||
|
|
||||||
bool FUNCTION_IsRx()
|
bool FUNCTION_IsRx() {
|
||||||
{
|
|
||||||
return gCurrentFunction == FUNCTION_MONITOR ||
|
return gCurrentFunction == FUNCTION_MONITOR ||
|
||||||
gCurrentFunction == FUNCTION_INCOMING ||
|
gCurrentFunction == FUNCTION_INCOMING ||
|
||||||
gCurrentFunction == FUNCTION_RECEIVE;
|
gCurrentFunction == FUNCTION_RECEIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FUNCTION_Init(void)
|
void FUNCTION_Init(void) {
|
||||||
{
|
|
||||||
g_CxCSS_TAIL_Found = false;
|
g_CxCSS_TAIL_Found = false;
|
||||||
g_CDCSS_Lost = false;
|
g_CDCSS_Lost = false;
|
||||||
g_CTCSS_Lost = false;
|
g_CTCSS_Lost = false;
|
||||||
@@ -86,8 +94,7 @@ void FUNCTION_Init(void)
|
|||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FUNCTION_Foreground(const FUNCTION_Type_t PreviousFunction)
|
void FUNCTION_Foreground(const FUNCTION_Type_t PreviousFunction) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
if (gDTMF_ReplyState != DTMF_REPLY_NONE)
|
if (gDTMF_ReplyState != DTMF_REPLY_NONE)
|
||||||
RADIO_PrepareCssTX();
|
RADIO_PrepareCssTX();
|
||||||
@@ -109,8 +116,7 @@ void FUNCTION_Foreground(const FUNCTION_Type_t PreviousFunction)
|
|||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT ||
|
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT ||
|
||||||
gDTMF_CallState == DTMF_CALL_STATE_RECEIVED ||
|
gDTMF_CallState == DTMF_CALL_STATE_RECEIVED ||
|
||||||
gDTMF_CallState == DTMF_CALL_STATE_RECEIVED_STAY)
|
gDTMF_CallState == DTMF_CALL_STATE_RECEIVED_STAY) {
|
||||||
{
|
|
||||||
gDTMF_auto_reset_time_500ms = gEeprom.DTMF_auto_reset_time * 2;
|
gDTMF_auto_reset_time_500ms = gEeprom.DTMF_auto_reset_time * 2;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -119,12 +125,9 @@ void FUNCTION_Foreground(const FUNCTION_Type_t PreviousFunction)
|
|||||||
|
|
||||||
void FUNCTION_PowerSave() {
|
void FUNCTION_PowerSave() {
|
||||||
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
||||||
if(gWakeUp)
|
if (gWakeUp) {
|
||||||
{
|
|
||||||
gPowerSave_10ms = gEeprom.BATTERY_SAVE * 200; // deep sleep now indexed on BatSav
|
gPowerSave_10ms = gEeprom.BATTERY_SAVE * 200; // deep sleep now indexed on BatSav
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
gPowerSave_10ms = gEeprom.BATTERY_SAVE * 10;
|
gPowerSave_10ms = gEeprom.BATTERY_SAVE * 10;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -147,9 +150,11 @@ void FUNCTION_PowerSave() {
|
|||||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FUNCTION_Transmit()
|
void FUNCTION_Transmit() {
|
||||||
{
|
|
||||||
// if DTMF is enabled when TX'ing, it changes the TX audio filtering !! .. 1of11
|
// if DTMF is enabled when TX'ing, it changes the TX audio filtering !! .. 1of11
|
||||||
|
|
||||||
|
MSG_EnableRX(false);
|
||||||
|
|
||||||
BK4819_DisableDTMF();
|
BK4819_DisableDTMF();
|
||||||
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
@@ -167,8 +172,7 @@ void FUNCTION_Transmit()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_ALARM
|
#ifdef ENABLE_ALARM
|
||||||
if (gAlarmState == ALARM_STATE_SITE_ALARM)
|
if (gAlarmState == ALARM_STATE_SITE_ALARM) {
|
||||||
{
|
|
||||||
GUI_DisplayScreen();
|
GUI_DisplayScreen();
|
||||||
|
|
||||||
AUDIO_AudioPathOff();
|
AUDIO_AudioPathOff();
|
||||||
@@ -206,8 +210,10 @@ void FUNCTION_Transmit()
|
|||||||
#if defined(ENABLE_ALARM) || defined(ENABLE_TX1750)
|
#if defined(ENABLE_ALARM) || defined(ENABLE_TX1750)
|
||||||
if (gAlarmState != ALARM_STATE_OFF) {
|
if (gAlarmState != ALARM_STATE_OFF) {
|
||||||
#ifdef ENABLE_TX1750
|
#ifdef ENABLE_TX1750
|
||||||
if (gAlarmState == ALARM_STATE_TX1750)
|
if (gAlarmState == ALARM_STATE_TX1750) {
|
||||||
BK4819_TransmitTone(true, 1750);
|
BK4819_TransmitTone(false, 1750);
|
||||||
|
gAlarmState = ALARM_STATE_OFF;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_ALARM
|
#ifdef ENABLE_ALARM
|
||||||
@@ -220,20 +226,18 @@ void FUNCTION_Transmit()
|
|||||||
SYSTEM_DelayMs(2);
|
SYSTEM_DelayMs(2);
|
||||||
AUDIO_AudioPathOn();
|
AUDIO_AudioPathOn();
|
||||||
gEnableSpeaker = true;
|
gEnableSpeaker = true;
|
||||||
|
BK4819_ExitTxMute();
|
||||||
|
|
||||||
gVfoConfigureMode = VFO_CONFIGURE;
|
gVfoConfigureMode = VFO_CONFIGURE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
BK4819_DisableScramble();
|
if (gCurrentVfo->SCRAMBLING_TYPE > 0)
|
||||||
#else
|
|
||||||
if (gCurrentVfo->SCRAMBLING_TYPE > 0 && gSetting_ScrambleEnable)
|
|
||||||
BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1);
|
BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1);
|
||||||
else
|
else
|
||||||
BK4819_DisableScramble();
|
BK4819_DisableScramble();
|
||||||
#endif
|
|
||||||
|
|
||||||
if (gSetting_backlight_on_tx_rx & BACKLIGHT_ON_TR_TX) {
|
if (gSetting_backlight_on_tx_rx & BACKLIGHT_ON_TR_TX) {
|
||||||
BACKLIGHT_TurnOn();
|
BACKLIGHT_TurnOn();
|
||||||
@@ -241,9 +245,7 @@ void FUNCTION_Transmit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void FUNCTION_Select(FUNCTION_Type_t Function) {
|
||||||
void FUNCTION_Select(FUNCTION_Type_t Function)
|
|
||||||
{
|
|
||||||
const FUNCTION_Type_t PreviousFunction = gCurrentFunction;
|
const FUNCTION_Type_t PreviousFunction = gCurrentFunction;
|
||||||
const bool bWasPowerSave = PreviousFunction == FUNCTION_POWER_SAVE;
|
const bool bWasPowerSave = PreviousFunction == FUNCTION_POWER_SAVE;
|
||||||
|
|
||||||
|
@@ -14,13 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef FUNCTIONS_H
|
#ifndef FUNCTIONS_H
|
||||||
#define FUNCTIONS_H
|
#define FUNCTIONS_H
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
enum FUNCTION_Type_t
|
enum FUNCTION_Type_t {
|
||||||
{
|
|
||||||
FUNCTION_FOREGROUND = 0, // ???
|
FUNCTION_FOREGROUND = 0, // ???
|
||||||
FUNCTION_TRANSMIT, // transmitting
|
FUNCTION_TRANSMIT, // transmitting
|
||||||
FUNCTION_MONITOR, // receiving with squelch forced open
|
FUNCTION_MONITOR, // receiving with squelch forced open
|
||||||
@@ -32,11 +32,12 @@ enum FUNCTION_Type_t
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef enum FUNCTION_Type_t FUNCTION_Type_t;
|
typedef enum FUNCTION_Type_t FUNCTION_Type_t;
|
||||||
|
|
||||||
extern FUNCTION_Type_t gCurrentFunction;
|
extern FUNCTION_Type_t gCurrentFunction;
|
||||||
|
|
||||||
void FUNCTION_Init(void);
|
void FUNCTION_Init(void);
|
||||||
|
|
||||||
void FUNCTION_Select(FUNCTION_Type_t Function);
|
void FUNCTION_Select(FUNCTION_Type_t Function);
|
||||||
|
|
||||||
bool FUNCTION_IsRx();
|
bool FUNCTION_IsRx();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -137,10 +137,6 @@ void BATTERY_GetReadings(const bool bDisplayBatteryLevel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((gScreenToDisplay == DISPLAY_MENU) && UI_MENU_GetCurrentMenuId() == MENU_VOL)
|
|
||||||
gUpdateDisplay = true;
|
|
||||||
|
|
||||||
if (gBatteryCurrent < 501)
|
if (gBatteryCurrent < 501)
|
||||||
{
|
{
|
||||||
if (gChargingWithTypeC)
|
if (gChargingWithTypeC)
|
||||||
|
50
main.c
50
main.c
@@ -19,7 +19,9 @@
|
|||||||
#include <stdio.h> // NULL
|
#include <stdio.h> // NULL
|
||||||
|
|
||||||
#ifdef ENABLE_AM_FIX
|
#ifdef ENABLE_AM_FIX
|
||||||
|
|
||||||
#include "am_fix.h"
|
#include "am_fix.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
@@ -31,13 +33,19 @@
|
|||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
|
|
||||||
#include "app/action.h"
|
#include "app/action.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_SPECTRUM
|
#ifdef ENABLE_SPECTRUM
|
||||||
|
|
||||||
#include "app/spectrum.h"
|
#include "app/spectrum.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "app/chFrScanner.h"
|
#include "app/chFrScanner.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "app/app.h"
|
#include "app/app.h"
|
||||||
@@ -51,8 +59,11 @@
|
|||||||
#include "driver/system.h"
|
#include "driver/system.h"
|
||||||
#include "driver/systick.h"
|
#include "driver/systick.h"
|
||||||
#include "driver/eeprom.h"
|
#include "driver/eeprom.h"
|
||||||
|
|
||||||
#ifdef ENABLE_UART
|
#ifdef ENABLE_UART
|
||||||
|
|
||||||
#include "driver/uart.h"
|
#include "driver/uart.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "helper/battery.h"
|
#include "helper/battery.h"
|
||||||
@@ -61,8 +72,8 @@
|
|||||||
#include "ui/lock.h"
|
#include "ui/lock.h"
|
||||||
#include "ui/welcome.h"
|
#include "ui/welcome.h"
|
||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
void _putchar(__attribute__((unused)) char c)
|
|
||||||
{
|
void _putchar(__attribute__((unused)) char c) {
|
||||||
|
|
||||||
#ifdef ENABLE_UART
|
#ifdef ENABLE_UART
|
||||||
UART_Send((uint8_t *) &c, 1);
|
UART_Send((uint8_t *) &c, 1);
|
||||||
@@ -70,8 +81,7 @@ void _putchar(__attribute__((unused)) char c)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Main(void)
|
void Main(void) {
|
||||||
{
|
|
||||||
// Enable clock gating of blocks we need
|
// Enable clock gating of blocks we need
|
||||||
SYSCON_DEV_CLK_GATE = 0
|
SYSCON_DEV_CLK_GATE = 0
|
||||||
| SYSCON_DEV_CLK_GATE_GPIOA_BITS_ENABLE
|
| SYSCON_DEV_CLK_GATE_GPIOA_BITS_ENABLE
|
||||||
@@ -157,8 +167,7 @@ void Main(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (BootMode == BOOT_MODE_F_LOCK)
|
if (BootMode == BOOT_MODE_F_LOCK) {
|
||||||
{
|
|
||||||
|
|
||||||
gF_LOCK = true; // flag to say include the hidden menu items
|
gF_LOCK = true; // flag to say include the hidden menu items
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
@@ -192,14 +201,12 @@ void Main(void)
|
|||||||
// wait for user to release all butts before moving on
|
// wait for user to release all butts before moving on
|
||||||
if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) ||
|
if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) ||
|
||||||
KEYBOARD_Poll() != KEY_INVALID ||
|
KEYBOARD_Poll() != KEY_INVALID ||
|
||||||
BootMode != BOOT_MODE_NORMAL)
|
BootMode != BOOT_MODE_NORMAL) { // keys are pressed
|
||||||
{ // keys are pressed
|
|
||||||
UI_DisplayReleaseKeys();
|
UI_DisplayReleaseKeys();
|
||||||
BACKLIGHT_TurnOn();
|
BACKLIGHT_TurnOn();
|
||||||
|
|
||||||
// 500ms
|
// 500ms
|
||||||
for (int i = 0; i < 50;)
|
for (int i = 0; i < 50;) {
|
||||||
{
|
|
||||||
i = (GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) && KEYBOARD_Poll() == KEY_INVALID) ? i + 1 : 0;
|
i = (GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) && KEYBOARD_Poll() == KEY_INVALID) ? i + 1 : 0;
|
||||||
SYSTEM_DelayMs(10);
|
SYSTEM_DelayMs(10);
|
||||||
}
|
}
|
||||||
@@ -208,8 +215,7 @@ void Main(void)
|
|||||||
gDebounceCounter = 0;
|
gDebounceCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gChargingWithTypeC && gBatteryDisplayLevel == 0)
|
if (!gChargingWithTypeC && gBatteryDisplayLevel == 0) {
|
||||||
{
|
|
||||||
FUNCTION_Select(FUNCTION_POWER_SAVE);
|
FUNCTION_Select(FUNCTION_POWER_SAVE);
|
||||||
|
|
||||||
if (gEeprom.BACKLIGHT_TIME < 61) // backlight is not set to be always on
|
if (gEeprom.BACKLIGHT_TIME < 61) // backlight is not set to be always on
|
||||||
@@ -218,29 +224,11 @@ void Main(void)
|
|||||||
BACKLIGHT_TurnOn(); // turn the backlight ON
|
BACKLIGHT_TurnOn(); // turn the backlight ON
|
||||||
|
|
||||||
gReducedService = true;
|
gReducedService = true;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
UI_DisplayWelcome();
|
UI_DisplayWelcome();
|
||||||
|
|
||||||
BACKLIGHT_TurnOn();
|
BACKLIGHT_TurnOn();
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
if (gEeprom.POWER_ON_DISPLAY_MODE != POWER_ON_DISPLAY_MODE_NONE && gEeprom.POWER_ON_DISPLAY_MODE != POWER_ON_DISPLAY_MODE_SOUND)
|
|
||||||
#else
|
|
||||||
if (gEeprom.POWER_ON_DISPLAY_MODE != POWER_ON_DISPLAY_MODE_NONE)
|
|
||||||
#endif
|
|
||||||
{ // 2.55 second boot-up screen
|
|
||||||
while (boot_counter_10ms > 0)
|
|
||||||
{
|
|
||||||
if (KEYBOARD_Poll() != KEY_INVALID)
|
|
||||||
{ // halt boot beeps
|
|
||||||
boot_counter_10ms = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RADIO_SetupRegisters(true);
|
RADIO_SetupRegisters(true);
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ENABLE_PWRON_PASSWORD
|
#ifdef ENABLE_PWRON_PASSWORD
|
||||||
if (gEeprom.POWER_ON_PASSWORD < 1000000)
|
if (gEeprom.POWER_ON_PASSWORD < 1000000)
|
||||||
|
7
misc.c
7
misc.c
@@ -91,16 +91,11 @@ const uint8_t gMicGain_dB2[5] = {3, 8, 16, 24, 31};
|
|||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
bool gSetting_350TX;
|
bool gSetting_350TX;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
|
||||||
bool gSetting_KILLED;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
bool gSetting_200TX;
|
bool gSetting_200TX;
|
||||||
bool gSetting_500TX;
|
bool gSetting_500TX;
|
||||||
#endif
|
#endif
|
||||||
bool gSetting_350EN;
|
bool gSetting_350EN = true;
|
||||||
uint8_t gSetting_F_LOCK;
|
uint8_t gSetting_F_LOCK;
|
||||||
bool gSetting_ScrambleEnable;
|
bool gSetting_ScrambleEnable;
|
||||||
|
|
||||||
|
5
misc.h
5
misc.h
@@ -143,11 +143,6 @@ extern const uint8_t gMicGain_dB2[5];
|
|||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
extern bool gSetting_350TX;
|
extern bool gSetting_350TX;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
|
||||||
extern bool gSetting_KILLED;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
extern bool gSetting_200TX;
|
extern bool gSetting_200TX;
|
||||||
extern bool gSetting_500TX;
|
extern bool gSetting_500TX;
|
||||||
|
11
radio.c
11
radio.c
@@ -272,13 +272,10 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure
|
|||||||
pVfo->StepFrequency = gStepFrequencyTable[tmp];
|
pVfo->StepFrequency = gStepFrequencyTable[tmp];
|
||||||
|
|
||||||
tmp = data[7];
|
tmp = data[7];
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
if (tmp > (ARRAY_SIZE(gSubMenu_SCRAMBLER) - 1))
|
if (tmp > (ARRAY_SIZE(gSubMenu_SCRAMBLER) - 1))
|
||||||
tmp = 0;
|
tmp = 0;
|
||||||
pVfo->SCRAMBLING_TYPE = tmp;
|
pVfo->SCRAMBLING_TYPE = tmp;
|
||||||
#else
|
//pVfo->SCRAMBLING_TYPE = 0;
|
||||||
pVfo->SCRAMBLING_TYPE = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pVfo->freq_config_RX.CodeType = (data[2] >> 0) & 0x0F;
|
pVfo->freq_config_RX.CodeType = (data[2] >> 0) & 0x0F;
|
||||||
pVfo->freq_config_TX.CodeType = (data[2] >> 4) & 0x0F;
|
pVfo->freq_config_TX.CodeType = (data[2] >> 4) & 0x0F;
|
||||||
@@ -817,14 +814,10 @@ void RADIO_SetupRegisters(bool switchToForeground)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
if (gRxVfo->SCRAMBLING_TYPE > 0)
|
||||||
if (gRxVfo->SCRAMBLING_TYPE > 0 && gSetting_ScrambleEnable)
|
|
||||||
BK4819_EnableScramble(gRxVfo->SCRAMBLING_TYPE - 1);
|
BK4819_EnableScramble(gRxVfo->SCRAMBLING_TYPE - 1);
|
||||||
else
|
else
|
||||||
BK4819_DisableScramble();
|
BK4819_DisableScramble();
|
||||||
#else
|
|
||||||
BK4819_DisableScramble();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
|
152
settings.c
152
settings.c
@@ -17,9 +17,11 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "driver/bk1080.h"
|
#include "driver/bk1080.h"
|
||||||
#include "driver/bk4819.h"
|
#include "driver/bk4819.h"
|
||||||
#include "driver/eeprom.h"
|
#include "driver/eeprom.h"
|
||||||
@@ -40,8 +42,7 @@ static const uint32_t gDefaultFrequencyTable[] =
|
|||||||
|
|
||||||
EEPROM_Config_t gEeprom = {0};
|
EEPROM_Config_t gEeprom = {0};
|
||||||
|
|
||||||
void SETTINGS_InitEEPROM(void)
|
void SETTINGS_InitEEPROM(void) {
|
||||||
{
|
|
||||||
uint8_t Data[16] = {0};
|
uint8_t Data[16] = {0};
|
||||||
// 0E70..0E77
|
// 0E70..0E77
|
||||||
EEPROM_ReadBuffer(0x0E70, Data, 8);
|
EEPROM_ReadBuffer(0x0E70, Data, 8);
|
||||||
@@ -141,12 +142,7 @@ void SETTINGS_InitEEPROM(void)
|
|||||||
gEeprom.KEY_2_LONG_PRESS_ACTION = (Data[4] < ACTION_OPT_LEN) ? Data[4] : ACTION_OPT_NONE;
|
gEeprom.KEY_2_LONG_PRESS_ACTION = (Data[4] < ACTION_OPT_LEN) ? Data[4] : ACTION_OPT_NONE;
|
||||||
gEeprom.SCAN_RESUME_MODE = (Data[5] < 105) ? Data[5] : 14;
|
gEeprom.SCAN_RESUME_MODE = (Data[5] < 105) ? Data[5] : 14;
|
||||||
gEeprom.AUTO_KEYPAD_LOCK = (Data[6] < 41) ? Data[6] : 0;
|
gEeprom.AUTO_KEYPAD_LOCK = (Data[6] < 41) ? Data[6] : 0;
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
gEeprom.FSKMode = Data[7];
|
||||||
gEeprom.POWER_ON_DISPLAY_MODE = (Data[7] < 6) ? Data[7] : POWER_ON_DISPLAY_MODE_VOLTAGE;
|
|
||||||
#else
|
|
||||||
gEeprom.POWER_ON_DISPLAY_MODE = (Data[7] < 4) ? Data[7] : POWER_ON_DISPLAY_MODE_VOLTAGE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// 0E98..0E9F
|
// 0E98..0E9F
|
||||||
#ifdef ENABLE_PWRON_PASSWORD
|
#ifdef ENABLE_PWRON_PASSWORD
|
||||||
EEPROM_ReadBuffer(0x0E98, Data, 8);
|
EEPROM_ReadBuffer(0x0E98, Data, 8);
|
||||||
@@ -162,8 +158,7 @@ void SETTINGS_InitEEPROM(void)
|
|||||||
if ((Data[1] < 200 && Data[1] > 90) && (Data[2] < Data[1] - 9 && Data[1] < 160 && Data[2] > 50)) {
|
if ((Data[1] < 200 && Data[1] > 90) && (Data[2] < Data[1] - 9 && Data[1] < 160 && Data[2] > 50)) {
|
||||||
gEeprom.S0_LEVEL = Data[1];
|
gEeprom.S0_LEVEL = Data[1];
|
||||||
gEeprom.S9_LEVEL = Data[2];
|
gEeprom.S9_LEVEL = Data[2];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
gEeprom.S0_LEVEL = 130;
|
gEeprom.S0_LEVEL = 130;
|
||||||
gEeprom.S9_LEVEL = 76;
|
gEeprom.S9_LEVEL = 76;
|
||||||
}
|
}
|
||||||
@@ -264,38 +259,38 @@ void SETTINGS_InitEEPROM(void)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Fix me probably after Chirp update...
|
// Fix me probably after Chirp update...
|
||||||
for (unsigned int i = 0; i < 3; i++)
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
{
|
|
||||||
gEeprom.SCAN_LIST_ENABLED[i] = (Data[1] >> i) & 1;
|
gEeprom.SCAN_LIST_ENABLED[i] = (Data[1] >> i) & 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned int i = 0; i < 3; i++)
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
{
|
|
||||||
const unsigned int j = 1 + (i * 2);
|
const unsigned int j = 1 + (i * 2);
|
||||||
gEeprom.SCANLIST_PRIORITY_CH1[i] = Data[j + 1];
|
gEeprom.SCANLIST_PRIORITY_CH1[i] = Data[j + 1];
|
||||||
gEeprom.SCANLIST_PRIORITY_CH2[i] = Data[j + 2];
|
gEeprom.SCANLIST_PRIORITY_CH2[i] = Data[j + 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EEPROM_ReadBuffer(0x0F20, Data, 8);
|
||||||
|
gEeprom.FSKSRCAddress = Data[0];
|
||||||
|
gEeprom.FSKSRCAddress |= Data[1] << 8;
|
||||||
|
gEeprom.FSKSRCAddress |= Data[2] << 16;
|
||||||
|
gEeprom.FSKSRCAddress |= Data[3] << 24;
|
||||||
|
|
||||||
// 0F40..0F47
|
// 0F40..0F47
|
||||||
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
||||||
gSetting_F_LOCK = (Data[0] < F_LOCK_LEN) ? Data[0] : F_LOCK_DEF;
|
gSetting_F_LOCK = (Data[0] < F_LOCK_LEN) ? Data[0] : F_LOCK_DEF;
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
gSetting_350TX = (Data[1] < 2) ? Data[1] : false; // was true
|
gSetting_350TX = (Data[1] < 2) ? Data[1] : false; // was true
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
|
||||||
gSetting_KILLED = (Data[2] < 2) ? Data[2] : false;
|
|
||||||
#endif
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
gSetting_200TX = (Data[3] < 2) ? Data[3] : false;
|
gSetting_200TX = (Data[3] < 2) ? Data[3] : false;
|
||||||
gSetting_500TX = (Data[4] < 2) ? Data[4] : false;
|
gSetting_500TX = (Data[4] < 2) ? Data[4] : false;
|
||||||
#endif
|
|
||||||
gSetting_350EN = (Data[5] < 2) ? Data[5] : true;
|
gSetting_350EN = (Data[5] < 2) ? Data[5] : true;
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
gSetting_ScrambleEnable = false;
|
|
||||||
#else
|
#else
|
||||||
gSetting_ScrambleEnable = (Data[6] < 2) ? Data[6] : true;
|
gSetting_350EN = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
gSetting_ScrambleEnable = true;
|
||||||
|
|
||||||
//gSetting_TX_EN = (Data[7] & (1u << 0)) ? true : false;
|
//gSetting_TX_EN = (Data[7] & (1u << 0)) ? true : false;
|
||||||
gSetting_live_DTMF_decoder = !!(Data[7] & (1u << 1));
|
gSetting_live_DTMF_decoder = !!(Data[7] & (1u << 1));
|
||||||
gSetting_battery_text = (((Data[7] >> 2) & 3u) <= 2) ? (Data[7] >> 2) & 3 : 2;
|
gSetting_battery_text = (((Data[7] >> 2) & 3u) <= 2) ? (Data[7] >> 2) & 3 : 2;
|
||||||
@@ -309,8 +304,7 @@ void SETTINGS_InitEEPROM(void)
|
|||||||
#endif
|
#endif
|
||||||
gSetting_backlight_on_tx_rx = (Data[7] >> 6) & 3u;
|
gSetting_backlight_on_tx_rx = (Data[7] >> 6) & 3u;
|
||||||
|
|
||||||
if (!gEeprom.VFO_OPEN)
|
if (!gEeprom.VFO_OPEN) {
|
||||||
{
|
|
||||||
gEeprom.ScreenChannel[0] = gEeprom.MrChannel[0];
|
gEeprom.ScreenChannel[0] = gEeprom.MrChannel[0];
|
||||||
gEeprom.ScreenChannel[1] = gEeprom.MrChannel[1];
|
gEeprom.ScreenChannel[1] = gEeprom.MrChannel[1];
|
||||||
}
|
}
|
||||||
@@ -394,8 +388,7 @@ void SETTINGS_InitEEPROM(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_LoadCalibration(void)
|
void SETTINGS_LoadCalibration(void) {
|
||||||
{
|
|
||||||
// uint8_t Mic;
|
// uint8_t Mic;
|
||||||
|
|
||||||
EEPROM_ReadBuffer(0x1EC0, gEEPROM_RSSI_CALIB[3], 8);
|
EEPROM_ReadBuffer(0x1EC0, gEEPROM_RSSI_CALIB[3], 8);
|
||||||
@@ -408,8 +401,7 @@ void SETTINGS_LoadCalibration(void)
|
|||||||
memcpy(gEEPROM_RSSI_CALIB[2], gEEPROM_RSSI_CALIB[0], 8);
|
memcpy(gEEPROM_RSSI_CALIB[2], gEEPROM_RSSI_CALIB[0], 8);
|
||||||
|
|
||||||
EEPROM_ReadBuffer(0x1F40, gBatteryCalibration, 12);
|
EEPROM_ReadBuffer(0x1F40, gBatteryCalibration, 12);
|
||||||
if (gBatteryCalibration[0] >= 5000)
|
if (gBatteryCalibration[0] >= 5000) {
|
||||||
{
|
|
||||||
gBatteryCalibration[0] = 1900;
|
gBatteryCalibration[0] = 1900;
|
||||||
gBatteryCalibration[1] = 2000;
|
gBatteryCalibration[1] = 2000;
|
||||||
}
|
}
|
||||||
@@ -425,8 +417,7 @@ void SETTINGS_LoadCalibration(void)
|
|||||||
gEeprom.MIC_SENSITIVITY_TUNING = gMicGain_dB2[gEeprom.MIC_SENSITIVITY];
|
gEeprom.MIC_SENSITIVITY_TUNING = gMicGain_dB2[gEeprom.MIC_SENSITIVITY];
|
||||||
|
|
||||||
{
|
{
|
||||||
struct
|
struct {
|
||||||
{
|
|
||||||
int16_t BK4819_XtalFreqLow;
|
int16_t BK4819_XtalFreqLow;
|
||||||
uint16_t EEPROM_1F8A;
|
uint16_t EEPROM_1F8A;
|
||||||
uint16_t EEPROM_1F8C;
|
uint16_t EEPROM_1F8C;
|
||||||
@@ -438,7 +429,8 @@ void SETTINGS_LoadCalibration(void)
|
|||||||
// radio 2 .. 05 00 46 00 50 00 2C 0E
|
// radio 2 .. 05 00 46 00 50 00 2C 0E
|
||||||
EEPROM_ReadBuffer(0x1F88, &Misc, 8);
|
EEPROM_ReadBuffer(0x1F88, &Misc, 8);
|
||||||
|
|
||||||
gEeprom.BK4819_XTAL_FREQ_LOW = (Misc.BK4819_XtalFreqLow >= -1000 && Misc.BK4819_XtalFreqLow <= 1000) ? Misc.BK4819_XtalFreqLow : 0;
|
gEeprom.BK4819_XTAL_FREQ_LOW = (Misc.BK4819_XtalFreqLow >= -1000 && Misc.BK4819_XtalFreqLow <= 1000)
|
||||||
|
? Misc.BK4819_XtalFreqLow : 0;
|
||||||
gEEPROM_1F8A = Misc.EEPROM_1F8A & 0x01FF;
|
gEEPROM_1F8A = Misc.EEPROM_1F8A & 0x01FF;
|
||||||
gEEPROM_1F8C = Misc.EEPROM_1F8C & 0x01FF;
|
gEEPROM_1F8C = Misc.EEPROM_1F8C & 0x01FF;
|
||||||
gEeprom.VOLUME_GAIN = (Misc.VOLUME_GAIN < 64) ? Misc.VOLUME_GAIN : 58;
|
gEeprom.VOLUME_GAIN = (Misc.VOLUME_GAIN < 64) ? Misc.VOLUME_GAIN : 58;
|
||||||
@@ -453,10 +445,8 @@ void SETTINGS_LoadCalibration(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t SETTINGS_FetchChannelFrequency(const int channel)
|
uint32_t SETTINGS_FetchChannelFrequency(const int channel) {
|
||||||
{
|
struct {
|
||||||
struct
|
|
||||||
{
|
|
||||||
uint32_t frequency;
|
uint32_t frequency;
|
||||||
uint32_t offset;
|
uint32_t offset;
|
||||||
} __attribute__((packed)) info;
|
} __attribute__((packed)) info;
|
||||||
@@ -466,8 +456,7 @@ uint32_t SETTINGS_FetchChannelFrequency(const int channel)
|
|||||||
return info.frequency;
|
return info.frequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_FetchChannelName(char *s, const int channel)
|
void SETTINGS_FetchChannelName(char *s, const int channel) {
|
||||||
{
|
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -492,16 +481,14 @@ void SETTINGS_FetchChannelName(char *s, const int channel)
|
|||||||
s[i--] = 0; // null term
|
s[i--] = 0; // null term
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_FactoryReset(bool bIsAll)
|
void SETTINGS_FactoryReset(bool bIsAll) {
|
||||||
{
|
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
uint8_t Template[8];
|
uint8_t Template[8];
|
||||||
|
|
||||||
memset(Template, 0xFF, sizeof(Template));
|
memset(Template, 0xFF, sizeof(Template));
|
||||||
|
|
||||||
//for (i = 0x0C80; i < 0x1E00; i += 8)
|
//for (i = 0x0C80; i < 0x1E00; i += 8)
|
||||||
for (i = 0x0000; i < 0x1E00; i += 8)
|
for (i = 0x0000; i < 0x1E00; i += 8) {
|
||||||
{
|
|
||||||
if (
|
if (
|
||||||
!(i >= 0x0EE0 && i < 0x0F18) && // ANI ID + DTMF codes
|
!(i >= 0x0EE0 && i < 0x0F18) && // ANI ID + DTMF codes
|
||||||
!(i >= 0x0F30 && i < 0x0F50) && // AES KEY + F LOCK + Scramble Enable
|
!(i >= 0x0F30 && i < 0x0F50) && // AES KEY + F LOCK + Scramble Enable
|
||||||
@@ -516,14 +503,12 @@ void SETTINGS_FactoryReset(bool bIsAll)
|
|||||||
!(i >= 0x0E40 && i < 0x0E70) && // FM Channels
|
!(i >= 0x0E40 && i < 0x0E70) && // FM Channels
|
||||||
!(i >= 0x0E88 && i < 0x0E90) // FM settings
|
!(i >= 0x0E88 && i < 0x0E90) // FM settings
|
||||||
))
|
))
|
||||||
)
|
) {
|
||||||
{
|
|
||||||
EEPROM_WriteBuffer(i, Template);
|
EEPROM_WriteBuffer(i, Template);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bIsAll)
|
if (bIsAll) {
|
||||||
{
|
|
||||||
RADIO_InitInfo(gRxVfo, FREQ_CHANNEL_FIRST + BAND6_400MHz, 43350000);
|
RADIO_InitInfo(gRxVfo, FREQ_CHANNEL_FIRST + BAND6_400MHz, 43350000);
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESET_CHANNEL
|
#ifdef ENABLE_FEAT_F4HWN_RESET_CHANNEL
|
||||||
@@ -571,8 +556,7 @@ void SETTINGS_SaveFM(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void SETTINGS_SaveVfoIndices(void)
|
void SETTINGS_SaveVfoIndices(void) {
|
||||||
{
|
|
||||||
uint8_t State[8];
|
uint8_t State[8];
|
||||||
|
|
||||||
#ifndef ENABLE_NOAA
|
#ifndef ENABLE_NOAA
|
||||||
@@ -593,8 +577,7 @@ void SETTINGS_SaveVfoIndices(void)
|
|||||||
EEPROM_WriteBuffer(0x0E80, State);
|
EEPROM_WriteBuffer(0x0E80, State);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_SaveSettings(void)
|
void SETTINGS_SaveSettings(void) {
|
||||||
{
|
|
||||||
uint8_t State[8];
|
uint8_t State[8];
|
||||||
uint8_t tmp = 0;
|
uint8_t tmp = 0;
|
||||||
|
|
||||||
@@ -634,17 +617,13 @@ void SETTINGS_SaveSettings(void)
|
|||||||
State[4] = gEeprom.DUAL_WATCH;
|
State[4] = gEeprom.DUAL_WATCH;
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if(!gSaveRxMode)
|
if (!gSaveRxMode) {
|
||||||
{
|
|
||||||
State[2] = gCB;
|
State[2] = gCB;
|
||||||
State[4] = gDW;
|
State[4] = gDW;
|
||||||
}
|
}
|
||||||
if(gBackLight)
|
if (gBackLight) {
|
||||||
{
|
|
||||||
State[5] = gBacklightTimeOriginal;
|
State[5] = gBacklightTimeOriginal;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
State[5] = gEeprom.BACKLIGHT_TIME;
|
State[5] = gEeprom.BACKLIGHT_TIME;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -658,7 +637,8 @@ void SETTINGS_SaveSettings(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
||||||
State[7] = (gEeprom.VFO_OPEN & 0x01) | ((gEeprom.CURRENT_STATE & 0x07) << 1) | ((gEeprom.SCAN_LIST_DEFAULT & 0x07) << 4);
|
State[7] = (gEeprom.VFO_OPEN & 0x01) | ((gEeprom.CURRENT_STATE & 0x07) << 1) |
|
||||||
|
((gEeprom.SCAN_LIST_DEFAULT & 0x07) << 4);
|
||||||
#else
|
#else
|
||||||
State[7] = gEeprom.VFO_OPEN;
|
State[7] = gEeprom.VFO_OPEN;
|
||||||
#endif
|
#endif
|
||||||
@@ -672,7 +652,7 @@ void SETTINGS_SaveSettings(void)
|
|||||||
State[4] = gEeprom.KEY_2_LONG_PRESS_ACTION;
|
State[4] = gEeprom.KEY_2_LONG_PRESS_ACTION;
|
||||||
State[5] = gEeprom.SCAN_RESUME_MODE;
|
State[5] = gEeprom.SCAN_RESUME_MODE;
|
||||||
State[6] = gEeprom.AUTO_KEYPAD_LOCK;
|
State[6] = gEeprom.AUTO_KEYPAD_LOCK;
|
||||||
State[7] = gEeprom.POWER_ON_DISPLAY_MODE;
|
State[7] = gEeprom.FSKMode;
|
||||||
EEPROM_WriteBuffer(0x0E90, State);
|
EEPROM_WriteBuffer(0x0E90, State);
|
||||||
|
|
||||||
#ifdef ENABLE_PWRON_PASSWORD
|
#ifdef ENABLE_PWRON_PASSWORD
|
||||||
@@ -743,24 +723,24 @@ void SETTINGS_SaveSettings(void)
|
|||||||
State[7] = gEeprom.SCANLIST_PRIORITY_CH2[2];
|
State[7] = gEeprom.SCANLIST_PRIORITY_CH2[2];
|
||||||
EEPROM_WriteBuffer(0x0F18, State);
|
EEPROM_WriteBuffer(0x0F18, State);
|
||||||
|
|
||||||
|
State[0] = gEeprom.FSKSRCAddress & 0xFF;
|
||||||
|
State[1] = (gEeprom.FSKSRCAddress >> 8) & 0xFF;
|
||||||
|
State[2] = (gEeprom.FSKSRCAddress >> 16) & 0xFF;
|
||||||
|
State[3] = (gEeprom.FSKSRCAddress >> 24) & 0xFF;
|
||||||
|
EEPROM_WriteBuffer(0x0F20, State);
|
||||||
|
|
||||||
memset(State, 0xFF, sizeof(State));
|
memset(State, 0xFF, sizeof(State));
|
||||||
State[0] = gSetting_F_LOCK;
|
State[0] = gSetting_F_LOCK;
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
State[1] = gSetting_350TX;
|
State[1] = gSetting_350TX;
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
|
||||||
State[2] = gSetting_KILLED;
|
|
||||||
#endif
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
State[3] = gSetting_200TX;
|
State[3] = gSetting_200TX;
|
||||||
State[4] = gSetting_500TX;
|
State[4] = gSetting_500TX;
|
||||||
#endif
|
#endif
|
||||||
State[5] = gSetting_350EN;
|
State[5] = gSetting_350EN;
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
State[6] = false;
|
|
||||||
#else
|
|
||||||
State[6] = gSetting_ScrambleEnable;
|
State[6] = gSetting_ScrambleEnable;
|
||||||
#endif
|
|
||||||
|
|
||||||
//if (!gSetting_TX_EN) State[7] &= ~(1u << 0);
|
//if (!gSetting_TX_EN) State[7] &= ~(1u << 0);
|
||||||
if (!gSetting_live_DTMF_decoder) State[7] &= ~(1u << 1);
|
if (!gSetting_live_DTMF_decoder) State[7] &= ~(1u << 1);
|
||||||
@@ -827,8 +807,7 @@ void SETTINGS_SaveSettings(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode)
|
void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
if (IS_NOAA_CHANNEL(Channel))
|
if (IS_NOAA_CHANNEL(Channel))
|
||||||
return;
|
return;
|
||||||
@@ -867,11 +846,8 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
|||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
State._8[6] = pVFO->STEP_SETTING;
|
State._8[6] = pVFO->STEP_SETTING;
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
State._8[7] = 0;
|
|
||||||
#else
|
|
||||||
State._8[7] = pVFO->SCRAMBLING_TYPE;
|
State._8[7] = pVFO->SCRAMBLING_TYPE;
|
||||||
#endif
|
|
||||||
EEPROM_WriteBuffer(OffsetVFO + 8, State._8);
|
EEPROM_WriteBuffer(OffsetVFO + 8, State._8);
|
||||||
|
|
||||||
SETTINGS_UpdateChannel(Channel, pVFO, true, true, true);
|
SETTINGS_UpdateChannel(Channel, pVFO, true, true, true);
|
||||||
@@ -890,8 +866,7 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_SaveBatteryCalibration(const uint16_t * batteryCalibration)
|
void SETTINGS_SaveBatteryCalibration(const uint16_t *batteryCalibration) {
|
||||||
{
|
|
||||||
uint16_t buf[4];
|
uint16_t buf[4];
|
||||||
EEPROM_WriteBuffer(0x1F40, batteryCalibration);
|
EEPROM_WriteBuffer(0x1F40, batteryCalibration);
|
||||||
EEPROM_ReadBuffer(0x1F48, buf, sizeof(buf));
|
EEPROM_ReadBuffer(0x1F48, buf, sizeof(buf));
|
||||||
@@ -900,8 +875,7 @@ void SETTINGS_SaveBatteryCalibration(const uint16_t * batteryCalibration)
|
|||||||
EEPROM_WriteBuffer(0x1F48, buf);
|
EEPROM_WriteBuffer(0x1F48, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_SaveChannelName(uint8_t channel, const char * name)
|
void SETTINGS_SaveChannelName(uint8_t channel, const char *name) {
|
||||||
{
|
|
||||||
uint16_t offset = channel * 16;
|
uint16_t offset = channel * 16;
|
||||||
uint8_t buf[16] = {0};
|
uint8_t buf[16] = {0};
|
||||||
memcpy(buf, name, MIN(strlen(name), 10u));
|
memcpy(buf, name, MIN(strlen(name), 10u));
|
||||||
@@ -909,8 +883,7 @@ void SETTINGS_SaveChannelName(uint8_t channel, const char * name)
|
|||||||
EEPROM_WriteBuffer(0x0F58 + offset, buf + 8);
|
EEPROM_WriteBuffer(0x0F58 + offset, buf + 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep, bool check, bool save)
|
void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep, bool check, bool save) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
if (!IS_NOAA_CHANNEL(channel))
|
if (!IS_NOAA_CHANNEL(channel))
|
||||||
#endif
|
#endif
|
||||||
@@ -940,8 +913,7 @@ void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep,
|
|||||||
state[channel & 7u] = att.__val;
|
state[channel & 7u] = att.__val;
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if(save)
|
if (save) {
|
||||||
{
|
|
||||||
EEPROM_WriteBuffer(offset, state);
|
EEPROM_WriteBuffer(offset, state);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -959,8 +931,7 @@ void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SETTINGS_WriteBuildOptions(void)
|
void SETTINGS_WriteBuildOptions(void) {
|
||||||
{
|
|
||||||
uint8_t State[8];
|
uint8_t State[8];
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
@@ -1021,36 +992,39 @@ State[1] = 0
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
||||||
void SETTINGS_WriteCurrentState(void)
|
|
||||||
{
|
void SETTINGS_WriteCurrentState(void) {
|
||||||
uint8_t State[8];
|
uint8_t State[8];
|
||||||
EEPROM_ReadBuffer(0x0E78, State, sizeof(State));
|
EEPROM_ReadBuffer(0x0E78, State, sizeof(State));
|
||||||
//State[3] = (gEeprom.CURRENT_STATE << 4) | (gEeprom.BATTERY_SAVE & 0x0F);
|
//State[3] = (gEeprom.CURRENT_STATE << 4) | (gEeprom.BATTERY_SAVE & 0x0F);
|
||||||
State[7] = (gEeprom.VFO_OPEN & 0x01) | ((gEeprom.CURRENT_STATE & 0x07) << 1) | ((gEeprom.SCAN_LIST_DEFAULT & 0x07) << 4);
|
State[7] = (gEeprom.VFO_OPEN & 0x01) | ((gEeprom.CURRENT_STATE & 0x07) << 1) |
|
||||||
|
((gEeprom.SCAN_LIST_DEFAULT & 0x07) << 4);
|
||||||
EEPROM_WriteBuffer(0x0E78, State);
|
EEPROM_WriteBuffer(0x0E78, State);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_VOL
|
#ifdef ENABLE_FEAT_F4HWN_VOL
|
||||||
void SETTINGS_WriteCurrentVol(void)
|
|
||||||
{
|
void SETTINGS_WriteCurrentVol(void) {
|
||||||
uint8_t State[8];
|
uint8_t State[8];
|
||||||
EEPROM_ReadBuffer(0x1F88, State, sizeof(State));
|
EEPROM_ReadBuffer(0x1F88, State, sizeof(State));
|
||||||
State[6] = gEeprom.VOLUME_GAIN;
|
State[6] = gEeprom.VOLUME_GAIN;
|
||||||
EEPROM_WriteBuffer(0x1F88, State);
|
EEPROM_WriteBuffer(0x1F88, State);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
void SETTINGS_ResetTxLock(void)
|
|
||||||
{
|
void SETTINGS_ResetTxLock(void) {
|
||||||
uint8_t State[8];
|
uint8_t State[8];
|
||||||
for(uint8_t channel = 0; channel < 200; channel++)
|
for (uint8_t channel = 0; channel < 200; channel++) {
|
||||||
{
|
|
||||||
uint16_t OffsetVFO = channel * 16;
|
uint16_t OffsetVFO = channel * 16;
|
||||||
EEPROM_ReadBuffer(OffsetVFO + 8, State, sizeof(State));
|
EEPROM_ReadBuffer(OffsetVFO + 8, State, sizeof(State));
|
||||||
State[4] |= (1 << 6);
|
State[4] |= (1 << 6);
|
||||||
EEPROM_WriteBuffer(OffsetVFO + 8, State);
|
EEPROM_WriteBuffer(OffsetVFO + 8, State);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
38
settings.h
38
settings.h
@@ -23,8 +23,20 @@
|
|||||||
#include "frequencies.h"
|
#include "frequencies.h"
|
||||||
#include <helper/battery.h>
|
#include <helper/battery.h>
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
|
#include "functions.h"
|
||||||
|
#include "app/fskmodem.h"
|
||||||
#include <driver/backlight.h>
|
#include <driver/backlight.h>
|
||||||
|
|
||||||
|
// Modem Modulation
|
||||||
|
typedef enum ModemModulation {
|
||||||
|
MOD_FSK_450, // for bad conditions
|
||||||
|
MOD_FSK_700, // for medium conditions
|
||||||
|
MOD_AFSK_1200, // for good conditions
|
||||||
|
MOD_AFSK_2400,
|
||||||
|
MOD_FSK_1200_2400,
|
||||||
|
MOD_NOAA_SAME
|
||||||
|
} ModemModulation;
|
||||||
|
|
||||||
enum POWER_OnDisplayMode_t {
|
enum POWER_OnDisplayMode_t {
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
POWER_ON_DISPLAY_MODE_ALL,
|
POWER_ON_DISPLAY_MODE_ALL,
|
||||||
@@ -40,14 +52,14 @@ typedef enum POWER_OnDisplayMode_t POWER_OnDisplayMode_t;
|
|||||||
|
|
||||||
enum TxLockModes_t {
|
enum TxLockModes_t {
|
||||||
F_LOCK_DEF, //all default frequencies + configurable
|
F_LOCK_DEF, //all default frequencies + configurable
|
||||||
F_LOCK_FCC,
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_CA
|
#ifdef ENABLE_FEAT_F4HWN_CA
|
||||||
|
F_LOCK_FCC,
|
||||||
F_LOCK_CA,
|
F_LOCK_CA,
|
||||||
#endif
|
|
||||||
F_LOCK_CE,
|
F_LOCK_CE,
|
||||||
F_LOCK_GB,
|
F_LOCK_GB,
|
||||||
F_LOCK_430,
|
F_LOCK_430,
|
||||||
F_LOCK_438,
|
F_LOCK_438,
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_PMR
|
#ifdef ENABLE_FEAT_F4HWN_PMR
|
||||||
F_LOCK_PMR,
|
F_LOCK_PMR,
|
||||||
#endif
|
#endif
|
||||||
@@ -302,32 +314,54 @@ typedef struct {
|
|||||||
uint8_t S0_LEVEL;
|
uint8_t S0_LEVEL;
|
||||||
uint8_t S9_LEVEL;
|
uint8_t S9_LEVEL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ModemModulation FSKMode;
|
||||||
|
uint32_t FSKSRCAddress;
|
||||||
} EEPROM_Config_t;
|
} EEPROM_Config_t;
|
||||||
|
|
||||||
extern EEPROM_Config_t gEeprom;
|
extern EEPROM_Config_t gEeprom;
|
||||||
|
|
||||||
void SETTINGS_InitEEPROM(void);
|
void SETTINGS_InitEEPROM(void);
|
||||||
|
|
||||||
void SETTINGS_LoadCalibration(void);
|
void SETTINGS_LoadCalibration(void);
|
||||||
|
|
||||||
uint32_t SETTINGS_FetchChannelFrequency(const int channel);
|
uint32_t SETTINGS_FetchChannelFrequency(const int channel);
|
||||||
|
|
||||||
void SETTINGS_FetchChannelName(char *s, const int channel);
|
void SETTINGS_FetchChannelName(char *s, const int channel);
|
||||||
|
|
||||||
void SETTINGS_FactoryReset(bool bIsAll);
|
void SETTINGS_FactoryReset(bool bIsAll);
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
void SETTINGS_SaveFM(void);
|
void SETTINGS_SaveFM(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void SETTINGS_SaveVfoIndices(void);
|
void SETTINGS_SaveVfoIndices(void);
|
||||||
|
|
||||||
void SETTINGS_SaveSettings(void);
|
void SETTINGS_SaveSettings(void);
|
||||||
|
|
||||||
void SETTINGS_SaveChannelName(uint8_t channel, const char *name);
|
void SETTINGS_SaveChannelName(uint8_t channel, const char *name);
|
||||||
|
|
||||||
void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode);
|
void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode);
|
||||||
|
|
||||||
void SETTINGS_SaveBatteryCalibration(const uint16_t *batteryCalibration);
|
void SETTINGS_SaveBatteryCalibration(const uint16_t *batteryCalibration);
|
||||||
|
|
||||||
void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep, bool check, bool save);
|
void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep, bool check, bool save);
|
||||||
|
|
||||||
void SETTINGS_WriteBuildOptions(void);
|
void SETTINGS_WriteBuildOptions(void);
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
||||||
|
|
||||||
void SETTINGS_WriteCurrentState(void);
|
void SETTINGS_WriteCurrentState(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_VOL
|
#ifdef ENABLE_FEAT_F4HWN_VOL
|
||||||
|
|
||||||
void SETTINGS_WriteCurrentVol(void);
|
void SETTINGS_WriteCurrentVol(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
|
|
||||||
void SETTINGS_ResetTxLock(void);
|
void SETTINGS_ResetTxLock(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@@ -61,11 +61,13 @@ void UI_DisplayAircopy(void)
|
|||||||
UI_PrintStringSmallNormal(String + 7, 97, 0, 3);
|
UI_PrintStringSmallNormal(String + 7, 97, 0, 3);
|
||||||
String[7] = 0;
|
String[7] = 0;
|
||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 16, 2, false);
|
//UI_DisplayFrequency(String, 16, 2, false);
|
||||||
|
UI_PrintStringSmallNormal(String, 0, 20, 2);
|
||||||
} else {
|
} else {
|
||||||
const char *ascii = INPUTBOX_GetAscii();
|
const char *ascii = INPUTBOX_GetAscii();
|
||||||
sprintf(String, "%.3s.%.3s", ascii, ascii + 3);
|
sprintf(String, "%.3s.%.3s", ascii, ascii + 3);
|
||||||
UI_DisplayFrequency(String, 16, 2, false);
|
//UI_DisplayFrequency(String, 16, 2, false);
|
||||||
|
UI_PrintStringSmallNormal(String, 0, 20, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
|
14
ui/fmradio.c
14
ui/fmradio.c
@@ -50,7 +50,7 @@ void UI_DisplayFM(void)
|
|||||||
//UI_PrintStringSmallNormal(String, 127 - 4*7, 0, 6);
|
//UI_PrintStringSmallNormal(String, 127 - 4*7, 0, 6);
|
||||||
|
|
||||||
if (gAskToSave) {
|
if (gAskToSave) {
|
||||||
pPrintStr = "SAVE?";
|
pPrintStr = "SAV?";
|
||||||
} else if (gAskToDelete) {
|
} else if (gAskToDelete) {
|
||||||
pPrintStr = "DEL?";
|
pPrintStr = "DEL?";
|
||||||
} else if (gFM_ScanState == FM_SCAN_OFF) {
|
} else if (gFM_ScanState == FM_SCAN_OFF) {
|
||||||
@@ -61,26 +61,26 @@ void UI_DisplayFM(void)
|
|||||||
pPrintStr = "VFO";
|
pPrintStr = "VFO";
|
||||||
for (unsigned int i = 0; i < 20; i++) {
|
for (unsigned int i = 0; i < 20; i++) {
|
||||||
if (gEeprom.FM_FrequencyPlaying == gFM_Channels[i]) {
|
if (gEeprom.FM_FrequencyPlaying == gFM_Channels[i]) {
|
||||||
sprintf(String, "VFO(CH%02u)", i + 1);
|
sprintf(String, "VF(C%02u)", i + 1);
|
||||||
pPrintStr = String;
|
pPrintStr = String;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (gFM_AutoScan) {
|
} else if (gFM_AutoScan) {
|
||||||
sprintf(String, "A-SCAN(%u)", gFM_ChannelPosition + 1);
|
sprintf(String, "A-SCN(%u)", gFM_ChannelPosition + 1);
|
||||||
pPrintStr = String;
|
pPrintStr = String;
|
||||||
} else {
|
} else {
|
||||||
pPrintStr = "M-SCAN";
|
pPrintStr = "M-SCN";
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_PrintString(pPrintStr, 0, 127, 3, 10); // memory, vfo, scan
|
UI_PrintString(pPrintStr, 0, 127, 3, 12); // memory, vfo, scan
|
||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
if (gAskToSave || (gEeprom.FM_IsMrMode && gInputBoxIndex > 0)) {
|
if (gAskToSave || (gEeprom.FM_IsMrMode && gInputBoxIndex > 0)) {
|
||||||
UI_GenerateChannelString(String, gFM_ChannelPosition);
|
UI_GenerateChannelString(String, gFM_ChannelPosition);
|
||||||
} else if (gAskToDelete) {
|
} else if (gAskToDelete) {
|
||||||
sprintf(String, "CH-%02u", gEeprom.FM_SelectedChannel + 1);
|
sprintf(String, "C-%02u", gEeprom.FM_SelectedChannel + 1);
|
||||||
} else {
|
} else {
|
||||||
if (gInputBoxIndex == 0) {
|
if (gInputBoxIndex == 0) {
|
||||||
sprintf(String, " %3d.%d", gEeprom.FM_FrequencyPlaying / 10, gEeprom.FM_FrequencyPlaying % 10);
|
sprintf(String, " %3d.%d", gEeprom.FM_FrequencyPlaying / 10, gEeprom.FM_FrequencyPlaying % 10);
|
||||||
@@ -89,7 +89,7 @@ void UI_DisplayFM(void)
|
|||||||
sprintf(String, "%.3s.%.1s",ascii, ascii + 3);
|
sprintf(String, "%.3s.%.1s",ascii, ascii + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_DisplayFrequency(String, 36, 1, gInputBoxIndex == 0); // frequency
|
UI_PrintString(String, 0, 20, 1, 10); // frequency
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
213
ui/helper.c
213
ui/helper.c
@@ -27,12 +27,10 @@
|
|||||||
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
|
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void UI_GenerateChannelString(char *pString, const uint8_t Channel)
|
void UI_GenerateChannelString(char *pString, const uint8_t Channel) {
|
||||||
{
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (gInputBoxIndex == 0)
|
if (gInputBoxIndex == 0) {
|
||||||
{
|
|
||||||
sprintf(pString, "CH-%02u", Channel + 1);
|
sprintf(pString, "CH-%02u", Channel + 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -44,8 +42,7 @@ void UI_GenerateChannelString(char *pString, const uint8_t Channel)
|
|||||||
pString[i + 3] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
|
pString[i + 3] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_GenerateChannelStringEx(char *pString, const bool bShowPrefix, const uint8_t ChannelNumber)
|
void UI_GenerateChannelStringEx(char *pString, const bool bShowPrefix, const uint8_t ChannelNumber) {
|
||||||
{
|
|
||||||
if (gInputBoxIndex > 0) {
|
if (gInputBoxIndex > 0) {
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
pString[i] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
|
pString[i] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
|
||||||
@@ -65,41 +62,38 @@ void UI_GenerateChannelStringEx(char *pString, const bool bShowPrefix, const uin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_PrintStringBuffer(const char *pString, uint8_t * buffer, uint32_t char_width, const uint8_t *font)
|
void *memcpy_inv(void *dst, const void *src, size_t n) {
|
||||||
{
|
if (!dst || !src) return dst;
|
||||||
|
|
||||||
|
uint8_t *d = (uint8_t *) dst;
|
||||||
|
const uint8_t *s = (const uint8_t *) src;
|
||||||
|
|
||||||
|
while (n--) {
|
||||||
|
*d++ = ~(*s++);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UI_PrintStringBuffer(const char *pString, uint8_t *buffer, uint32_t char_width, const uint8_t *font, bool inv) {
|
||||||
const size_t Length = strlen(pString);
|
const size_t Length = strlen(pString);
|
||||||
const unsigned int char_spacing = char_width + 1;
|
const unsigned int char_spacing = char_width + 1;
|
||||||
for (size_t i = 0; i < Length; i++) {
|
for (size_t i = 0; i < Length; i++) {
|
||||||
const unsigned int index = pString[i] - ' ' - 1;
|
const unsigned int index = pString[i] - ' ' - 1;
|
||||||
if (pString[i] > ' ' && pString[i] < 127) {
|
if (pString[i] > ' ' && pString[i] < 127) {
|
||||||
const uint32_t offset = i * char_spacing + 1;
|
const uint32_t offset = i * char_spacing + 1;
|
||||||
|
if (inv) {
|
||||||
|
memcpy_inv(buffer + offset, font + index * char_width, char_width);
|
||||||
|
} else {
|
||||||
memcpy(buffer + offset, font + index * char_width, char_width);
|
memcpy(buffer + offset, font + index * char_width, char_width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_PrintString(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t Width)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
size_t Length = strlen(pString);
|
|
||||||
|
|
||||||
if (End > Start)
|
|
||||||
Start += (((End - Start) - (Length * Width)) + 1) / 2;
|
|
||||||
|
|
||||||
for (i = 0; i < Length; i++)
|
|
||||||
{
|
|
||||||
const unsigned int ofs = (unsigned int)Start + (i * Width);
|
|
||||||
if (pString[i] > ' ' && pString[i] < 127)
|
|
||||||
{
|
|
||||||
const unsigned int index = pString[i] - ' ' - 1;
|
|
||||||
memcpy(gFrameBuffer[Line + 0] + ofs, &gFontBig[index][0], 7);
|
|
||||||
memcpy(gFrameBuffer[Line + 1] + ofs, &gFontBig[index][7], 7);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t char_width, const uint8_t *font)
|
|
||||||
{
|
void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t char_width,
|
||||||
|
const uint8_t *font, bool inv) {
|
||||||
const size_t Length = strlen(pString);
|
const size_t Length = strlen(pString);
|
||||||
const unsigned int char_spacing = char_width + 1;
|
const unsigned int char_spacing = char_width + 1;
|
||||||
|
|
||||||
@@ -107,17 +101,53 @@ void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_
|
|||||||
Start += (((End - Start) - Length * char_spacing) + 1) / 2;
|
Start += (((End - Start) - Length * char_spacing) + 1) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_PrintStringBuffer(pString, gFrameBuffer[Line] + Start, char_width, font);
|
UI_PrintStringBuffer(pString, gFrameBuffer[Line] + Start, char_width, font, inv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void UI_PrintStringSmallNormal(const char *pString, uint8_t Start, uint8_t End, uint8_t Line)
|
void UI_PrintStringSmallNormal(const char *pString, uint8_t Start, uint8_t End, uint8_t Line) {
|
||||||
{
|
UI_PrintStringSmall(pString, Start, End, Line, ARRAY_SIZE(gFontSmall[0]), (const uint8_t *) gFontSmall, false);
|
||||||
UI_PrintStringSmall(pString, Start, End, Line, ARRAY_SIZE(gFontSmall[0]), (const uint8_t *)gFontSmall);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_PrintStringSmallBold(const char *pString, uint8_t Start, uint8_t End, uint8_t Line)
|
void UI_PrintString(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t Width) {
|
||||||
{
|
Width = Width;
|
||||||
|
UI_PrintStringSmallNormal(pString, Start, End, Line);
|
||||||
|
// size_t i;
|
||||||
|
// size_t Length = strlen(pString);
|
||||||
|
//
|
||||||
|
// if (End > Start)
|
||||||
|
// Start += (((End - Start) - (Length * Width)) + 1) / 2;
|
||||||
|
//
|
||||||
|
// for (i = 0; i < Length; i++)
|
||||||
|
// {
|
||||||
|
// const unsigned int ofs = (unsigned int)Start + (i * Width);
|
||||||
|
// if (pString[i] > ' ' && pString[i] < 127)
|
||||||
|
// {
|
||||||
|
// const unsigned int index = pString[i] - ' ' - 1;
|
||||||
|
// memcpy(gFrameBuffer[Line + 0] + ofs, &gFontSmall[index + '0'][0], 7);
|
||||||
|
// memcpy(gFrameBuffer[Line + 1] + ofs, &gFontSmall[index + '0'][7], 7);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void UI_PrintStringSmallBold(const char *pString, uint8_t Start, uint8_t End, uint8_t Line) {
|
||||||
|
//#ifdef ENABLE_SMALL_BOLD
|
||||||
|
// const uint8_t *font = (uint8_t *)gFontSmallBold;
|
||||||
|
// const uint8_t char_width = ARRAY_SIZE(gFontSmallBold[0]);
|
||||||
|
//#else
|
||||||
|
// const uint8_t *font = (uint8_t *) gFontSmall;
|
||||||
|
// const uint8_t char_width = ARRAY_SIZE(gFontSmall[0]);
|
||||||
|
//#endif
|
||||||
|
//
|
||||||
|
// UI_PrintStringSmall(pString, Start, End, Line, char_width, font);
|
||||||
|
UI_PrintStringSmall(pString, Start, End, Line, ARRAY_SIZE(gFontSmall[0]), (const uint8_t *) gFontSmall, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UI_PrintStringSmallBufferNormal(const char *pString, uint8_t *buffer) {
|
||||||
|
UI_PrintStringBuffer(pString, buffer, ARRAY_SIZE(gFontSmall[0]), (uint8_t *) gFontSmall, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UI_PrintStringSmallBufferBold(const char *pString, uint8_t *buffer) {
|
||||||
#ifdef ENABLE_SMALL_BOLD
|
#ifdef ENABLE_SMALL_BOLD
|
||||||
const uint8_t *font = (uint8_t *)gFontSmallBold;
|
const uint8_t *font = (uint8_t *)gFontSmallBold;
|
||||||
const uint8_t char_width = ARRAY_SIZE(gFontSmallBold[0]);
|
const uint8_t char_width = ARRAY_SIZE(gFontSmallBold[0]);
|
||||||
@@ -125,61 +155,45 @@ void UI_PrintStringSmallBold(const char *pString, uint8_t Start, uint8_t End, ui
|
|||||||
const uint8_t *font = (uint8_t *) gFontSmall;
|
const uint8_t *font = (uint8_t *) gFontSmall;
|
||||||
const uint8_t char_width = ARRAY_SIZE(gFontSmall[0]);
|
const uint8_t char_width = ARRAY_SIZE(gFontSmall[0]);
|
||||||
#endif
|
#endif
|
||||||
|
UI_PrintStringBuffer(pString, buffer, char_width, font, false);
|
||||||
UI_PrintStringSmall(pString, Start, End, Line, char_width, font);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_PrintStringSmallBufferNormal(const char *pString, uint8_t * buffer)
|
//void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center) {
|
||||||
{
|
// const unsigned int char_width = 13;
|
||||||
UI_PrintStringBuffer(pString, buffer, ARRAY_SIZE(gFontSmall[0]), (uint8_t *)gFontSmall);
|
// uint8_t *pFb0 = gFrameBuffer[Y] + X;
|
||||||
}
|
// uint8_t *pFb1 = pFb0 + 128;
|
||||||
|
// bool bCanDisplay = false;
|
||||||
void UI_PrintStringSmallBufferBold(const char *pString, uint8_t * buffer)
|
//
|
||||||
{
|
// uint8_t len = strlen(string);
|
||||||
#ifdef ENABLE_SMALL_BOLD
|
// for (int i = 0; i < len; i++) {
|
||||||
const uint8_t *font = (uint8_t *)gFontSmallBold;
|
// char c = string[i];
|
||||||
const uint8_t char_width = ARRAY_SIZE(gFontSmallBold[0]);
|
// if (c == '-') c = '9' + 1;
|
||||||
#else
|
// if (bCanDisplay || c != ' ') {
|
||||||
const uint8_t *font = (uint8_t *)gFontSmall;
|
// bCanDisplay = true;
|
||||||
const uint8_t char_width = ARRAY_SIZE(gFontSmall[0]);
|
// if (c >= '0' && c <= '9' + 1) {
|
||||||
#endif
|
// memcpy(pFb0 + 2, gFontSmall[(unsigned char) c], char_width - 3);
|
||||||
UI_PrintStringBuffer(pString, buffer, char_width, font);
|
// memcpy(pFb1 + 2, gFontSmall[(unsigned char) c] + char_width - 3, char_width - 3);
|
||||||
}
|
// } else if (c == '.') {
|
||||||
|
// *pFb1 = 0x60;
|
||||||
void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center)
|
// pFb0++;
|
||||||
{
|
// pFb1++;
|
||||||
const unsigned int char_width = 13;
|
// *pFb1 = 0x60;
|
||||||
uint8_t *pFb0 = gFrameBuffer[Y] + X;
|
// pFb0++;
|
||||||
uint8_t *pFb1 = pFb0 + 128;
|
// pFb1++;
|
||||||
bool bCanDisplay = false;
|
// *pFb1 = 0x60;
|
||||||
|
// pFb0++;
|
||||||
uint8_t len = strlen(string);
|
// pFb1++;
|
||||||
for(int i = 0; i < len; i++) {
|
// continue;
|
||||||
char c = string[i];
|
// }
|
||||||
if(c=='-') c = '9' + 1;
|
//
|
||||||
if (bCanDisplay || c != ' ')
|
// } else if (center) {
|
||||||
{
|
// pFb0 -= 6;
|
||||||
bCanDisplay = true;
|
// pFb1 -= 6;
|
||||||
if(c>='0' && c<='9' + 1) {
|
// }
|
||||||
memcpy(pFb0 + 2, gFontBigDigits[c-'0'], char_width - 3);
|
// pFb0 += char_width;
|
||||||
memcpy(pFb1 + 2, gFontBigDigits[c-'0'] + char_width - 3, char_width - 3);
|
// pFb1 += char_width;
|
||||||
}
|
// }
|
||||||
else if(c=='.') {
|
//}
|
||||||
*pFb1 = 0x60; pFb0++; pFb1++;
|
|
||||||
*pFb1 = 0x60; pFb0++; pFb1++;
|
|
||||||
*pFb1 = 0x60; pFb0++; pFb1++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (center) {
|
|
||||||
pFb0 -= 6;
|
|
||||||
pFb1 -= 6;
|
|
||||||
}
|
|
||||||
pFb0 += char_width;
|
|
||||||
pFb1 += char_width;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center)
|
void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center)
|
||||||
@@ -221,8 +235,7 @@ void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void UI_DrawPixelBuffer(uint8_t (*buffer)[128], uint8_t x, uint8_t y, bool black)
|
void UI_DrawPixelBuffer(uint8_t (*buffer)[128], uint8_t x, uint8_t y, bool black) {
|
||||||
{
|
|
||||||
const uint8_t pattern = 1 << (y % 8);
|
const uint8_t pattern = 1 << (y % 8);
|
||||||
if (black)
|
if (black)
|
||||||
buffer[y / 8][x] |= pattern;
|
buffer[y / 8][x] |= pattern;
|
||||||
@@ -230,8 +243,7 @@ void UI_DrawPixelBuffer(uint8_t (*buffer)[128], uint8_t x, uint8_t y, bool black
|
|||||||
buffer[y / 8][x] &= ~pattern;
|
buffer[y / 8][x] &= ~pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sort(int16_t *a, int16_t *b)
|
static void sort(int16_t *a, int16_t *b) {
|
||||||
{
|
|
||||||
if (*a > *b) {
|
if (*a > *b) {
|
||||||
int16_t t = *a;
|
int16_t t = *a;
|
||||||
*a = *b;
|
*a = *b;
|
||||||
@@ -240,6 +252,7 @@ static void sort(int16_t *a, int16_t *b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void UI_DrawLineDottedBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black)
|
void UI_DrawLineDottedBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black)
|
||||||
{
|
{
|
||||||
@@ -293,10 +306,10 @@ static void sort(int16_t *a, int16_t *b)
|
|||||||
x += 4;
|
x += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black)
|
void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black) {
|
||||||
{
|
|
||||||
if (x2 == x1) {
|
if (x2 == x1) {
|
||||||
sort(&y1, &y2);
|
sort(&y1, &y2);
|
||||||
for (int16_t i = y1; i <= y2; i++) {
|
for (int16_t i = y1; i <= y2; i++) {
|
||||||
@@ -308,15 +321,13 @@ void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x
|
|||||||
int b = y1 - a * x1 / multipl;
|
int b = y1 - a * x1 / multipl;
|
||||||
|
|
||||||
sort(&x1, &x2);
|
sort(&x1, &x2);
|
||||||
for(int i = x1; i<= x2; i++)
|
for (int i = x1; i <= x2; i++) {
|
||||||
{
|
|
||||||
UI_DrawPixelBuffer(buffer, i, i * a / multipl + b, black);
|
UI_DrawPixelBuffer(buffer, i, i * a / multipl + b, black);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_DrawRectangleBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black)
|
void UI_DrawRectangleBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black) {
|
||||||
{
|
|
||||||
UI_DrawLineBuffer(buffer, x1, y1, x1, y2, black);
|
UI_DrawLineBuffer(buffer, x1, y1, x1, y2, black);
|
||||||
UI_DrawLineBuffer(buffer, x1, y1, x2, y1, black);
|
UI_DrawLineBuffer(buffer, x1, y1, x2, y1, black);
|
||||||
UI_DrawLineBuffer(buffer, x2, y1, x2, y2, black);
|
UI_DrawLineBuffer(buffer, x2, y1, x2, y2, black);
|
||||||
@@ -324,8 +335,7 @@ void UI_DrawRectangleBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int1
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void UI_DisplayPopup(const char *string)
|
void UI_DisplayPopup(const char *string) {
|
||||||
{
|
|
||||||
UI_DisplayClear();
|
UI_DisplayClear();
|
||||||
|
|
||||||
// for(uint8_t i = 1; i < 5; i++) {
|
// for(uint8_t i = 1; i < 5; i++) {
|
||||||
@@ -346,7 +356,6 @@ void UI_DisplayPopup(const char *string)
|
|||||||
UI_PrintStringSmallNormal("Press EXIT", 9, 118, 6);
|
UI_PrintStringSmallNormal("Press EXIT", 9, 118, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_DisplayClear()
|
void UI_DisplayClear() {
|
||||||
{
|
|
||||||
memset(gFrameBuffer, 0, sizeof(gFrameBuffer));
|
memset(gFrameBuffer, 0, sizeof(gFrameBuffer));
|
||||||
}
|
}
|
||||||
|
@@ -27,7 +27,7 @@ void UI_PrintStringSmallNormal(const char *pString, uint8_t Start, uint8_t End,
|
|||||||
void UI_PrintStringSmallBold(const char *pString, uint8_t Start, uint8_t End, uint8_t Line);
|
void UI_PrintStringSmallBold(const char *pString, uint8_t Start, uint8_t End, uint8_t Line);
|
||||||
void UI_PrintStringSmallBufferNormal(const char *pString, uint8_t *buffer);
|
void UI_PrintStringSmallBufferNormal(const char *pString, uint8_t *buffer);
|
||||||
void UI_PrintStringSmallBufferBold(const char *pString, uint8_t * buffer);
|
void UI_PrintStringSmallBufferBold(const char *pString, uint8_t * buffer);
|
||||||
void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center);
|
//void UI_DisplayFrequency(const char *string, uint8_t X, uint8_t Y, bool center);
|
||||||
|
|
||||||
void UI_DisplayPopup(const char *string);
|
void UI_DisplayPopup(const char *string);
|
||||||
|
|
||||||
|
419
ui/main.c
419
ui/main.c
@@ -19,9 +19,13 @@
|
|||||||
|
|
||||||
#include "app/chFrScanner.h"
|
#include "app/chFrScanner.h"
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
|
|
||||||
#ifdef ENABLE_AM_FIX
|
#ifdef ENABLE_AM_FIX
|
||||||
|
|
||||||
#include "am_fix.h"
|
#include "am_fix.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "bitmaps.h"
|
#include "bitmaps.h"
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
#include "driver/bk4819.h"
|
#include "driver/bk4819.h"
|
||||||
@@ -39,7 +43,9 @@
|
|||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
|
|
||||||
#include "driver/system.h"
|
#include "driver/system.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
center_line_t center_line = CENTER_LINE_NONE;
|
center_line_t center_line = CENTER_LINE_NONE;
|
||||||
@@ -53,10 +59,10 @@ center_line_t center_line = CENTER_LINE_NONE;
|
|||||||
|
|
||||||
bool isMainOnlyInputDTMF = false;
|
bool isMainOnlyInputDTMF = false;
|
||||||
|
|
||||||
static bool isMainOnly()
|
static bool isMainOnly() {
|
||||||
{
|
|
||||||
return (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF) && (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF);
|
return (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF) && (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int8_t dBmCorrTable[7] = {
|
const int8_t dBmCorrTable[7] = {
|
||||||
@@ -81,8 +87,7 @@ const char *VfoStateStr[] = {
|
|||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
static void DrawSmallAntennaAndBars(uint8_t *p, unsigned int level)
|
static void DrawSmallAntennaAndBars(uint8_t *p, unsigned int level) {
|
||||||
{
|
|
||||||
if (level > 6)
|
if (level > 6)
|
||||||
level = 6;
|
level = 6;
|
||||||
|
|
||||||
@@ -93,10 +98,10 @@ static void DrawSmallAntennaAndBars(uint8_t *p, unsigned int level)
|
|||||||
memset(p + 2 + i * 3, bar, 2);
|
memset(p + 2 + i * 3, bar, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined ENABLE_AUDIO_BAR || defined ENABLE_RSSI_BAR
|
#if defined ENABLE_AUDIO_BAR || defined ENABLE_RSSI_BAR
|
||||||
|
|
||||||
static void DrawLevelBar(uint8_t xpos, uint8_t line, uint8_t level, uint8_t bars)
|
static void DrawLevelBar(uint8_t xpos, uint8_t line, uint8_t level, uint8_t bars) {
|
||||||
{
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
const char hollowBar[] = {
|
const char hollowBar[] = {
|
||||||
0b01111111,
|
0b01111111,
|
||||||
@@ -111,8 +116,7 @@ static void DrawLevelBar(uint8_t xpos, uint8_t line, uint8_t level, uint8_t bars
|
|||||||
|
|
||||||
for (uint8_t i = 0; i < level; i++) {
|
for (uint8_t i = 0; i < level; i++) {
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if(gSetting_set_met)
|
if (gSetting_set_met) {
|
||||||
{
|
|
||||||
const char hollowBar[] = {
|
const char hollowBar[] = {
|
||||||
0b01111111,
|
0b01111111,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
@@ -123,13 +127,10 @@ static void DrawLevelBar(uint8_t xpos, uint8_t line, uint8_t level, uint8_t bars
|
|||||||
if (i < bars - 4) {
|
if (i < bars - 4) {
|
||||||
for (uint8_t j = 0; j < 4; j++)
|
for (uint8_t j = 0; j < 4; j++)
|
||||||
p_line[xpos + i * 5 + j] = (~(0x7F >> (i + 1))) & 0x7F;
|
p_line[xpos + i * 5 + j] = (~(0x7F >> (i + 1))) & 0x7F;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
memcpy(p_line + (xpos + i * 5), &hollowBar, ARRAY_SIZE(hollowBar));
|
memcpy(p_line + (xpos + i * 5), &hollowBar, ARRAY_SIZE(hollowBar));
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
const char hollowBar[] = {
|
const char hollowBar[] = {
|
||||||
0b00111110,
|
0b00111110,
|
||||||
0b00100010,
|
0b00100010,
|
||||||
@@ -146,8 +147,7 @@ static void DrawLevelBar(uint8_t xpos, uint8_t line, uint8_t level, uint8_t bars
|
|||||||
|
|
||||||
if (i < bars - 4) {
|
if (i < bars - 4) {
|
||||||
memcpy(p_line + (xpos + i * 5), &simpleBar, ARRAY_SIZE(simpleBar));
|
memcpy(p_line + (xpos + i * 5), &simpleBar, ARRAY_SIZE(simpleBar));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
memcpy(p_line + (xpos + i * 5), &hollowBar, ARRAY_SIZE(hollowBar));
|
memcpy(p_line + (xpos + i * 5), &hollowBar, ARRAY_SIZE(hollowBar));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,6 +162,7 @@ static void DrawLevelBar(uint8_t xpos, uint8_t line, uint8_t level, uint8_t bars
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
@@ -175,10 +176,8 @@ uint8_t log2_approx(unsigned int value) {
|
|||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_DisplayAudioBar(void)
|
void UI_DisplayAudioBar(void) {
|
||||||
{
|
if (gSetting_mic_bar) {
|
||||||
if (gSetting_mic_bar)
|
|
||||||
{
|
|
||||||
if (gLowBattery && !gLowBatteryConfirmed)
|
if (gLowBattery && !gLowBatteryConfirmed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -187,12 +186,9 @@ void UI_DisplayAudioBar(void)
|
|||||||
RxBlinkLedCounter = 0;
|
RxBlinkLedCounter = 0;
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, false);
|
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, false);
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
line = 5;
|
line = 5;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
line = 3;
|
line = 3;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -204,8 +200,7 @@ void UI_DisplayAudioBar(void)
|
|||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
|| gDTMF_CallState != DTMF_CALL_STATE_NONE
|
|| gDTMF_CallState != DTMF_CALL_STATE_NONE
|
||||||
#endif
|
#endif
|
||||||
)
|
) {
|
||||||
{
|
|
||||||
return; // screen is in use
|
return; // screen is in use
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,10 +231,10 @@ void UI_DisplayAudioBar(void)
|
|||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void DisplayRSSIBar(const bool now)
|
void DisplayRSSIBar(const bool now) {
|
||||||
{
|
|
||||||
#if defined(ENABLE_RSSI_BAR)
|
#if defined(ENABLE_RSSI_BAR)
|
||||||
|
|
||||||
const unsigned int txt_width = 7 * 8; // 8 text chars
|
const unsigned int txt_width = 7 * 8; // 8 text chars
|
||||||
@@ -259,12 +254,9 @@ void DisplayRSSIBar(const bool now)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
line = 5;
|
line = 5;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
line = 3;
|
line = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,14 +264,12 @@ void DisplayRSSIBar(const bool now)
|
|||||||
//sprintf(String, "%d", RxBlink);
|
//sprintf(String, "%d", RxBlink);
|
||||||
//UI_PrintStringSmallBold(String, 80, 0, RxLine);
|
//UI_PrintStringSmallBold(String, 80, 0, RxLine);
|
||||||
|
|
||||||
if(RxLine >= 0 && center_line != CENTER_LINE_IN_USE)
|
if (RxLine >= 0 && center_line != CENTER_LINE_IN_USE) {
|
||||||
{
|
|
||||||
if (RxBlink == 0 || RxBlink == 1) {
|
if (RxBlink == 0 || RxBlink == 1) {
|
||||||
UI_PrintStringSmallBold("RX", 8, 0, RxLine);
|
UI_PrintStringSmallBold("RX", 8, 0, RxLine);
|
||||||
if (RxBlink == 1) RxBlink = 2;
|
if (RxBlink == 1) RxBlink = 2;
|
||||||
} else {
|
} else {
|
||||||
for (uint8_t i = 8; i < 24; i++)
|
for (uint8_t i = 8; i < 24; i++) {
|
||||||
{
|
|
||||||
gFrameBuffer[RxLine][i] = 0x00;
|
gFrameBuffer[RxLine][i] = 0x00;
|
||||||
}
|
}
|
||||||
RxBlink = 1;
|
RxBlink = 1;
|
||||||
@@ -337,8 +327,7 @@ void DisplayRSSIBar(const bool now)
|
|||||||
|
|
||||||
if (rssi_dBm >= 93) {
|
if (rssi_dBm >= 93) {
|
||||||
s_level = map(rssi_dBm, 141, 93, 1, 9);
|
s_level = map(rssi_dBm, 141, 93, 1, 9);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
s_level = 9;
|
s_level = 9;
|
||||||
overS9dBm = map(rssi_dBm, 93, 53, 0, 40);
|
overS9dBm = map(rssi_dBm, 93, 53, 0, 40);
|
||||||
overS9Bars = map(overS9dBm, 0, 40, 0, 4);
|
overS9Bars = map(overS9dBm, 0, 40, 0, 4);
|
||||||
@@ -359,13 +348,10 @@ void DisplayRSSIBar(const bool now)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui) {
|
||||||
{
|
|
||||||
sprintf(str, "%3d", -rssi_dBm);
|
sprintf(str, "%3d", -rssi_dBm);
|
||||||
UI_PrintStringSmallNormal(str, LCD_WIDTH + 8, 0, line - 1);
|
UI_PrintStringSmallNormal(str, LCD_WIDTH + 8, 0, line - 1);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
sprintf(str, "% 4d %s", -rssi_dBm, "dBm");
|
sprintf(str, "% 4d %s", -rssi_dBm, "dBm");
|
||||||
if (isMainOnly())
|
if (isMainOnly())
|
||||||
GUI_DisplaySmallest(str, 2, 41, false, true);
|
GUI_DisplaySmallest(str, 2, 41, false, true);
|
||||||
@@ -375,8 +361,7 @@ void DisplayRSSIBar(const bool now)
|
|||||||
|
|
||||||
if (overS9Bars == 0) {
|
if (overS9Bars == 0) {
|
||||||
sprintf(str, "S%d", s_level);
|
sprintf(str, "S%d", s_level);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
sprintf(str, "+%02d", overS9dBm);
|
sprintf(str, "+%02d", overS9dBm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,8 +445,7 @@ void UI_MAIN_PrintAGC(bool now)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void UI_MAIN_TimeSlice500ms(void)
|
void UI_MAIN_TimeSlice500ms(void) {
|
||||||
{
|
|
||||||
if (gScreenToDisplay == DISPLAY_MAIN) {
|
if (gScreenToDisplay == DISPLAY_MAIN) {
|
||||||
#ifdef ENABLE_AGC_SHOW_DATA
|
#ifdef ENABLE_AGC_SHOW_DATA
|
||||||
UI_MAIN_PrintAGC(true);
|
UI_MAIN_PrintAGC(true);
|
||||||
@@ -472,28 +456,19 @@ void UI_MAIN_TimeSlice500ms(void)
|
|||||||
DisplayRSSIBar(true);
|
DisplayRSSIBar(true);
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_FEAT_F4HWN // Blink Green Led for white...
|
#ifdef ENABLE_FEAT_F4HWN // Blink Green Led for white...
|
||||||
else if(gSetting_set_eot > 0 && RxBlinkLed == 2)
|
else if (gSetting_set_eot > 0 && RxBlinkLed == 2) {
|
||||||
{
|
if (RxBlinkLedCounter <= 8) {
|
||||||
if(RxBlinkLedCounter <= 8)
|
if (RxBlinkLedCounter % 2 == 0) {
|
||||||
{
|
if (gSetting_set_eot > 1) {
|
||||||
if(RxBlinkLedCounter % 2 == 0)
|
|
||||||
{
|
|
||||||
if(gSetting_set_eot > 1 )
|
|
||||||
{
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, false);
|
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, false);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
if (gSetting_set_eot > 1) {
|
||||||
{
|
|
||||||
if(gSetting_set_eot > 1 )
|
|
||||||
{
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, true);
|
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(gSetting_set_eot == 1 || gSetting_set_eot == 3)
|
if (gSetting_set_eot == 1 || gSetting_set_eot == 3) {
|
||||||
{
|
switch (RxBlinkLedCounter) {
|
||||||
switch(RxBlinkLedCounter)
|
|
||||||
{
|
|
||||||
case 1:
|
case 1:
|
||||||
AUDIO_PlayBeep(BEEP_400HZ_30MS);
|
AUDIO_PlayBeep(BEEP_400HZ_30MS);
|
||||||
break;
|
break;
|
||||||
@@ -513,9 +488,7 @@ void UI_MAIN_TimeSlice500ms(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
RxBlinkLedCounter += 1;
|
RxBlinkLedCounter += 1;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
RxBlinkLed = 0;
|
RxBlinkLed = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -525,8 +498,7 @@ void UI_MAIN_TimeSlice500ms(void)
|
|||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
void UI_DisplayMain(void)
|
void UI_DisplayMain(void) {
|
||||||
{
|
|
||||||
char String[22];
|
char String[22];
|
||||||
|
|
||||||
center_line = CENTER_LINE_NONE;
|
center_line = CENTER_LINE_NONE;
|
||||||
@@ -549,8 +521,7 @@ void UI_DisplayMain(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (gEeprom.KEY_LOCK && gKeypadLocked > 0)
|
if (gEeprom.KEY_LOCK && gKeypadLocked > 0) { // tell user how to unlock the keyboard
|
||||||
{ // tell user how to unlock the keyboard
|
|
||||||
uint8_t shift = 3;
|
uint8_t shift = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -560,8 +531,7 @@ void UI_DisplayMain(void)
|
|||||||
SYSTEM_DelayMs(50);
|
SYSTEM_DelayMs(50);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if(isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
shift = 5;
|
shift = 5;
|
||||||
}
|
}
|
||||||
//memcpy(gFrameBuffer[shift] + 2, gFontKeyLock, sizeof(gFontKeyLock));
|
//memcpy(gFrameBuffer[shift] + 2, gFontKeyLock, sizeof(gFontKeyLock));
|
||||||
@@ -579,18 +549,14 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
unsigned int activeTxVFO = gRxVfoIsActive ? gEeprom.RX_VFO : gEeprom.TX_VFO;
|
unsigned int activeTxVFO = gRxVfoIsActive ? gEeprom.RX_VFO : gEeprom.TX_VFO;
|
||||||
|
|
||||||
for (unsigned int vfo_num = 0; vfo_num < 2; vfo_num++)
|
for (unsigned int vfo_num = 0; vfo_num < 2; vfo_num++) {
|
||||||
{
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
const unsigned int line0 = 0; // text screen line
|
const unsigned int line0 = 0; // text screen line
|
||||||
const unsigned int line1 = 4;
|
const unsigned int line1 = 4;
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
line = 0;
|
line = 0;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
line = (vfo_num == 0) ? line0 : line1;
|
line = (vfo_num == 0) ? line0 : line1;
|
||||||
}
|
}
|
||||||
const bool isMainVFO = (vfo_num == gEeprom.TX_VFO);
|
const bool isMainVFO = (vfo_num == gEeprom.TX_VFO);
|
||||||
@@ -608,10 +574,8 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
if (activeTxVFO != vfo_num) {
|
||||||
if (activeTxVFO != vfo_num)
|
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -632,8 +596,7 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
uint8_t shift = 0;
|
uint8_t shift = 0;
|
||||||
|
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
shift = 3;
|
shift = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -645,9 +608,7 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
if (!isMainOnly())
|
if (!isMainOnly())
|
||||||
continue;
|
continue;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
gScanRangeStart = 0;
|
gScanRangeStart = 0;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -662,6 +623,20 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
if (gEnteringSMS == SMS_ENTERING_DEST) {
|
||||||
|
UI_PrintString("SMS Dst", 0, 0, line - 1, 8);
|
||||||
|
sprintf(String, "%d", dataPacket.dest);
|
||||||
|
UI_PrintStringSmallNormal(String, 0, 0, line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gEnteringSMS == SMS_ENTERING_MESSAGE) {
|
||||||
|
UI_PrintString("SMS Dat", 0, 0, line - 1, 8);
|
||||||
|
sprintf(String, "%s", dataPacket.data);
|
||||||
|
UI_PrintStringSmallNormal(String, 0, 0, line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (gDTMF_InputMode
|
if (gDTMF_InputMode
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
|| gDTMF_CallState != DTMF_CALL_STATE_NONE || gDTMF_IsTx
|
|| gDTMF_CallState != DTMF_CALL_STATE_NONE || gDTMF_IsTx
|
||||||
@@ -674,7 +649,8 @@ void UI_DisplayMain(void)
|
|||||||
if (!gDTMF_InputMode) {
|
if (!gDTMF_InputMode) {
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT) {
|
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT) {
|
||||||
pPrintStr = DTMF_FindContact(gDTMF_String, Contact) ? Contact : gDTMF_String;
|
pPrintStr = DTMF_FindContact(gDTMF_String, Contact) ? Contact : gDTMF_String;
|
||||||
} else if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED || gDTMF_CallState == DTMF_CALL_STATE_RECEIVED_STAY){
|
} else if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED ||
|
||||||
|
gDTMF_CallState == DTMF_CALL_STATE_RECEIVED_STAY) {
|
||||||
pPrintStr = DTMF_FindContact(gDTMF_Callee, Contact) ? Contact : gDTMF_Callee;
|
pPrintStr = DTMF_FindContact(gDTMF_Callee, Contact) ? Contact : gDTMF_Callee;
|
||||||
} else if (gDTMF_IsTx) {
|
} else if (gDTMF_IsTx) {
|
||||||
pPrintStr = gDTMF_String;
|
pPrintStr = gDTMF_String;
|
||||||
@@ -687,14 +663,15 @@ void UI_DisplayMain(void)
|
|||||||
if (!gDTMF_InputMode) {
|
if (!gDTMF_InputMode) {
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT) {
|
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT) {
|
||||||
pPrintStr = (gDTMF_State == DTMF_STATE_CALL_OUT_RSP) ? "CALL OUT(RSP)" : "CALL OUT";
|
pPrintStr = (gDTMF_State == DTMF_STATE_CALL_OUT_RSP) ? "CALL OUT(RSP)" : "CALL OUT";
|
||||||
} else if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED || gDTMF_CallState == DTMF_CALL_STATE_RECEIVED_STAY) {
|
} else if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED ||
|
||||||
sprintf(String, "CALL FRM:%s", (DTMF_FindContact(gDTMF_Caller, Contact)) ? Contact : gDTMF_Caller);
|
gDTMF_CallState == DTMF_CALL_STATE_RECEIVED_STAY) {
|
||||||
|
sprintf(String, "CALL FRM:%s",
|
||||||
|
(DTMF_FindContact(gDTMF_Caller, Contact)) ? Contact : gDTMF_Caller);
|
||||||
pPrintStr = String;
|
pPrintStr = String;
|
||||||
} else if (gDTMF_IsTx) {
|
} else if (gDTMF_IsTx) {
|
||||||
pPrintStr = (gDTMF_State == DTMF_STATE_TX_SUCC) ? "DTMF TX(SUCC)" : "DTMF TX";
|
pPrintStr = (gDTMF_State == DTMF_STATE_TX_SUCC) ? "DTMF TX(SUCC)" : "DTMF TX";
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
sprintf(String, ">%s", gDTMF_InputBox);
|
sprintf(String, ">%s", gDTMF_InputBox);
|
||||||
@@ -702,14 +679,11 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
UI_PrintString(pPrintStr, 2, 0, 5, 8);
|
UI_PrintString(pPrintStr, 2, 0, 5, 8);
|
||||||
isMainOnlyInputDTMF = true;
|
isMainOnlyInputDTMF = true;
|
||||||
center_line = CENTER_LINE_IN_USE;
|
center_line = CENTER_LINE_IN_USE;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
UI_PrintString(pPrintStr, 2, 0, 0 + (vfo_num * 3), 8);
|
UI_PrintString(pPrintStr, 2, 0, 0 + (vfo_num * 3), 8);
|
||||||
isMainOnlyInputDTMF = false;
|
isMainOnlyInputDTMF = false;
|
||||||
center_line = CENTER_LINE_IN_USE;
|
center_line = CENTER_LINE_IN_USE;
|
||||||
@@ -725,8 +699,7 @@ void UI_DisplayMain(void)
|
|||||||
// highlight the selected/used VFO with a marker
|
// highlight the selected/used VFO with a marker
|
||||||
if (isMainVFO)
|
if (isMainVFO)
|
||||||
memcpy(p_line0 + 0, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
memcpy(p_line0 + 0, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
||||||
}
|
} else // active TX VFO
|
||||||
else // active TX VFO
|
|
||||||
{ // highlight the selected/used VFO with a marker
|
{ // highlight the selected/used VFO with a marker
|
||||||
if (isMainVFO)
|
if (isMainVFO)
|
||||||
memcpy(p_line0 + 0, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
memcpy(p_line0 + 0, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
||||||
@@ -736,16 +709,14 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
uint32_t frequency = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
uint32_t frequency = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
||||||
|
|
||||||
if(TX_freq_check(frequency) != 0 && gEeprom.VfoInfo[vfo_num].TX_LOCK == true)
|
if (TX_freq_check(frequency) != 0 && gEeprom.VfoInfo[vfo_num].TX_LOCK == true) {
|
||||||
{
|
|
||||||
if (isMainOnly())
|
if (isMainOnly())
|
||||||
memcpy(p_line0 + 14, BITMAP_VFO_Lock, sizeof(BITMAP_VFO_Lock));
|
memcpy(p_line0 + 14, BITMAP_VFO_Lock, sizeof(BITMAP_VFO_Lock));
|
||||||
else
|
else
|
||||||
memcpy(p_line0 + 24, BITMAP_VFO_Lock, sizeof(BITMAP_VFO_Lock));
|
memcpy(p_line0 + 24, BITMAP_VFO_Lock, sizeof(BITMAP_VFO_Lock));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
if (gCurrentFunction == FUNCTION_TRANSMIT) { // transmitting
|
||||||
{ // transmitting
|
|
||||||
|
|
||||||
#ifdef ENABLE_ALARM
|
#ifdef ENABLE_ALARM
|
||||||
if (gAlarmState == ALARM_STATE_SITE_ALARM)
|
if (gAlarmState == ALARM_STATE_SITE_ALARM)
|
||||||
@@ -753,15 +724,12 @@ void UI_DisplayMain(void)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (activeTxVFO == vfo_num)
|
if (activeTxVFO == vfo_num) { // show the TX symbol
|
||||||
{ // show the TX symbol
|
|
||||||
mode = VFO_MODE_TX;
|
mode = VFO_MODE_TX;
|
||||||
UI_PrintStringSmallBold("TX", 8, 0, line);
|
UI_PrintStringSmallBold("TX", 8, 0, line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else { // receiving .. show the RX symbol
|
||||||
else
|
|
||||||
{ // receiving .. show the RX symbol
|
|
||||||
mode = VFO_MODE_RX;
|
mode = VFO_MODE_RX;
|
||||||
//if (FUNCTION_IsRx() && gEeprom.RX_VFO == vfo_num) {
|
//if (FUNCTION_IsRx() && gEeprom.RX_VFO == vfo_num) {
|
||||||
if (FUNCTION_IsRx() && gEeprom.RX_VFO == vfo_num && VfoState[vfo_num] == VFO_STATE_NORMAL) {
|
if (FUNCTION_IsRx() && gEeprom.RX_VFO == vfo_num && VfoState[vfo_num] == VFO_STATE_NORMAL) {
|
||||||
@@ -770,12 +738,9 @@ void UI_DisplayMain(void)
|
|||||||
RxBlinkLedCounter = 0;
|
RxBlinkLedCounter = 0;
|
||||||
RxLine = line;
|
RxLine = line;
|
||||||
RxOnVfofrequency = frequency;
|
RxOnVfofrequency = frequency;
|
||||||
if(!isMainVFO)
|
if (!isMainVFO) {
|
||||||
{
|
|
||||||
RxBlink = 1;
|
RxBlink = 1;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
RxBlink = 0;
|
RxBlink = 0;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -783,10 +748,8 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
else
|
else {
|
||||||
{
|
if (RxOnVfofrequency == frequency && !isMainOnly()) {
|
||||||
if(RxOnVfofrequency == frequency && !isMainOnly())
|
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(">>", 8, 0, line);
|
UI_PrintStringSmallNormal(">>", 8, 0, line);
|
||||||
//memcpy(p_line0 + 14, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
//memcpy(p_line0 + 14, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
||||||
}
|
}
|
||||||
@@ -797,8 +760,7 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { // channel mode
|
||||||
{ // channel mode
|
|
||||||
const unsigned int x = 2;
|
const unsigned int x = 2;
|
||||||
const bool inputting = gInputBoxIndex != 0 && gEeprom.TX_VFO == vfo_num;
|
const bool inputting = gInputBoxIndex != 0 && gEeprom.TX_VFO == vfo_num;
|
||||||
if (!inputting)
|
if (!inputting)
|
||||||
@@ -806,9 +768,7 @@ void UI_DisplayMain(void)
|
|||||||
else
|
else
|
||||||
sprintf(String, "M%.3s", INPUTBOX_GetAscii()); // show the input text
|
sprintf(String, "M%.3s", INPUTBOX_GetAscii()); // show the input text
|
||||||
UI_PrintStringSmallNormal(String, x, 0, line + 1);
|
UI_PrintStringSmallNormal(String, x, 0, line + 1);
|
||||||
}
|
} else if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { // frequency mode
|
||||||
else if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
|
||||||
{ // frequency mode
|
|
||||||
// show the frequency band number
|
// show the frequency band number
|
||||||
const unsigned int x = 2;
|
const unsigned int x = 2;
|
||||||
char *buf = gEeprom.VfoInfo[vfo_num].pRX->Frequency < _1GHz_in_KHz ? "" : "+";
|
char *buf = gEeprom.VfoInfo[vfo_num].pRX->Frequency < _1GHz_in_KHz ? "" : "+";
|
||||||
@@ -840,13 +800,11 @@ void UI_DisplayMain(void)
|
|||||||
state = VFO_STATE_ALARM;
|
state = VFO_STATE_ALARM;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (state != VFO_STATE_NORMAL)
|
if (state != VFO_STATE_NORMAL) {
|
||||||
{
|
|
||||||
if (state < ARRAY_SIZE(VfoStateStr))
|
if (state < ARRAY_SIZE(VfoStateStr))
|
||||||
UI_PrintString(VfoStateStr[state], 31, 0, line, 8);
|
UI_PrintString(VfoStateStr[state], 31, 0, line, 8);
|
||||||
}
|
} else if (gInputBoxIndex > 0 && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]) &&
|
||||||
else if (gInputBoxIndex > 0 && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]) && gEeprom.TX_VFO == vfo_num)
|
gEeprom.TX_VFO == vfo_num) { // user entering a frequency
|
||||||
{ // user entering a frequency
|
|
||||||
const char *ascii = INPUTBOX_GetAscii();
|
const char *ascii = INPUTBOX_GetAscii();
|
||||||
bool isGigaF = frequency >= _1GHz_in_KHz;
|
bool isGigaF = frequency >= _1GHz_in_KHz;
|
||||||
sprintf(String, "%.*s.%.3s", 3 + isGigaF, ascii, ascii + 3 + isGigaF);
|
sprintf(String, "%.*s.%.3s", 3 + isGigaF, ascii, ascii + 3 + isGigaF);
|
||||||
@@ -857,8 +815,7 @@ void UI_DisplayMain(void)
|
|||||||
String[7] = 0;
|
String[7] = 0;
|
||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 32, line, false);
|
UI_DisplayFrequency(String, 32, line, false);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
@@ -866,17 +823,13 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
} else {
|
||||||
else
|
if (gCurrentFunction == FUNCTION_TRANSMIT) { // transmitting
|
||||||
{
|
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
|
||||||
{ // transmitting
|
|
||||||
if (activeTxVFO == vfo_num)
|
if (activeTxVFO == vfo_num)
|
||||||
frequency = gEeprom.VfoInfo[vfo_num].pTX->Frequency;
|
frequency = gEeprom.VfoInfo[vfo_num].pTX->Frequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { // it's a channel
|
||||||
{ // it's a channel
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
if(gEeprom.MENU_LOCK == false) {
|
if(gEeprom.MENU_LOCK == false) {
|
||||||
@@ -884,39 +837,30 @@ void UI_DisplayMain(void)
|
|||||||
uint8_t countList = 0;
|
uint8_t countList = 0;
|
||||||
uint8_t shiftList = 0;
|
uint8_t shiftList = 0;
|
||||||
|
|
||||||
if(gMR_ChannelExclude[gEeprom.ScreenChannel[vfo_num]] == false)
|
if (gMR_ChannelExclude[gEeprom.ScreenChannel[vfo_num]] == false) {
|
||||||
{
|
|
||||||
// show the scan list assigment symbols
|
// show the scan list assigment symbols
|
||||||
const ChannelAttributes_t att = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]];
|
const ChannelAttributes_t att = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]];
|
||||||
|
|
||||||
countList = att.scanlist1 + att.scanlist2 + att.scanlist3;
|
countList = att.scanlist1 + att.scanlist2 + att.scanlist3;
|
||||||
|
|
||||||
if(countList == 0)
|
if (countList == 0) {
|
||||||
{
|
|
||||||
memcpy(p_line0 + 127 - (1 * 6), BITMAP_ScanList0, sizeof(BITMAP_ScanList0));
|
memcpy(p_line0 + 127 - (1 * 6), BITMAP_ScanList0, sizeof(BITMAP_ScanList0));
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
shiftList = countList;
|
shiftList = countList;
|
||||||
|
|
||||||
if (att.scanlist1)
|
if (att.scanlist1) {
|
||||||
{
|
|
||||||
memcpy(p_line0 + 127 - (shiftList * 6), BITMAP_ScanList1, sizeof(BITMAP_ScanList1));
|
memcpy(p_line0 + 127 - (shiftList * 6), BITMAP_ScanList1, sizeof(BITMAP_ScanList1));
|
||||||
shiftList--;
|
shiftList--;
|
||||||
}
|
}
|
||||||
if (att.scanlist2)
|
if (att.scanlist2) {
|
||||||
{
|
|
||||||
memcpy(p_line0 + 127 - (shiftList * 6), BITMAP_ScanList2, sizeof(BITMAP_ScanList2));
|
memcpy(p_line0 + 127 - (shiftList * 6), BITMAP_ScanList2, sizeof(BITMAP_ScanList2));
|
||||||
shiftList--;
|
shiftList--;
|
||||||
}
|
}
|
||||||
if (att.scanlist3)
|
if (att.scanlist3) {
|
||||||
{
|
|
||||||
memcpy(p_line0 + 127 - (shiftList * 6), BITMAP_ScanList3, sizeof(BITMAP_ScanList3));
|
memcpy(p_line0 + 127 - (shiftList * 6), BITMAP_ScanList3, sizeof(BITMAP_ScanList3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
memcpy(p_line0 + 127 - (1 * 6), BITMAP_ScanListE, sizeof(BITMAP_ScanListE));
|
memcpy(p_line0 + 127 - (1 * 6), BITMAP_ScanListE, sizeof(BITMAP_ScanListE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -928,14 +872,14 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
// compander symbol
|
// compander symbol
|
||||||
#ifndef ENABLE_BIG_FREQ
|
#ifndef ENABLE_BIG_FREQ
|
||||||
|
const ChannelAttributes_t att = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]];
|
||||||
if (att.compander)
|
if (att.compander)
|
||||||
memcpy(p_line0 + 120 + LCD_WIDTH, BITMAP_compand, sizeof(BITMAP_compand));
|
memcpy(p_line0 + 120 + LCD_WIDTH, BITMAP_compand, sizeof(BITMAP_compand));
|
||||||
#else
|
#else
|
||||||
// TODO: // find somewhere else to put the symbol
|
// TODO: // find somewhere else to put the symbol
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (gEeprom.CHANNEL_DISPLAY_MODE)
|
switch (gEeprom.CHANNEL_DISPLAY_MODE) {
|
||||||
{
|
|
||||||
case MDF_FREQUENCY: // show the channel frequency
|
case MDF_FREQUENCY: // show the channel frequency
|
||||||
sprintf(String, "%3u.%05u", frequency / 100000, frequency % 100000);
|
sprintf(String, "%3u.%05u", frequency / 100000, frequency % 100000);
|
||||||
#ifdef ENABLE_BIG_FREQ
|
#ifdef ENABLE_BIG_FREQ
|
||||||
@@ -945,8 +889,7 @@ void UI_DisplayMain(void)
|
|||||||
String[7] = 0;
|
String[7] = 0;
|
||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 32, line, false);
|
UI_DisplayFrequency(String, 32, line, false);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
@@ -964,27 +907,20 @@ void UI_DisplayMain(void)
|
|||||||
case MDF_NAME_FREQ: // show the channel name and frequency
|
case MDF_NAME_FREQ: // show the channel name and frequency
|
||||||
|
|
||||||
SETTINGS_FetchChannelName(String, gEeprom.ScreenChannel[vfo_num]);
|
SETTINGS_FetchChannelName(String, gEeprom.ScreenChannel[vfo_num]);
|
||||||
if (String[0] == 0)
|
if (String[0] == 0) { // no channel name, show the channel number instead
|
||||||
{ // no channel name, show the channel number instead
|
|
||||||
sprintf(String, "CH-%03u", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03u", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gEeprom.CHANNEL_DISPLAY_MODE == MDF_NAME) {
|
if (gEeprom.CHANNEL_DISPLAY_MODE == MDF_NAME) {
|
||||||
UI_PrintString(String, 32, 0, line, 8);
|
UI_PrintString(String, 32, 0, line, 8);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
UI_PrintString(String, 32, 0, line, 8);
|
UI_PrintString(String, 32, 0, line, 8);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
if (activeTxVFO == vfo_num) {
|
if (activeTxVFO == vfo_num) {
|
||||||
UI_PrintStringSmallBold(String, 32 + 4, 0, line);
|
UI_PrintStringSmallBold(String, 32 + 4, 0, line);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(String, 32 + 4, 0, line);
|
UI_PrintStringSmallNormal(String, 32 + 4, 0, line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -993,24 +929,20 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
sprintf(String, "%3u.%05u", frequency / 100000, frequency % 100000);
|
sprintf(String, "%3u.%05u", frequency / 100000, frequency % 100000);
|
||||||
if (frequency < _1GHz_in_KHz) {
|
if (frequency < _1GHz_in_KHz) {
|
||||||
// show the remaining 2 small frequency digits
|
// show the remaining 2 small frequency digits
|
||||||
UI_PrintStringSmallNormal(String + 7, 113, 0, line + 4);
|
UI_PrintStringSmallNormal(String + 7, 113, 0, line + 4);
|
||||||
String[7] = 0;
|
String[7] = 0;
|
||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 32, line + 3, false);
|
//UI_DisplayFrequency(String, 32, line + 3, false);
|
||||||
}
|
UI_PrintStringSmallNormal(String, 0, 20, line + 3);
|
||||||
else
|
} else {
|
||||||
{
|
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
UI_PrintString(String, 32, 0, line + 3, 8);
|
UI_PrintString(String, 32, 0, line + 3, 8);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
sprintf(String, "%03u.%05u", frequency / 100000, frequency % 100000);
|
sprintf(String, "%03u.%05u", frequency / 100000, frequency % 100000);
|
||||||
UI_PrintStringSmallNormal(String, 32 + 4, 0, line + 1);
|
UI_PrintStringSmallNormal(String, 32 + 4, 0, line + 1);
|
||||||
}
|
}
|
||||||
@@ -1022,9 +954,7 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
} else { // frequency mode
|
||||||
else
|
|
||||||
{ // frequency mode
|
|
||||||
sprintf(String, "%3u.%05u", frequency / 100000, frequency % 100000);
|
sprintf(String, "%3u.%05u", frequency / 100000, frequency % 100000);
|
||||||
|
|
||||||
#ifdef ENABLE_BIG_FREQ
|
#ifdef ENABLE_BIG_FREQ
|
||||||
@@ -1034,8 +964,7 @@ void UI_DisplayMain(void)
|
|||||||
String[7] = 0;
|
String[7] = 0;
|
||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 32, line, false);
|
UI_DisplayFrequency(String, 32, line, false);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
@@ -1058,8 +987,7 @@ void UI_DisplayMain(void)
|
|||||||
{ // show the TX/RX level
|
{ // show the TX/RX level
|
||||||
int8_t Level = -1;
|
int8_t Level = -1;
|
||||||
|
|
||||||
if (mode == VFO_MODE_TX)
|
if (mode == VFO_MODE_TX) { // TX power level
|
||||||
{ // TX power level
|
|
||||||
/*
|
/*
|
||||||
switch (gRxVfo->OUTPUT_POWER)
|
switch (gRxVfo->OUTPUT_POWER)
|
||||||
{
|
{
|
||||||
@@ -1081,10 +1009,7 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
Level = gRxVfo->OUTPUT_POWER - 1;
|
Level = gRxVfo->OUTPUT_POWER - 1;
|
||||||
}
|
} else if (mode == VFO_MODE_RX) { // RX signal level
|
||||||
else
|
|
||||||
if (mode == VFO_MODE_RX)
|
|
||||||
{ // RX signal level
|
|
||||||
#ifndef ENABLE_RSSI_BAR
|
#ifndef ENABLE_RSSI_BAR
|
||||||
// bar graph
|
// bar graph
|
||||||
if (gVFO_RSSI_bar_level[vfo_num] > 0)
|
if (gVFO_RSSI_bar_level[vfo_num] > 0)
|
||||||
@@ -1132,8 +1057,7 @@ void UI_DisplayMain(void)
|
|||||||
const FREQ_Config_t *pConfig = (mode == VFO_MODE_TX) ? vfoInfo->pTX : vfoInfo->pRX;
|
const FREQ_Config_t *pConfig = (mode == VFO_MODE_TX) ? vfoInfo->pTX : vfoInfo->pRX;
|
||||||
int8_t shift = 0;
|
int8_t shift = 0;
|
||||||
|
|
||||||
switch((int)pConfig->CodeType)
|
switch ((int) pConfig->CodeType) {
|
||||||
{
|
|
||||||
case 1:
|
case 1:
|
||||||
sprintf(String, "%u.%u", CTCSS_Options[pConfig->Code] / 10, CTCSS_Options[pConfig->Code] % 10);
|
sprintf(String, "%u.%u", CTCSS_Options[pConfig->Code] / 10, CTCSS_Options[pConfig->Code] % 10);
|
||||||
break;
|
break;
|
||||||
@@ -1151,31 +1075,23 @@ void UI_DisplayMain(void)
|
|||||||
shift = -10;
|
shift = -10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui) {
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(s, LCD_WIDTH + 22, 0, line + 1);
|
UI_PrintStringSmallNormal(s, LCD_WIDTH + 22, 0, line + 1);
|
||||||
UI_PrintStringSmallNormal(t, LCD_WIDTH + 2, 0, line + 1);
|
UI_PrintStringSmallNormal(t, LCD_WIDTH + 2, 0, line + 1);
|
||||||
|
|
||||||
if (isMainOnly() && !gDTMF_InputMode)
|
if (isMainOnly() && !gDTMF_InputMode) {
|
||||||
{
|
if (shift == 0) {
|
||||||
if(shift == 0)
|
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(String, 2, 0, 6);
|
UI_PrintStringSmallNormal(String, 2, 0, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((vfoInfo->StepFrequency / 100) < 100)
|
if ((vfoInfo->StepFrequency / 100) < 100) {
|
||||||
{
|
|
||||||
sprintf(String, "%d.%02uK", vfoInfo->StepFrequency / 100, vfoInfo->StepFrequency % 100);
|
sprintf(String, "%d.%02uK", vfoInfo->StepFrequency / 100, vfoInfo->StepFrequency % 100);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
sprintf(String, "%dK", vfoInfo->StepFrequency / 100);
|
sprintf(String, "%dK", vfoInfo->StepFrequency / 100);
|
||||||
}
|
}
|
||||||
UI_PrintStringSmallNormal(String, 46, 0, 6);
|
UI_PrintStringSmallNormal(String, 46, 0, 6);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((s != NULL) && (s[0] != '\0')) {
|
if ((s != NULL) && (s[0] != '\0')) {
|
||||||
GUI_DisplaySmallest(s, 58, line == 0 ? 17 : 49, false, true);
|
GUI_DisplaySmallest(s, 58, line == 0 ? 17 : 49, false, true);
|
||||||
}
|
}
|
||||||
@@ -1193,48 +1109,39 @@ void UI_DisplayMain(void)
|
|||||||
UI_PrintStringSmallNormal(s, LCD_WIDTH + 24, 0, line + 1);
|
UI_PrintStringSmallNormal(s, LCD_WIDTH + 24, 0, line + 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (state == VFO_STATE_NORMAL || state == VFO_STATE_ALARM)
|
if (state == VFO_STATE_NORMAL || state == VFO_STATE_ALARM) { // show the TX power
|
||||||
{ // show the TX power
|
|
||||||
uint8_t currentPower = vfoInfo->OUTPUT_POWER % 8;
|
uint8_t currentPower = vfoInfo->OUTPUT_POWER % 8;
|
||||||
uint8_t arrowPos = 19;
|
uint8_t arrowPos = 19;
|
||||||
bool userPower = false;
|
bool userPower = false;
|
||||||
|
|
||||||
if(currentPower == OUTPUT_POWER_USER)
|
if (currentPower == OUTPUT_POWER_USER) {
|
||||||
{
|
|
||||||
currentPower = gSetting_set_pwr;
|
currentPower = gSetting_set_pwr;
|
||||||
userPower = true;
|
userPower = true;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
currentPower--;
|
currentPower--;
|
||||||
userPower = false;
|
userPower = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui) {
|
||||||
{
|
|
||||||
const char pwr_short[][3] = {"L1", "L2", "L3", "L4", "L5", "M", "H"};
|
const char pwr_short[][3] = {"L1", "L2", "L3", "L4", "L5", "M", "H"};
|
||||||
//sprintf(String, "%s", pwr_short[currentPower]);
|
//sprintf(String, "%s", pwr_short[currentPower]);
|
||||||
//UI_PrintStringSmallNormal(String, LCD_WIDTH + 42, 0, line + 1);
|
//UI_PrintStringSmallNormal(String, LCD_WIDTH + 42, 0, line + 1);
|
||||||
UI_PrintStringSmallNormal(pwr_short[currentPower], LCD_WIDTH + 42, 0, line + 1);
|
UI_PrintStringSmallNormal(pwr_short[currentPower], LCD_WIDTH + 42, 0, line + 1);
|
||||||
|
|
||||||
arrowPos = 38;
|
arrowPos = 38;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
const char pwr_long[][5] = {"LOW1", "LOW2", "LOW3", "LOW4", "LOW5", "MID", "HIGH"};
|
const char pwr_long[][5] = {"LOW1", "LOW2", "LOW3", "LOW4", "LOW5", "MID", "HIGH"};
|
||||||
//sprintf(String, "%s", pwr_long[currentPower]);
|
//sprintf(String, "%s", pwr_long[currentPower]);
|
||||||
//GUI_DisplaySmallest(String, 24, line == 0 ? 17 : 49, false, true);
|
//GUI_DisplaySmallest(String, 24, line == 0 ? 17 : 49, false, true);
|
||||||
GUI_DisplaySmallest(pwr_long[currentPower], 24, line == 0 ? 17 : 49, false, true);
|
GUI_DisplaySmallest(pwr_long[currentPower], 24, line == 0 ? 17 : 49, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(userPower == true)
|
if (userPower == true) {
|
||||||
{
|
|
||||||
memcpy(p_line0 + 256 + arrowPos, BITMAP_PowerUser, sizeof(BITMAP_PowerUser));
|
memcpy(p_line0 + 256 + arrowPos, BITMAP_PowerUser, sizeof(BITMAP_PowerUser));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vfoInfo->freq_config_RX.Frequency != vfoInfo->freq_config_TX.Frequency)
|
if (vfoInfo->freq_config_RX.Frequency != vfoInfo->freq_config_TX.Frequency) { // show the TX offset symbol
|
||||||
{ // show the TX offset symbol
|
|
||||||
int i = vfoInfo->TX_OFFSET_FREQUENCY_DIRECTION % 3;
|
int i = vfoInfo->TX_OFFSET_FREQUENCY_DIRECTION % 3;
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
@@ -1249,12 +1156,9 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLE_FEAT_F4HWN
|
#if ENABLE_FEAT_F4HWN
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui) {
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 60, 0, line + 1);
|
UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 60, 0, line + 1);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
if(i == 3)
|
if(i == 3)
|
||||||
{
|
{
|
||||||
@@ -1277,12 +1181,9 @@ void UI_DisplayMain(void)
|
|||||||
if (vfoInfo->FrequencyReverse)
|
if (vfoInfo->FrequencyReverse)
|
||||||
#if ENABLE_FEAT_F4HWN
|
#if ENABLE_FEAT_F4HWN
|
||||||
{
|
{
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui) {
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal("R", LCD_WIDTH + 68, 0, line + 1);
|
UI_PrintStringSmallNormal("R", LCD_WIDTH + 68, 0, line + 1);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
GUI_DisplaySmallest("R", 51, line == 0 ? 17 : 49, false, true);
|
GUI_DisplaySmallest("R", 51, line == 0 ? 17 : 49, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1294,20 +1195,18 @@ void UI_DisplayMain(void)
|
|||||||
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
||||||
bool narrower = 0;
|
bool narrower = 0;
|
||||||
|
|
||||||
if(vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW && gSetting_set_nfm == 1)
|
if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW && gSetting_set_nfm == 1) {
|
||||||
{
|
|
||||||
narrower = 1;
|
narrower = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui) {
|
||||||
{
|
|
||||||
const char *bandWidthNames[] = {"W", "N", "N+"};
|
const char *bandWidthNames[] = {"W", "N", "N+"};
|
||||||
UI_PrintStringSmallNormal(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH + narrower], LCD_WIDTH + 80, 0, line + 1);
|
UI_PrintStringSmallNormal(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH + narrower], LCD_WIDTH + 80, 0,
|
||||||
}
|
line + 1);
|
||||||
else
|
} else {
|
||||||
{
|
|
||||||
const char *bandWidthNames[] = {"WIDE", "NAR", "NAR+"};
|
const char *bandWidthNames[] = {"WIDE", "NAR", "NAR+"};
|
||||||
GUI_DisplaySmallest(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH + narrower], 91, line == 0 ? 17 : 49, false, true);
|
GUI_DisplaySmallest(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH + narrower], 91, line == 0 ? 17 : 49, false,
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (gSetting_set_gui)
|
if (gSetting_set_gui)
|
||||||
@@ -1328,15 +1227,13 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
// show the DTMF decoding symbol
|
// show the DTMF decoding symbol
|
||||||
if (vfoInfo->DTMF_DECODING_ENABLE || gSetting_KILLED)
|
if (vfoInfo->DTMF_DECODING_ENABLE)
|
||||||
UI_PrintStringSmallNormal("DTMF", LCD_WIDTH + 78, 0, line + 1);
|
UI_PrintStringSmallNormal("DTMF", LCD_WIDTH + 78, 0, line + 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
// show the audio scramble symbol
|
// show the audio scramble symbol
|
||||||
if (vfoInfo->SCRAMBLING_TYPE > 0 && gSetting_ScrambleEnable)
|
if (vfoInfo->SCRAMBLING_TYPE > 0)
|
||||||
UI_PrintStringSmallNormal("SCR", LCD_WIDTH + 106, 0, line + 1);
|
UI_PrintStringSmallNormal("S", LCD_WIDTH + 106, 0, line);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
/*
|
/*
|
||||||
@@ -1386,8 +1283,7 @@ void UI_DisplayMain(void)
|
|||||||
UI_MAIN_PrintAGC(false);
|
UI_MAIN_PrintAGC(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (center_line == CENTER_LINE_NONE)
|
if (center_line == CENTER_LINE_NONE) { // we're free to use the middle line
|
||||||
{ // we're free to use the middle line
|
|
||||||
|
|
||||||
const bool rx = FUNCTION_IsRx();
|
const bool rx = FUNCTION_IsRx();
|
||||||
|
|
||||||
@@ -1395,8 +1291,7 @@ void UI_DisplayMain(void)
|
|||||||
if (gSetting_mic_bar && gCurrentFunction == FUNCTION_TRANSMIT) {
|
if (gSetting_mic_bar && gCurrentFunction == FUNCTION_TRANSMIT) {
|
||||||
center_line = CENTER_LINE_AUDIO_BAR;
|
center_line = CENTER_LINE_AUDIO_BAR;
|
||||||
UI_DisplayAudioBar();
|
UI_DisplayAudioBar();
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ENABLE_AM_FIX) && defined(ENABLE_AM_FIX_SHOW_DATA)
|
#if defined(ENABLE_AM_FIX) && defined(ENABLE_AM_FIX_SHOW_DATA)
|
||||||
@@ -1420,14 +1315,11 @@ void UI_DisplayMain(void)
|
|||||||
if (rx) {
|
if (rx) {
|
||||||
center_line = CENTER_LINE_RSSI;
|
center_line = CENTER_LINE_RSSI;
|
||||||
DisplayRSSIBar(false);
|
DisplayRSSIBar(false);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
if (rx || gCurrentFunction == FUNCTION_FOREGROUND || gCurrentFunction == FUNCTION_POWER_SAVE)
|
if (rx || gCurrentFunction == FUNCTION_FOREGROUND || gCurrentFunction == FUNCTION_POWER_SAVE) {
|
||||||
{
|
|
||||||
#if 1
|
#if 1
|
||||||
if (gSetting_live_DTMF_decoder && gDTMF_RX_live[0] != 0)
|
if (gSetting_live_DTMF_decoder && gDTMF_RX_live[0] != 0) { // show live DTMF decode
|
||||||
{ // show live DTMF decode
|
|
||||||
const unsigned int len = strlen(gDTMF_RX_live);
|
const unsigned int len = strlen(gDTMF_RX_live);
|
||||||
const unsigned int idx = (len > (17 - 5)) ? len - (17 - 5) : 0; // limit to last 'n' chars
|
const unsigned int idx = (len > (17 - 5)) ? len - (17 - 5) : 0; // limit to last 'n' chars
|
||||||
|
|
||||||
@@ -1442,12 +1334,9 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
sprintf(String, "DTMF %s", gDTMF_RX_live + idx);
|
sprintf(String, "DTMF %s", gDTMF_RX_live + idx);
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if (isMainOnly())
|
if (isMainOnly()) {
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(String, 2, 0, 5);
|
UI_PrintStringSmallNormal(String, 2, 0, 5);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
UI_PrintStringSmallNormal(String, 2, 0, 3);
|
UI_PrintStringSmallNormal(String, 2, 0, 3);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -1498,12 +1387,10 @@ void UI_DisplayMain(void)
|
|||||||
//if(gEeprom.MENU_LOCK == false)
|
//if(gEeprom.MENU_LOCK == false)
|
||||||
//{
|
//{
|
||||||
//#endif
|
//#endif
|
||||||
if (isMainOnly() && !gDTMF_InputMode)
|
if (isMainOnly() && !gDTMF_InputMode) {
|
||||||
{
|
|
||||||
sprintf(String, "VFO %s", activeTxVFO ? "B" : "A");
|
sprintf(String, "VFO %s", activeTxVFO ? "B" : "A");
|
||||||
UI_PrintStringSmallBold(String, 92, 0, 6);
|
UI_PrintStringSmallBold(String, 92, 0, 6);
|
||||||
for (uint8_t i = 92; i < 128; i++)
|
for (uint8_t i = 92; i < 128; i++) {
|
||||||
{
|
|
||||||
gFrameBuffer[6][i] ^= 0x7F;
|
gFrameBuffer[6][i] ^= 0x7F;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
450
ui/menu.c
450
ui/menu.c
@@ -40,23 +40,21 @@
|
|||||||
const t_menu_item MenuList[] =
|
const t_menu_item MenuList[] =
|
||||||
{
|
{
|
||||||
// text, menu ID
|
// text, menu ID
|
||||||
{"Step", MENU_STEP },
|
{"STP", MENU_STEP},
|
||||||
{"Power", MENU_TXP }, // was "TXP"
|
{"PWR", MENU_TXP}, // was "TXP"
|
||||||
{"RxDCS", MENU_R_DCS }, // was "R_DCS"
|
{"RDCS", MENU_R_DCS}, // was "R_DCS"
|
||||||
{"RxCTCS", MENU_R_CTCS }, // was "R_CTCS"
|
{"RCTCS", MENU_R_CTCS}, // was "R_CTCS"
|
||||||
{"TxDCS", MENU_T_DCS }, // was "T_DCS"
|
{"TDCS", MENU_T_DCS}, // was "T_DCS"
|
||||||
{"TxCTCS", MENU_T_CTCS }, // was "T_CTCS"
|
{"TCTCS", MENU_T_CTCS}, // was "T_CTCS"
|
||||||
{"TxODir", MENU_SFT_D}, // was "SFT_D"
|
{"TxODir", MENU_SFT_D}, // was "SFT_D"
|
||||||
{"TxOffs", MENU_OFFSET}, // was "OFFSET"
|
{"TxOffs", MENU_OFFSET}, // was "OFFSET"
|
||||||
{"W/N", MENU_W_N},
|
{"W/N", MENU_W_N},
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
{"SCR", MENU_SCR}, // was "SCR"
|
||||||
{"Scramb", MENU_SCR }, // was "SCR"
|
{"BusyL", MENU_BCL}, // was "BCL"
|
||||||
#endif
|
{"COMP", MENU_COMPAND},
|
||||||
{"BusyCL", MENU_BCL }, // was "BCL"
|
{"Mod", MENU_AM}, // was "AM"
|
||||||
{"Compnd", MENU_COMPAND },
|
|
||||||
{"Mode", MENU_AM }, // was "AM"
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
{"TXLock", MENU_TX_LOCK },
|
{"TXLck", MENU_TX_LOCK},
|
||||||
#endif
|
#endif
|
||||||
{"ScAdd1", MENU_S_ADD1},
|
{"ScAdd1", MENU_S_ADD1},
|
||||||
{"ScAdd2", MENU_S_ADD2},
|
{"ScAdd2", MENU_S_ADD2},
|
||||||
@@ -75,11 +73,11 @@ const t_menu_item MenuList[] =
|
|||||||
{"NOAA-S", MENU_NOAA_S },
|
{"NOAA-S", MENU_NOAA_S },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{"F1Shrt", MENU_F1SHRT },
|
{"F1S", MENU_F1SHRT},
|
||||||
{"F1Long", MENU_F1LONG },
|
{"F1L", MENU_F1LONG},
|
||||||
{"F2Shrt", MENU_F2SHRT },
|
{"F2S", MENU_F2SHRT},
|
||||||
{"F2Long", MENU_F2LONG },
|
{"F2L", MENU_F2LONG},
|
||||||
{"M Long", MENU_MLONG },
|
{"ML", MENU_MLONG},
|
||||||
|
|
||||||
{"KeyLck", MENU_AUTOLK}, // was "AUTOLk"
|
{"KeyLck", MENU_AUTOLK}, // was "AUTOLk"
|
||||||
{"TxTOut", MENU_TOT}, // was "TOT"
|
{"TxTOut", MENU_TOT}, // was "TOT"
|
||||||
@@ -88,7 +86,8 @@ const t_menu_item MenuList[] =
|
|||||||
{"Mic", MENU_MIC},
|
{"Mic", MENU_MIC},
|
||||||
{"MicBar", MENU_MIC_BAR},
|
{"MicBar", MENU_MIC_BAR},
|
||||||
{"ChDisp", MENU_MDF}, // was "MDF"
|
{"ChDisp", MENU_MDF}, // was "MDF"
|
||||||
{"POnMsg", MENU_PONMSG },
|
{"FSKMod", MENU_FSKMOD},
|
||||||
|
{"FSKSRC", MENU_FSKSRC}, // was "AUTOLk"
|
||||||
{"BLTime", MENU_ABR}, // was "ABR"
|
{"BLTime", MENU_ABR}, // was "ABR"
|
||||||
{"BLMin", MENU_ABR_MIN},
|
{"BLMin", MENU_ABR_MIN},
|
||||||
{"BLMax", MENU_ABR_MAX},
|
{"BLMax", MENU_ABR_MAX},
|
||||||
@@ -108,9 +107,9 @@ const t_menu_item MenuList[] =
|
|||||||
{"ANI ID", MENU_ANI_ID },
|
{"ANI ID", MENU_ANI_ID },
|
||||||
#endif
|
#endif
|
||||||
{"UPCode", MENU_UPCODE},
|
{"UPCode", MENU_UPCODE},
|
||||||
{"DWCode", MENU_DWCODE },
|
{"DNCode", MENU_DWCODE},
|
||||||
{"PTT ID", MENU_PTT_ID},
|
{"PTT ID", MENU_PTT_ID},
|
||||||
{"D ST", MENU_D_ST },
|
{"L DTMF", MENU_D_ST},
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
{"D Resp", MENU_D_RSP },
|
{"D Resp", MENU_D_RSP },
|
||||||
{"D Hold", MENU_D_HOLD },
|
{"D Hold", MENU_D_HOLD },
|
||||||
@@ -126,39 +125,36 @@ const t_menu_item MenuList[] =
|
|||||||
{"AM Fix", MENU_AM_FIX },
|
{"AM Fix", MENU_AM_FIX },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENABLE_VOX
|
||||||
{"VOX", MENU_VOX},
|
{"VOX", MENU_VOX},
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
{"SysInf", MENU_VOL }, // was "VOL"
|
|
||||||
#else
|
|
||||||
{"BatVol", MENU_VOL }, // was "VOL"
|
|
||||||
#endif
|
#endif
|
||||||
{"RxMode", MENU_TDR},
|
{"RxMode", MENU_TDR},
|
||||||
{"Sql", MENU_SQL},
|
{"Sql", MENU_SQL},
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
{"SetPwr", MENU_SET_PWR },
|
{"SPwr", MENU_SET_PWR},
|
||||||
{"SetPTT", MENU_SET_PTT },
|
{"SPTT", MENU_SET_PTT},
|
||||||
{"SetTOT", MENU_SET_TOT },
|
{"STOT", MENU_SET_TOT},
|
||||||
{"SetEOT", MENU_SET_EOT },
|
{"SEOT", MENU_SET_EOT},
|
||||||
{"SetCtr", MENU_SET_CTR },
|
{"SCtr", MENU_SET_CTR},
|
||||||
{"SetInv", MENU_SET_INV },
|
{"SInv", MENU_SET_INV},
|
||||||
{"SetLck", MENU_SET_LCK },
|
{"SLck", MENU_SET_LCK},
|
||||||
{"SetMet", MENU_SET_MET },
|
//{"SMet", MENU_SET_MET},
|
||||||
{"SetGUI", MENU_SET_GUI },
|
//{"SGUI", MENU_SET_GUI},
|
||||||
{"SetTmr", MENU_SET_TMR },
|
{"STmr", MENU_SET_TMR},
|
||||||
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
||||||
{"SetOff", MENU_SET_OFF },
|
{"SOff", MENU_SET_OFF},
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
||||||
{"SetNFM", MENU_SET_NFM },
|
{"SNFM", MENU_SET_NFM},
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_VOL
|
#ifdef ENABLE_FEAT_F4HWN_VOL
|
||||||
{"SetVol", MENU_SET_VOL },
|
{"SVol", MENU_SET_VOL},
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||||
{"SetKey", MENU_SET_KEY },
|
{"SKey", MENU_SET_KEY },
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
{"SetNWR", MENU_NOAA_S },
|
{"SNWR", MENU_NOAA_S },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
// hidden menu items from here on
|
// hidden menu items from here on
|
||||||
@@ -168,11 +164,9 @@ const t_menu_item MenuList[] =
|
|||||||
{"Tx 200", MENU_200TX }, // was "200TX"
|
{"Tx 200", MENU_200TX }, // was "200TX"
|
||||||
{"Tx 350", MENU_350TX }, // was "350TX"
|
{"Tx 350", MENU_350TX }, // was "350TX"
|
||||||
{"Tx 500", MENU_500TX }, // was "500TX"
|
{"Tx 500", MENU_500TX }, // was "500TX"
|
||||||
#endif
|
|
||||||
{"350 En", MENU_350EN }, // was "350EN"
|
{"350 En", MENU_350EN }, // was "350EN"
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
{"ScraEn", MENU_SCREN }, // was "SCREN"
|
|
||||||
#endif
|
#endif
|
||||||
|
//{"ScraEn", MENU_SCREN }, // was "SCREN"
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
{"FrCali", MENU_F_CALI}, // reference xtal calibration
|
{"FrCali", MENU_F_CALI}, // reference xtal calibration
|
||||||
#endif
|
#endif
|
||||||
@@ -187,14 +181,14 @@ const uint8_t FIRST_HIDDEN_MENU_ITEM = MENU_F_LOCK;
|
|||||||
|
|
||||||
const char gSubMenu_TXP[][6] =
|
const char gSubMenu_TXP[][6] =
|
||||||
{
|
{
|
||||||
"USER",
|
"USR",
|
||||||
"LOW 1",
|
"L1",
|
||||||
"LOW 2",
|
"L2",
|
||||||
"LOW 3",
|
"L3",
|
||||||
"LOW 4",
|
"L4",
|
||||||
"LOW 5",
|
"L5",
|
||||||
"MID",
|
"M",
|
||||||
"HIGH"
|
"H"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_SFT_D[][4] =
|
const char gSubMenu_SFT_D[][4] =
|
||||||
@@ -207,7 +201,7 @@ const char gSubMenu_SFT_D[][4] =
|
|||||||
const char gSubMenu_W_N[][7] =
|
const char gSubMenu_W_N[][7] =
|
||||||
{
|
{
|
||||||
"WIDE",
|
"WIDE",
|
||||||
"NARROW"
|
"NARR"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_OFF_ON[][4] =
|
const char gSubMenu_OFF_ON[][4] =
|
||||||
@@ -223,10 +217,10 @@ const char gSubMenu_NA[4] =
|
|||||||
|
|
||||||
const char *const gSubMenu_RXMode[] =
|
const char *const gSubMenu_RXMode[] =
|
||||||
{
|
{
|
||||||
"MAIN\nONLY", // TX and RX on main only
|
"MAIN", // TX and RX on main only
|
||||||
"DUAL RX\nRESPOND", // Watch both and respond
|
"RESP", // Watch both and respond
|
||||||
"CROSS\nBAND", // TX on main, RX on secondary
|
"XBAND ONLY", // TX on main, RX on secondary
|
||||||
"MAIN TX\nDUAL RX" // always TX on main, but RX on both
|
"DUALMON" // always TX on main, but RX on both
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
@@ -241,7 +235,7 @@ const char* const gSubMenu_RXMode[] =
|
|||||||
const char *const gSubMenu_MDF[] =
|
const char *const gSubMenu_MDF[] =
|
||||||
{
|
{
|
||||||
"FREQ",
|
"FREQ",
|
||||||
"CHANNEL\nNUMBER",
|
"CHNUMB",
|
||||||
"NAME",
|
"NAME",
|
||||||
"NAME\n+\nFREQ"
|
"NAME\n+\nFREQ"
|
||||||
};
|
};
|
||||||
@@ -268,28 +262,25 @@ const char* const gSubMenu_PTT_ID[] =
|
|||||||
{
|
{
|
||||||
"OFF",
|
"OFF",
|
||||||
"UP CODE",
|
"UP CODE",
|
||||||
"DOWN CODE",
|
"DN CODE",
|
||||||
"UP+DOWN\nCODE",
|
"UP+DN\nCODE",
|
||||||
"APOLLO\nQUINDAR"
|
"APOLLO"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_PONMSG[][8] =
|
const char gSubMenu_FSKMod[][8] =
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
"450",
|
||||||
"ALL",
|
"700",
|
||||||
"SOUND",
|
"A1200",
|
||||||
#else
|
"A2400",
|
||||||
"FULL",
|
"2400",
|
||||||
#endif
|
"NOAA"
|
||||||
"MESSAGE",
|
|
||||||
"VOLTAGE",
|
|
||||||
"NONE"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_ROGER[][6] =
|
const char gSubMenu_ROGER[][6] =
|
||||||
{
|
{
|
||||||
"OFF",
|
"OFF",
|
||||||
"ROGER",
|
"RGR",
|
||||||
"MDC"
|
"MDC"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -301,23 +292,23 @@ const char gSubMenu_RESET[][4] =
|
|||||||
|
|
||||||
const char *const gSubMenu_F_LOCK[] =
|
const char *const gSubMenu_F_LOCK[] =
|
||||||
{
|
{
|
||||||
"DEFAULT+\n137-174\n400-470",
|
"137-174\n400-470",
|
||||||
"FCC HAM\n144-148\n420-450",
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_CA
|
#ifdef ENABLE_FEAT_F4HWN_CA
|
||||||
|
"FCC HAM\n144-148\n420-450",
|
||||||
"CA HAM\n144-148\n430-450",
|
"CA HAM\n144-148\n430-450",
|
||||||
#endif
|
|
||||||
"CE HAM\n144-146\n430-440",
|
"CE HAM\n144-146\n430-440",
|
||||||
"GB HAM\n144-148\n430-440",
|
"GB HAM\n144-148\n430-440",
|
||||||
"137-174\n400-430",
|
"137-174\n400-430",
|
||||||
"137-174\n400-438",
|
"137-174\n400-438",
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_PMR
|
#ifdef ENABLE_FEAT_F4HWN_PMR
|
||||||
"PMR 446",
|
"PMR 446",
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN_GMRS_FRS_MURS
|
#ifdef ENABLE_FEAT_F4HWN_GMRS_FRS_MURS
|
||||||
"GMRS\nFRS\nMURS",
|
"GMRS\nFRS\nMURS",
|
||||||
#endif
|
#endif
|
||||||
"DISABLE\nALL",
|
"DIS\nALL",
|
||||||
"UNLOCK\nALL",
|
"UNL\nALL",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_RX_TX[][6] =
|
const char gSubMenu_RX_TX[][6] =
|
||||||
@@ -331,41 +322,39 @@ const char gSubMenu_RX_TX[][6] =
|
|||||||
const char gSubMenu_BAT_TXT[][8] =
|
const char gSubMenu_BAT_TXT[][8] =
|
||||||
{
|
{
|
||||||
"NONE",
|
"NONE",
|
||||||
"VOLTAGE",
|
"VLT",
|
||||||
"PERCENT"
|
"PRC"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_BATTYP[][9] =
|
const char gSubMenu_BATTYP[][9] =
|
||||||
{
|
{
|
||||||
"1600mAh",
|
"16",
|
||||||
"2200mAh",
|
"22",
|
||||||
"3500mAh"
|
"35"
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
const char gSubMenu_SCRAMBLER[][7] =
|
const char gSubMenu_SCRAMBLER[][7] =
|
||||||
{
|
{
|
||||||
"OFF",
|
"OFF",
|
||||||
"2600Hz",
|
"26K",
|
||||||
"2700Hz",
|
"27K",
|
||||||
"2800Hz",
|
"28K",
|
||||||
"2900Hz",
|
"29K",
|
||||||
"3000Hz",
|
"30K",
|
||||||
"3100Hz",
|
"31K",
|
||||||
"3200Hz",
|
"32K",
|
||||||
"3300Hz",
|
"33K",
|
||||||
"3400Hz",
|
"34K",
|
||||||
"3500Hz"
|
"35K"
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
const char gSubMenu_SET_PWR[][6] =
|
const char gSubMenu_SET_PWR[][6] =
|
||||||
{
|
{
|
||||||
"< 20m",
|
"<.02",
|
||||||
"125m",
|
".125",
|
||||||
"250m",
|
".25",
|
||||||
"500m",
|
".5",
|
||||||
"1",
|
"1",
|
||||||
"2",
|
"2",
|
||||||
"5"
|
"5"
|
||||||
@@ -373,35 +362,29 @@ const char gSubMenu_SCRAMBLER[][7] =
|
|||||||
|
|
||||||
const char gSubMenu_SET_PTT[][8] =
|
const char gSubMenu_SET_PTT[][8] =
|
||||||
{
|
{
|
||||||
"CLASSIC",
|
"HOLD",
|
||||||
"ONEPUSH"
|
"TAP"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_SET_TOT[][7] = // Use by SET_EOT too
|
const char gSubMenu_SET_TOT[][7] = // Use by SET_EOT too
|
||||||
{
|
{
|
||||||
"OFF",
|
"OFF",
|
||||||
"SOUND",
|
"SND",
|
||||||
"VISUAL",
|
"VIS",
|
||||||
"ALL"
|
"ALL"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char gSubMenu_SET_LCK[][9] =
|
const char gSubMenu_SET_LCK[][9] =
|
||||||
{
|
{
|
||||||
"KEYS",
|
"KEY",
|
||||||
"KEYS+PTT"
|
"KEY+PTT"
|
||||||
};
|
|
||||||
|
|
||||||
const char gSubMenu_SET_MET[][8] =
|
|
||||||
{
|
|
||||||
"TINY",
|
|
||||||
"CLASSIC"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
||||||
const char gSubMenu_SET_NFM[][9] =
|
const char gSubMenu_SET_NFM[][9] =
|
||||||
{
|
{
|
||||||
"NARROW",
|
"NRW",
|
||||||
"NARROWER"
|
"NRWER"
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -421,10 +404,10 @@ const t_sidefunction gSubMenu_SIDEFUNCTIONS[] =
|
|||||||
{
|
{
|
||||||
{"NONE", ACTION_OPT_NONE},
|
{"NONE", ACTION_OPT_NONE},
|
||||||
#ifdef ENABLE_FLASHLIGHT
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
{"FLASH\nLIGHT", ACTION_OPT_FLASHLIGHT},
|
{"FLASH", ACTION_OPT_FLASHLIGHT},
|
||||||
#endif
|
#endif
|
||||||
{"POWER", ACTION_OPT_POWER},
|
{"PWR", ACTION_OPT_POWER},
|
||||||
{"MONITOR", ACTION_OPT_MONITOR},
|
{"MON", ACTION_OPT_MONITOR},
|
||||||
{"SCAN", ACTION_OPT_SCAN},
|
{"SCAN", ACTION_OPT_SCAN},
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
{"VOX", ACTION_OPT_VOX},
|
{"VOX", ACTION_OPT_VOX},
|
||||||
@@ -433,16 +416,16 @@ const t_sidefunction gSubMenu_SIDEFUNCTIONS[] =
|
|||||||
{"ALARM", ACTION_OPT_ALARM},
|
{"ALARM", ACTION_OPT_ALARM},
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
{"FM RADIO", ACTION_OPT_FM},
|
{"WFM", ACTION_OPT_FM},
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_TX1750
|
#ifdef ENABLE_TX1750
|
||||||
{"1750Hz", ACTION_OPT_1750},
|
{"1750", ACTION_OPT_1750},
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_REGA
|
#ifdef ENABLE_REGA
|
||||||
{"REGA\nALARM", ACTION_OPT_REGA_ALARM},
|
{"REGA\nALARM", ACTION_OPT_REGA_ALARM},
|
||||||
{"REGA\nTEST", ACTION_OPT_REGA_TEST},
|
{"REGA\nTEST", ACTION_OPT_REGA_TEST},
|
||||||
#endif
|
#endif
|
||||||
{"LOCK\nKEYPAD", ACTION_OPT_KEYLOCK},
|
{"LOCK\nKEY", ACTION_OPT_KEYLOCK},
|
||||||
{"VFO A\nVFO B", ACTION_OPT_A_B},
|
{"VFO A\nVFO B", ACTION_OPT_A_B},
|
||||||
{"VFO\nMEM", ACTION_OPT_VFO_MR},
|
{"VFO\nMEM", ACTION_OPT_VFO_MR},
|
||||||
{"MODE", ACTION_OPT_SWITCH_DEMODUL},
|
{"MODE", ACTION_OPT_SWITCH_DEMODUL},
|
||||||
@@ -450,10 +433,10 @@ const t_sidefunction gSubMenu_SIDEFUNCTIONS[] =
|
|||||||
{"BLMIN\nTMP OFF", ACTION_OPT_BLMIN_TMP_OFF}, //BackLight Minimum Temporay OFF
|
{"BLMIN\nTMP OFF", ACTION_OPT_BLMIN_TMP_OFF}, //BackLight Minimum Temporay OFF
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
{"RX MODE", ACTION_OPT_RXMODE},
|
{"RX MOD", ACTION_OPT_RXMODE},
|
||||||
{"MAIN ONLY", ACTION_OPT_MAINONLY},
|
{"MAIN ONLY", ACTION_OPT_MAINONLY},
|
||||||
{"PTT", ACTION_OPT_PTT},
|
{"PTT", ACTION_OPT_PTT},
|
||||||
{"WIDE\nNARROW", ACTION_OPT_WN},
|
{"WIDE\nNAR", ACTION_OPT_WN},
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
{"MUTE", ACTION_OPT_MUTE},
|
{"MUTE", ACTION_OPT_MUTE},
|
||||||
#endif
|
#endif
|
||||||
@@ -468,6 +451,7 @@ const uint8_t gSubMenu_SIDEFUNCTIONS_size = ARRAY_SIZE(gSubMenu_SIDEFUNCTIONS);
|
|||||||
|
|
||||||
bool gIsInSubMenu;
|
bool gIsInSubMenu;
|
||||||
uint8_t gMenuCursor;
|
uint8_t gMenuCursor;
|
||||||
|
|
||||||
int UI_MENU_GetCurrentMenuId() {
|
int UI_MENU_GetCurrentMenuId() {
|
||||||
if (gMenuCursor < ARRAY_SIZE(MenuList))
|
if (gMenuCursor < ARRAY_SIZE(MenuList))
|
||||||
return MenuList[gMenuCursor].menu_id;
|
return MenuList[gMenuCursor].menu_id;
|
||||||
@@ -475,8 +459,7 @@ int UI_MENU_GetCurrentMenuId() {
|
|||||||
return MenuList[ARRAY_SIZE(MenuList) - 1].menu_id;
|
return MenuList[ARRAY_SIZE(MenuList) - 1].menu_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t UI_MENU_GetMenuIdx(uint8_t id)
|
uint8_t UI_MENU_GetMenuIdx(uint8_t id) {
|
||||||
{
|
|
||||||
for (uint8_t i = 0; i < ARRAY_SIZE(MenuList); i++)
|
for (uint8_t i = 0; i < ARRAY_SIZE(MenuList); i++)
|
||||||
if (MenuList[i].menu_id == id)
|
if (MenuList[i].menu_id == id)
|
||||||
return i;
|
return i;
|
||||||
@@ -490,8 +473,7 @@ char edit_original[17]; // a copy of the text before editing so that we can e
|
|||||||
char edit[17];
|
char edit[17];
|
||||||
int edit_index;
|
int edit_index;
|
||||||
|
|
||||||
void UI_DisplayMenu(void)
|
void UI_DisplayMenu(void) {
|
||||||
{
|
|
||||||
const unsigned int menu_list_width = 6; // max no. of characters on the menu list (left side)
|
const unsigned int menu_list_width = 6; // max no. of characters on the menu list (left side)
|
||||||
const unsigned int menu_item_x1 = (8 * menu_list_width) + 2;
|
const unsigned int menu_item_x1 = (8 * menu_list_width) + 2;
|
||||||
const unsigned int menu_item_x2 = LCD_WIDTH - 1;
|
const unsigned int menu_item_x2 = LCD_WIDTH - 1;
|
||||||
@@ -508,8 +490,7 @@ void UI_DisplayMenu(void)
|
|||||||
UI_DrawLineBuffer(gFrameBuffer, 48, 0, 48, 55, 1); // Be ware, status zone = 8 lines, the rest = 56 ->total 64
|
UI_DrawLineBuffer(gFrameBuffer, 48, 0, 48, 55, 1); // Be ware, status zone = 8 lines, the rest = 56 ->total 64
|
||||||
//UI_DrawLineDottedBuffer(gFrameBuffer, 0, 46, 50, 46, 1);
|
//UI_DrawLineDottedBuffer(gFrameBuffer, 0, 46, 50, 46, 1);
|
||||||
|
|
||||||
for (uint8_t i = 0; i < 48; i += 2)
|
for (uint8_t i = 0; i < 48; i += 2) {
|
||||||
{
|
|
||||||
gFrameBuffer[5][i] = 0x40;
|
gFrameBuffer[5][i] = 0x40;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -547,8 +528,7 @@ void UI_DisplayMenu(void)
|
|||||||
i = 1;
|
i = 1;
|
||||||
|
|
||||||
if (!gIsInSubMenu) {
|
if (!gIsInSubMenu) {
|
||||||
while (i < 2)
|
while (i < 2) { // leading menu items - small text
|
||||||
{ // leading menu items - small text
|
|
||||||
const int k = menu_index + i - 2;
|
const int k = menu_index + i - 2;
|
||||||
if (k < 0)
|
if (k < 0)
|
||||||
UI_PrintStringSmallNormal(MenuList[gMenuListCount + k].name, 0, 0, i); // wrap-a-round
|
UI_PrintStringSmallNormal(MenuList[gMenuListCount + k].name, 0, 0, i); // wrap-a-round
|
||||||
@@ -558,17 +538,18 @@ void UI_DisplayMenu(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// current menu item - keep big n fat
|
// current menu item - keep big n fat
|
||||||
if (menu_index >= 0 && menu_index < (int)gMenuListCount)
|
if (menu_index >= 0 && menu_index < (int) gMenuListCount) {
|
||||||
UI_PrintString(MenuList[menu_index].name, 0, 0, 2, 8);
|
//UI_DrawRectangleBuffer(gFrameBuffer, 0, 37, 16, 45, true);
|
||||||
|
UI_PrintStringSmallBold(MenuList[menu_index].name, 0, 0, 2);
|
||||||
|
}
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
while (i < 4)
|
while (i < 5) { // trailing menu item - small text
|
||||||
{ // trailing menu item - small text
|
|
||||||
const int k = menu_index + i - 2;
|
const int k = menu_index + i - 2;
|
||||||
if (k >= 0 && k < (int) gMenuListCount)
|
if (k >= 0 && k < (int) gMenuListCount)
|
||||||
UI_PrintStringSmallNormal(MenuList[k].name, 0, 0, 1 + i);
|
UI_PrintStringSmallNormal(MenuList[k].name, 0, 0, i);
|
||||||
else if (k >= (int) gMenuListCount)
|
else if (k >= (int) gMenuListCount)
|
||||||
UI_PrintStringSmallNormal(MenuList[gMenuListCount - k].name, 0, 0, 1 + i); // wrap-a-round
|
UI_PrintStringSmallNormal(MenuList[gMenuListCount - k].name, 0, 0, i); // wrap-a-round
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -577,9 +558,7 @@ void UI_DisplayMenu(void)
|
|||||||
sprintf(String, "%2u.%u", 1 + gMenuCursor, gMenuListCount);
|
sprintf(String, "%2u.%u", 1 + gMenuCursor, gMenuListCount);
|
||||||
UI_PrintStringSmallNormal(String, 2, 0, 6);
|
UI_PrintStringSmallNormal(String, 2, 0, 6);
|
||||||
#endif
|
#endif
|
||||||
}
|
} else if (menu_index >= 0 && menu_index < (int) gMenuListCount) { // current menu item
|
||||||
else if (menu_index >= 0 && menu_index < (int)gMenuListCount)
|
|
||||||
{ // current menu item
|
|
||||||
// strcat(String, ":");
|
// strcat(String, ":");
|
||||||
UI_PrintString(MenuList[menu_index].name, 0, 0, 0, 8);
|
UI_PrintString(MenuList[menu_index].name, 0, 0, 0, 8);
|
||||||
// UI_PrintStringSmallNormal(String, 0, 0, 0);
|
// UI_PrintStringSmallNormal(String, 0, 0, 0);
|
||||||
@@ -610,14 +589,12 @@ void UI_DisplayMenu(void)
|
|||||||
uint8_t gaugeMax = 0;
|
uint8_t gaugeMax = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (UI_MENU_GetCurrentMenuId())
|
switch (UI_MENU_GetCurrentMenuId()) {
|
||||||
{
|
|
||||||
case MENU_SQL:
|
case MENU_SQL:
|
||||||
sprintf(String, "%d", gSubMenuSelection);
|
sprintf(String, "%d", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_MIC:
|
case MENU_MIC: { // display the mic gain in actual dB rather than just an index number
|
||||||
{ // display the mic gain in actual dB rather than just an index number
|
|
||||||
const uint8_t mic = gMicGain_dB2[gSubMenuSelection];
|
const uint8_t mic = gMicGain_dB2[gSubMenuSelection];
|
||||||
sprintf(String, "+%u.%01udB", mic / 2, mic % 2);
|
sprintf(String, "+%u.%01udB", mic / 2, mic % 2);
|
||||||
}
|
}
|
||||||
@@ -638,12 +615,9 @@ void UI_DisplayMenu(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
case MENU_TXP:
|
case MENU_TXP:
|
||||||
if(gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0) {
|
||||||
{
|
|
||||||
strcpy(String, gSubMenu_TXP[gSubMenuSelection]);
|
strcpy(String, gSubMenu_TXP[gSubMenuSelection]);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
sprintf(String, "%s\n%sW", gSubMenu_TXP[gSubMenuSelection], gSubMenu_SET_PWR[gSubMenuSelection - 1]);
|
sprintf(String, "%s\n%sW", gSubMenu_TXP[gSubMenuSelection], gSubMenu_SET_PWR[gSubMenuSelection - 1]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -659,12 +633,12 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_R_CTCS:
|
case MENU_R_CTCS:
|
||||||
case MENU_T_CTCS:
|
case MENU_T_CTCS: {
|
||||||
{
|
|
||||||
if (gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0)
|
||||||
strcpy(String, gSubMenu_OFF_ON[0]);
|
strcpy(String, gSubMenu_OFF_ON[0]);
|
||||||
else
|
else
|
||||||
sprintf(String, "%u.%uHz", CTCSS_Options[gSubMenuSelection - 1] / 10, CTCSS_Options[gSubMenuSelection - 1] % 10);
|
sprintf(String, "%u.%uHz", CTCSS_Options[gSubMenuSelection - 1] / 10,
|
||||||
|
CTCSS_Options[gSubMenuSelection - 1] % 10);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -673,13 +647,10 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_OFFSET:
|
case MENU_OFFSET:
|
||||||
if (!gIsInSubMenu || gInputBoxIndex == 0)
|
if (!gIsInSubMenu || gInputBoxIndex == 0) {
|
||||||
{
|
|
||||||
sprintf(String, "%3d.%05u", gSubMenuSelection / 100000, abs(gSubMenuSelection) % 100000);
|
sprintf(String, "%3d.%05u", gSubMenuSelection / 100000, abs(gSubMenuSelection) % 100000);
|
||||||
UI_PrintString(String, menu_item_x1, menu_item_x2, 1, 8);
|
UI_PrintString(String, menu_item_x1, menu_item_x2, 1, 8);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
const char *ascii = INPUTBOX_GetAscii();
|
const char *ascii = INPUTBOX_GetAscii();
|
||||||
sprintf(String, "%.3s.%.3s ", ascii, ascii + 3);
|
sprintf(String, "%.3s.%.3s ", ascii, ascii + 3);
|
||||||
UI_PrintString(String, menu_item_x1, menu_item_x2, 1, 8);
|
UI_PrintString(String, menu_item_x1, menu_item_x2, 1, 8);
|
||||||
@@ -694,17 +665,13 @@ void UI_DisplayMenu(void)
|
|||||||
strcpy(String, gSubMenu_W_N[gSubMenuSelection]);
|
strcpy(String, gSubMenu_W_N[gSubMenuSelection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
case MENU_SCR:
|
case MENU_SCR:
|
||||||
strcpy(String, gSubMenu_SCRAMBLER[gSubMenuSelection]);
|
strcpy(String, gSubMenu_SCRAMBLER[gSubMenuSelection]);
|
||||||
#if 1
|
if (gSubMenuSelection > 0)
|
||||||
if (gSubMenuSelection > 0 && gSetting_ScrambleEnable)
|
|
||||||
BK4819_EnableScramble(gSubMenuSelection - 1);
|
BK4819_EnableScramble(gSubMenuSelection - 1);
|
||||||
else
|
else
|
||||||
BK4819_DisableScramble();
|
BK4819_DisableScramble();
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
|
|
||||||
case MENU_VOX:
|
case MENU_VOX:
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
@@ -715,12 +682,9 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ABR:
|
case MENU_ABR:
|
||||||
if(gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0) {
|
||||||
{
|
|
||||||
strcpy(String, gSubMenu_OFF_ON[0]);
|
strcpy(String, gSubMenu_OFF_ON[0]);
|
||||||
}
|
} else if (gSubMenuSelection < 61) {
|
||||||
else if(gSubMenuSelection < 61)
|
|
||||||
{
|
|
||||||
sprintf(String, "%02dm:%02ds", (((gSubMenuSelection) * 5) / 60), (((gSubMenuSelection) * 5) % 60));
|
sprintf(String, "%02dm:%02ds", (((gSubMenuSelection) * 5) / 60), (((gSubMenuSelection) * 5) % 60));
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
//ST7565_Gauge(4, 1, 60, gSubMenuSelection);
|
//ST7565_Gauge(4, 1, 60, gSubMenuSelection);
|
||||||
@@ -728,9 +692,7 @@ void UI_DisplayMenu(void)
|
|||||||
gaugeMin = 1;
|
gaugeMin = 1;
|
||||||
gaugeMax = 60;
|
gaugeMax = 60;
|
||||||
#endif
|
#endif
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy(String, "ON");
|
strcpy(String, "ON");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -756,8 +718,7 @@ void UI_DisplayMenu(void)
|
|||||||
case MENU_AUTOLK:
|
case MENU_AUTOLK:
|
||||||
if (gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0)
|
||||||
strcpy(String, gSubMenu_OFF_ON[0]);
|
strcpy(String, gSubMenu_OFF_ON[0]);
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
sprintf(String, "%02dm:%02ds", ((gSubMenuSelection * 15) / 60), ((gSubMenuSelection * 15) % 60));
|
sprintf(String, "%02dm:%02ds", ((gSubMenuSelection * 15) / 60), ((gSubMenuSelection * 15) % 60));
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
//ST7565_Gauge(4, 1, 40, gSubMenuSelection);
|
//ST7565_Gauge(4, 1, 40, gSubMenuSelection);
|
||||||
@@ -768,6 +729,10 @@ void UI_DisplayMenu(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MENU_FSKSRC:
|
||||||
|
sprintf(String, "%d", gSubMenuSelection);
|
||||||
|
break;
|
||||||
|
|
||||||
case MENU_COMPAND:
|
case MENU_COMPAND:
|
||||||
case MENU_ABR_ON_TX_RX:
|
case MENU_ABR_ON_TX_RX:
|
||||||
strcpy(String, gSubMenu_RX_TX[gSubMenuSelection]);
|
strcpy(String, gSubMenu_RX_TX[gSubMenuSelection]);
|
||||||
@@ -798,9 +763,7 @@ void UI_DisplayMenu(void)
|
|||||||
case MENU_500TX:
|
case MENU_500TX:
|
||||||
#endif
|
#endif
|
||||||
case MENU_350EN:
|
case MENU_350EN:
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
//case MENU_SCREN:
|
||||||
case MENU_SCREN:
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
case MENU_SET_TMR:
|
case MENU_SET_TMR:
|
||||||
#endif
|
#endif
|
||||||
@@ -809,15 +772,13 @@ void UI_DisplayMenu(void)
|
|||||||
|
|
||||||
case MENU_MEM_CH:
|
case MENU_MEM_CH:
|
||||||
case MENU_1_CALL:
|
case MENU_1_CALL:
|
||||||
case MENU_DEL_CH:
|
case MENU_DEL_CH: {
|
||||||
{
|
|
||||||
const bool valid = RADIO_CheckValidChannel(gSubMenuSelection, false, 0);
|
const bool valid = RADIO_CheckValidChannel(gSubMenuSelection, false, 0);
|
||||||
|
|
||||||
UI_GenerateChannelStringEx(String, valid, gSubMenuSelection);
|
UI_GenerateChannelStringEx(String, valid, gSubMenuSelection);
|
||||||
UI_PrintString(String, menu_item_x1, menu_item_x2, 0, 8);
|
UI_PrintString(String, menu_item_x1, menu_item_x2, 0, 8);
|
||||||
|
|
||||||
if (valid && !gAskForConfirmation)
|
if (valid && !gAskForConfirmation) { // show the frequency so that the user knows the channels frequency
|
||||||
{ // show the frequency so that the user knows the channels frequency
|
|
||||||
const uint32_t frequency = SETTINGS_FetchChannelFrequency(gSubMenuSelection);
|
const uint32_t frequency = SETTINGS_FetchChannelFrequency(gSubMenuSelection);
|
||||||
sprintf(String, "%u.%05u", frequency / 100000, frequency % 100000);
|
sprintf(String, "%u.%05u", frequency / 100000, frequency % 100000);
|
||||||
UI_PrintString(String, menu_item_x1, menu_item_x2, 4, 8);
|
UI_PrintString(String, menu_item_x1, menu_item_x2, 4, 8);
|
||||||
@@ -829,28 +790,23 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case MENU_MEM_NAME:
|
case MENU_MEM_NAME: {
|
||||||
{
|
|
||||||
const bool valid = RADIO_CheckValidChannel(gSubMenuSelection, false, 0);
|
const bool valid = RADIO_CheckValidChannel(gSubMenuSelection, false, 0);
|
||||||
|
|
||||||
UI_GenerateChannelStringEx(String, valid, gSubMenuSelection);
|
UI_GenerateChannelStringEx(String, valid, gSubMenuSelection);
|
||||||
UI_PrintString(String, menu_item_x1, menu_item_x2, 0, 8);
|
UI_PrintString(String, menu_item_x1, menu_item_x2, 0, 8);
|
||||||
|
|
||||||
if (valid)
|
if (valid) {
|
||||||
{
|
|
||||||
const uint32_t frequency = SETTINGS_FetchChannelFrequency(gSubMenuSelection);
|
const uint32_t frequency = SETTINGS_FetchChannelFrequency(gSubMenuSelection);
|
||||||
|
|
||||||
//if (!gIsInSubMenu || edit_index < 0)
|
//if (!gIsInSubMenu || edit_index < 0)
|
||||||
if (!gIsInSubMenu)
|
if (!gIsInSubMenu)
|
||||||
edit_index = -1;
|
edit_index = -1;
|
||||||
if (edit_index < 0)
|
if (edit_index < 0) { // show the channel name
|
||||||
{ // show the channel name
|
|
||||||
SETTINGS_FetchChannelName(String, gSubMenuSelection);
|
SETTINGS_FetchChannelName(String, gSubMenuSelection);
|
||||||
char *pPrintStr = String[0] ? String : "--";
|
char *pPrintStr = String[0] ? String : "--";
|
||||||
UI_PrintString(pPrintStr, menu_item_x1, menu_item_x2, 2, 8);
|
UI_PrintString(pPrintStr, menu_item_x1, menu_item_x2, 2, 8);
|
||||||
}
|
} else { // show the channel name being edited
|
||||||
else
|
|
||||||
{ // show the channel name being edited
|
|
||||||
//UI_PrintString(edit, menu_item_x1, 0, 2, 8);
|
//UI_PrintString(edit, menu_item_x1, 0, 2, 8);
|
||||||
UI_PrintString(edit, menu_item_x1, menu_item_x2, 2, 8);
|
UI_PrintString(edit, menu_item_x1, menu_item_x2, 2, 8);
|
||||||
if (edit_index < 10)
|
if (edit_index < 10)
|
||||||
@@ -858,8 +814,7 @@ void UI_DisplayMenu(void)
|
|||||||
UI_PrintString("^", menu_item_x1 - 1 + (8 * edit_index), 0, 4, 8); // show the cursor
|
UI_PrintString("^", menu_item_x1 - 1 + (8 * edit_index), 0, 4, 8); // show the cursor
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gAskForConfirmation)
|
if (!gAskForConfirmation) { // show the frequency so that the user knows the channels frequency
|
||||||
{ // show the frequency so that the user knows the channels frequency
|
|
||||||
sprintf(String, "%u.%05u", frequency / 100000, frequency % 100000);
|
sprintf(String, "%u.%05u", frequency / 100000, frequency % 100000);
|
||||||
UI_PrintString(String, menu_item_x1, menu_item_x2, 4 + (gIsInSubMenu && edit_index >= 0), 8);
|
UI_PrintString(String, menu_item_x1, menu_item_x2, 4 + (gIsInSubMenu && edit_index >= 0), 8);
|
||||||
}
|
}
|
||||||
@@ -894,23 +849,20 @@ void UI_DisplayMenu(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_SC_REV:
|
case MENU_SC_REV:
|
||||||
if(gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0) {
|
||||||
{
|
|
||||||
strcpy(String, "STOP");
|
strcpy(String, "STOP");
|
||||||
}
|
} else if (gSubMenuSelection < 81) {
|
||||||
else if(gSubMenuSelection < 81)
|
sprintf(String, "CARRIER\n%02ds:%03dms", ((gSubMenuSelection * 250) / 1000),
|
||||||
{
|
((gSubMenuSelection * 250) % 1000));
|
||||||
sprintf(String, "CARRIER\n%02ds:%03dms", ((gSubMenuSelection * 250) / 1000), ((gSubMenuSelection * 250) % 1000));
|
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
//ST7565_Gauge(5, 1, 80, gSubMenuSelection);
|
//ST7565_Gauge(5, 1, 80, gSubMenuSelection);
|
||||||
gaugeLine = 5;
|
gaugeLine = 5;
|
||||||
gaugeMin = 1;
|
gaugeMin = 1;
|
||||||
gaugeMax = 80;
|
gaugeMax = 80;
|
||||||
#endif
|
#endif
|
||||||
}
|
} else {
|
||||||
else
|
sprintf(String, "TIMEOUT\n%02dm:%02ds", (((gSubMenuSelection - 80) * 5) / 60),
|
||||||
{
|
(((gSubMenuSelection - 80) * 5) % 60));
|
||||||
sprintf(String, "TIMEOUT\n%02dm:%02ds", (((gSubMenuSelection - 80) * 5) / 60), (((gSubMenuSelection - 80) * 5) % 60));
|
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
//ST7565_Gauge(5, 80, 104, gSubMenuSelection);
|
//ST7565_Gauge(5, 80, 104, gSubMenuSelection);
|
||||||
gaugeLine = 5;
|
gaugeLine = 5;
|
||||||
@@ -989,45 +941,24 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_PONMSG:
|
case MENU_FSKMOD:
|
||||||
strcpy(String, gSubMenu_PONMSG[gSubMenuSelection]);
|
strcpy(String, gSubMenu_FSKMod[gSubMenuSelection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ROGER:
|
case MENU_ROGER:
|
||||||
strcpy(String, gSubMenu_ROGER[gSubMenuSelection]);
|
strcpy(String, gSubMenu_ROGER[gSubMenuSelection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_VOL:
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
sprintf(String, "%s\n%s",
|
|
||||||
AUTHOR_STRING_2,
|
|
||||||
VERSION_STRING_2
|
|
||||||
);
|
|
||||||
#else
|
|
||||||
sprintf(String, "%u.%02uV\n%u%%",
|
|
||||||
gBatteryVoltageAverage / 100, gBatteryVoltageAverage % 100,
|
|
||||||
BATTERY_VoltsToPercent(gBatteryVoltageAverage));
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MENU_RESET:
|
case MENU_RESET:
|
||||||
strcpy(String, gSubMenu_RESET[gSubMenuSelection]);
|
strcpy(String, gSubMenu_RESET[gSubMenuSelection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_F_LOCK:
|
case MENU_F_LOCK:
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
if(!gIsInSubMenu && gUnlockAllTxConfCnt>0 && gUnlockAllTxConfCnt<3)
|
|
||||||
#else
|
|
||||||
if(!gIsInSubMenu && gUnlockAllTxConfCnt>0 && gUnlockAllTxConfCnt<10)
|
|
||||||
#endif
|
|
||||||
strcpy(String, "READ\nMANUAL");
|
|
||||||
else
|
|
||||||
strcpy(String, gSubMenu_F_LOCK[gSubMenuSelection]);
|
strcpy(String, gSubMenu_F_LOCK[gSubMenuSelection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
case MENU_F_CALI:
|
case MENU_F_CALI: {
|
||||||
{
|
|
||||||
const uint32_t value = 22656 + gSubMenuSelection;
|
const uint32_t value = 22656 + gSubMenuSelection;
|
||||||
const uint32_t xtal_Hz = (0x4f0000u + value) * 5;
|
const uint32_t xtal_Hz = (0x4f0000u + value) * 5;
|
||||||
|
|
||||||
@@ -1040,8 +971,7 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_BATCAL:
|
case MENU_BATCAL: {
|
||||||
{
|
|
||||||
const uint16_t vol = (uint32_t) gBatteryVoltageAverage * gBatteryCalibration[3] / gSubMenuSelection;
|
const uint16_t vol = (uint32_t) gBatteryVoltageAverage * gBatteryCalibration[3] / gSubMenuSelection;
|
||||||
sprintf(String, "%u.%02uV\n%u", vol / 100, vol % 100, gSubMenuSelection);
|
sprintf(String, "%u.%02uV\n%u", vol / 100, vol % 100, gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
@@ -1061,12 +991,9 @@ void UI_DisplayMenu(void)
|
|||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
||||||
case MENU_SET_OFF:
|
case MENU_SET_OFF:
|
||||||
if(gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0) {
|
||||||
{
|
|
||||||
strcpy(String, gSubMenu_OFF_ON[0]);
|
strcpy(String, gSubMenu_OFF_ON[0]);
|
||||||
}
|
} else if (gSubMenuSelection < 121) {
|
||||||
else if(gSubMenuSelection < 121)
|
|
||||||
{
|
|
||||||
sprintf(String, "%dh:%02dm", (gSubMenuSelection / 60), (gSubMenuSelection % 60));
|
sprintf(String, "%dh:%02dm", (gSubMenuSelection / 60), (gSubMenuSelection % 60));
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
//ST7565_Gauge(4, 1, 120, gSubMenuSelection);
|
//ST7565_Gauge(4, 1, 120, gSubMenuSelection);
|
||||||
@@ -1112,12 +1039,9 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_TX_LOCK:
|
case MENU_TX_LOCK:
|
||||||
if(TX_freq_check(gEeprom.VfoInfo[gEeprom.TX_VFO].pRX->Frequency) == 0)
|
if (TX_freq_check(gEeprom.VfoInfo[gEeprom.TX_VFO].pRX->Frequency) == 0) {
|
||||||
{
|
|
||||||
strcpy(String, "Inside\nF Lock\nPlan");
|
strcpy(String, "Inside\nF Lock\nPlan");
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy(String, gSubMenu_OFF_ON[gSubMenuSelection]);
|
strcpy(String, gSubMenu_OFF_ON[gSubMenuSelection]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1126,8 +1050,8 @@ void UI_DisplayMenu(void)
|
|||||||
strcpy(String, gSubMenu_SET_LCK[gSubMenuSelection]);
|
strcpy(String, gSubMenu_SET_LCK[gSubMenuSelection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_SET_MET:
|
//case MENU_SET_MET:
|
||||||
case MENU_SET_GUI:
|
//case MENU_SET_GUI:
|
||||||
strcpy(String, gSubMenu_SET_MET[gSubMenuSelection]); // Same as SET_MET
|
strcpy(String, gSubMenu_SET_MET[gSubMenuSelection]); // Same as SET_MET
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1139,12 +1063,9 @@ void UI_DisplayMenu(void)
|
|||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_VOL
|
#ifdef ENABLE_FEAT_F4HWN_VOL
|
||||||
case MENU_SET_VOL:
|
case MENU_SET_VOL:
|
||||||
if(gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0) {
|
||||||
{
|
|
||||||
strcpy(String, gSubMenu_OFF_ON[0]);
|
strcpy(String, gSubMenu_OFF_ON[0]);
|
||||||
}
|
} else if (gSubMenuSelection < 64) {
|
||||||
else if(gSubMenuSelection < 64)
|
|
||||||
{
|
|
||||||
sprintf(String, "%02u", gSubMenuSelection);
|
sprintf(String, "%02u", gSubMenuSelection);
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
//ST7565_Gauge(4, 1, 63, gSubMenuSelection);
|
//ST7565_Gauge(4, 1, 63, gSubMenuSelection);
|
||||||
@@ -1172,34 +1093,28 @@ void UI_DisplayMenu(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO)
|
||||||
if(gaugeLine != 0)
|
if (gaugeLine != 0) {
|
||||||
{
|
|
||||||
ST7565_Gauge(gaugeLine, gaugeMin, gaugeMax, gSubMenuSelection);
|
ST7565_Gauge(gaugeLine, gaugeMin, gaugeMax, gSubMenuSelection);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!already_printed)
|
if (!already_printed) { // we now do multi-line text in a single string
|
||||||
{ // we now do multi-line text in a single string
|
|
||||||
|
|
||||||
unsigned int y;
|
unsigned int y;
|
||||||
unsigned int lines = 1;
|
unsigned int lines = 1;
|
||||||
unsigned int len = strlen(String);
|
unsigned int len = strlen(String);
|
||||||
bool small = false;
|
bool small = false;
|
||||||
|
|
||||||
if (len > 0)
|
if (len > 0) {
|
||||||
{
|
|
||||||
// count number of lines
|
// count number of lines
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++) {
|
||||||
{
|
if (String[i] == '\n' && i < (len - 1)) { // found new line char
|
||||||
if (String[i] == '\n' && i < (len - 1))
|
|
||||||
{ // found new line char
|
|
||||||
lines++;
|
lines++;
|
||||||
String[i] = 0; // null terminate the line
|
String[i] = 0; // null terminate the line
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lines > 3)
|
if (lines > 3) { // use small text
|
||||||
{ // use small text
|
|
||||||
small = true;
|
small = true;
|
||||||
if (lines > 7)
|
if (lines > 7)
|
||||||
lines = 7;
|
lines = 7;
|
||||||
@@ -1215,32 +1130,8 @@ void UI_DisplayMenu(void)
|
|||||||
|
|
||||||
y = (small ? 3 : 2) - (lines / 2);
|
y = (small ? 3 : 2) - (lines / 2);
|
||||||
|
|
||||||
// only for SysInf
|
|
||||||
if(UI_MENU_GetCurrentMenuId() == MENU_VOL)
|
|
||||||
{
|
|
||||||
sprintf(edit, "%u.%02uV %u%%",
|
|
||||||
gBatteryVoltageAverage / 100, gBatteryVoltageAverage % 100,
|
|
||||||
BATTERY_VoltsToPercent(gBatteryVoltageAverage)
|
|
||||||
);
|
|
||||||
|
|
||||||
UI_PrintStringSmallNormal(edit, 54, 127, 1);
|
|
||||||
|
|
||||||
#if defined(ENABLE_SPECTRUM) && defined(ENABLE_FMRADIO)
|
|
||||||
UI_PrintStringSmallNormal("Basic", 54, 127, 6);
|
|
||||||
#elif defined(ENABLE_SPECTRUM)
|
|
||||||
UI_PrintStringSmallNormal("Bandscope", 54, 127, 6);
|
|
||||||
#elif defined(ENABLE_FMRADIO)
|
|
||||||
UI_PrintStringSmallNormal("Broadcast", 54, 127, 6);
|
|
||||||
#elif defined(ENABLE_FEAT_F4HWN_RESCUE_OPS)
|
|
||||||
UI_PrintStringSmallNormal("RescueOps", 54, 127, 6);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
y = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// draw the text lines
|
// draw the text lines
|
||||||
for (i = 0; i < len && lines > 0; lines--)
|
for (i = 0; i < len && lines > 0; lines--) {
|
||||||
{
|
|
||||||
if (small)
|
if (small)
|
||||||
UI_PrintStringSmallNormal(String + i, menu_item_x1, menu_item_x2, y);
|
UI_PrintStringSmallNormal(String + i, menu_item_x1, menu_item_x2, y);
|
||||||
else
|
else
|
||||||
@@ -1259,8 +1150,8 @@ void UI_DisplayMenu(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_MENU_GetCurrentMenuId() == MENU_SLIST1 || UI_MENU_GetCurrentMenuId() == MENU_SLIST2 || UI_MENU_GetCurrentMenuId() == MENU_SLIST3)
|
if (UI_MENU_GetCurrentMenuId() == MENU_SLIST1 || UI_MENU_GetCurrentMenuId() == MENU_SLIST2 ||
|
||||||
{
|
UI_MENU_GetCurrentMenuId() == MENU_SLIST3) {
|
||||||
i = UI_MENU_GetCurrentMenuId() - MENU_SLIST1;
|
i = UI_MENU_GetCurrentMenuId() - MENU_SLIST1;
|
||||||
|
|
||||||
char *pPrintStr = String;
|
char *pPrintStr = String;
|
||||||
@@ -1337,8 +1228,7 @@ void UI_DisplayMenu(void)
|
|||||||
if ((UI_MENU_GetCurrentMenuId() == MENU_RESET ||
|
if ((UI_MENU_GetCurrentMenuId() == MENU_RESET ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_MEM_CH ||
|
UI_MENU_GetCurrentMenuId() == MENU_MEM_CH ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME ||
|
UI_MENU_GetCurrentMenuId() == MENU_MEM_NAME ||
|
||||||
UI_MENU_GetCurrentMenuId() == MENU_DEL_CH) && gAskForConfirmation)
|
UI_MENU_GetCurrentMenuId() == MENU_DEL_CH) && gAskForConfirmation) { // display confirmation
|
||||||
{ // display confirmation
|
|
||||||
char *pPrintStr = (gAskForConfirmation == 1) ? "SURE?" : "WAIT!";
|
char *pPrintStr = (gAskForConfirmation == 1) ? "SURE?" : "WAIT!";
|
||||||
UI_PrintString(pPrintStr, menu_item_x1, menu_item_x2, 5, 8);
|
UI_PrintString(pPrintStr, menu_item_x1, menu_item_x2, 5, 8);
|
||||||
}
|
}
|
||||||
|
28
ui/menu.h
28
ui/menu.h
@@ -28,8 +28,7 @@ typedef struct {
|
|||||||
uint8_t menu_id;
|
uint8_t menu_id;
|
||||||
} t_menu_item;
|
} t_menu_item;
|
||||||
|
|
||||||
enum
|
enum {
|
||||||
{
|
|
||||||
MENU_SQL = 0,
|
MENU_SQL = 0,
|
||||||
MENU_STEP,
|
MENU_STEP,
|
||||||
MENU_TXP,
|
MENU_TXP,
|
||||||
@@ -41,9 +40,7 @@ enum
|
|||||||
MENU_OFFSET,
|
MENU_OFFSET,
|
||||||
MENU_TOT,
|
MENU_TOT,
|
||||||
MENU_W_N,
|
MENU_W_N,
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
MENU_SCR,
|
MENU_SCR,
|
||||||
#endif
|
|
||||||
MENU_BCL,
|
MENU_BCL,
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
MENU_TX_LOCK,
|
MENU_TX_LOCK,
|
||||||
@@ -98,9 +95,9 @@ enum
|
|||||||
MENU_D_LIST,
|
MENU_D_LIST,
|
||||||
#endif
|
#endif
|
||||||
MENU_D_LIVE_DEC,
|
MENU_D_LIVE_DEC,
|
||||||
MENU_PONMSG,
|
MENU_FSKSRC,
|
||||||
|
MENU_FSKMOD,
|
||||||
MENU_ROGER,
|
MENU_ROGER,
|
||||||
MENU_VOL,
|
|
||||||
MENU_BAT_TXT,
|
MENU_BAT_TXT,
|
||||||
MENU_AM,
|
MENU_AM,
|
||||||
#ifdef ENABLE_AM_FIX
|
#ifdef ENABLE_AM_FIX
|
||||||
@@ -117,11 +114,9 @@ enum
|
|||||||
MENU_200TX,
|
MENU_200TX,
|
||||||
MENU_350TX,
|
MENU_350TX,
|
||||||
MENU_500TX,
|
MENU_500TX,
|
||||||
#endif
|
|
||||||
MENU_350EN,
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
MENU_SCREN,
|
MENU_SCREN,
|
||||||
#endif
|
#endif
|
||||||
|
MENU_350EN,
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
MENU_F_CALI, // reference xtal calibration
|
MENU_F_CALI, // reference xtal calibration
|
||||||
#endif
|
#endif
|
||||||
@@ -198,11 +193,7 @@ extern const char gSubMenu_D_RSP[4][11];
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern const char *const gSubMenu_PTT_ID[5];
|
extern const char *const gSubMenu_PTT_ID[5];
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
extern const char gSubMenu_FSKMod[6][8];
|
||||||
extern const char gSubMenu_PONMSG[5][8];
|
|
||||||
#else
|
|
||||||
extern const char gSubMenu_PONMSG[4][8];
|
|
||||||
#endif
|
|
||||||
extern const char gSubMenu_ROGER[3][6];
|
extern const char gSubMenu_ROGER[3][6];
|
||||||
extern const char gSubMenu_RESET[2][4];
|
extern const char gSubMenu_RESET[2][4];
|
||||||
extern const char *const gSubMenu_F_LOCK[F_LOCK_LEN];
|
extern const char *const gSubMenu_F_LOCK[F_LOCK_LEN];
|
||||||
@@ -210,11 +201,12 @@ extern const char gSubMenu_RX_TX[4][6];
|
|||||||
extern const char gSubMenu_BAT_TXT[3][8];
|
extern const char gSubMenu_BAT_TXT[3][8];
|
||||||
extern const char gSubMenu_BATTYP[3][9];
|
extern const char gSubMenu_BATTYP[3][9];
|
||||||
|
|
||||||
#ifndef ENABLE_FEAT_F4HWN
|
|
||||||
extern const char gSubMenu_SCRAMBLER[11][7];
|
extern const char gSubMenu_SCRAMBLER[11][7];
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct {char* name; uint8_t id;} t_sidefunction;
|
typedef struct {
|
||||||
|
char *name;
|
||||||
|
uint8_t id;
|
||||||
|
} t_sidefunction;
|
||||||
extern const uint8_t gSubMenu_SIDEFUNCTIONS_size;
|
extern const uint8_t gSubMenu_SIDEFUNCTIONS_size;
|
||||||
extern const t_sidefunction gSubMenu_SIDEFUNCTIONS[];
|
extern const t_sidefunction gSubMenu_SIDEFUNCTIONS[];
|
||||||
|
|
||||||
@@ -229,7 +221,9 @@ extern char edit[17];
|
|||||||
extern int edit_index;
|
extern int edit_index;
|
||||||
|
|
||||||
void UI_DisplayMenu(void);
|
void UI_DisplayMenu(void);
|
||||||
|
|
||||||
int UI_MENU_GetCurrentMenuId();
|
int UI_MENU_GetCurrentMenuId();
|
||||||
|
|
||||||
uint8_t UI_MENU_GetMenuIdx(uint8_t id);
|
uint8_t UI_MENU_GetMenuIdx(uint8_t id);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -84,13 +84,6 @@ void UI_DisplayStatus()
|
|||||||
|
|
||||||
unsigned int x1 = x;
|
unsigned int x1 = x;
|
||||||
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
|
||||||
if (gSetting_KILLED) {
|
|
||||||
memset(line + x, 0xFF, 10);
|
|
||||||
x1 = x + 10;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{ // SCAN indicator
|
{ // SCAN indicator
|
||||||
if (gScanStateDir != SCAN_OFF || SCANNER_IsScanning()) {
|
if (gScanStateDir != SCAN_OFF || SCANNER_IsScanning()) {
|
||||||
if (IS_MR_CHANNEL(gNextMrChannel) && !SCANNER_IsScanning()) { // channel mode
|
if (IS_MR_CHANNEL(gNextMrChannel) && !SCANNER_IsScanning()) { // channel mode
|
||||||
|
143
ui/welcome.c
143
ui/welcome.c
@@ -28,8 +28,7 @@
|
|||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "bitmaps.h"
|
#include "bitmaps.h"
|
||||||
|
|
||||||
void UI_DisplayReleaseKeys(void)
|
void UI_DisplayReleaseKeys(void) {
|
||||||
{
|
|
||||||
memset(gStatusLine, 0, sizeof(gStatusLine));
|
memset(gStatusLine, 0, sizeof(gStatusLine));
|
||||||
#if defined(ENABLE_FEAT_F4HWN_CTR) || defined(ENABLE_FEAT_F4HWN_INV)
|
#if defined(ENABLE_FEAT_F4HWN_CTR) || defined(ENABLE_FEAT_F4HWN_INV)
|
||||||
ST7565_ContrastAndInv();
|
ST7565_ContrastAndInv();
|
||||||
@@ -43,12 +42,7 @@ void UI_DisplayReleaseKeys(void)
|
|||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_DisplayWelcome(void)
|
void UI_DisplayWelcome(void) {
|
||||||
{
|
|
||||||
char WelcomeString0[16];
|
|
||||||
char WelcomeString1[16];
|
|
||||||
char WelcomeString2[16];
|
|
||||||
char WelcomeString3[20];
|
|
||||||
|
|
||||||
memset(gStatusLine, 0, sizeof(gStatusLine));
|
memset(gStatusLine, 0, sizeof(gStatusLine));
|
||||||
|
|
||||||
@@ -56,147 +50,16 @@ void UI_DisplayWelcome(void)
|
|||||||
ST7565_ContrastAndInv();
|
ST7565_ContrastAndInv();
|
||||||
#endif
|
#endif
|
||||||
UI_DisplayClear();
|
UI_DisplayClear();
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
ST7565_BlitStatusLine();
|
ST7565_BlitStatusLine();
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
|
|
||||||
if (gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_NONE || gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_SOUND) {
|
|
||||||
ST7565_FillScreen(0x00);
|
|
||||||
#else
|
|
||||||
if (gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_NONE || gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_FULL_SCREEN) {
|
|
||||||
ST7565_FillScreen(0xFF);
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
memset(WelcomeString0, 0, sizeof(WelcomeString0));
|
|
||||||
memset(WelcomeString1, 0, sizeof(WelcomeString1));
|
|
||||||
|
|
||||||
EEPROM_ReadBuffer(0x0EB0, WelcomeString0, 16);
|
|
||||||
EEPROM_ReadBuffer(0x0EC0, WelcomeString1, 16);
|
|
||||||
|
|
||||||
sprintf(WelcomeString2, "%u.%02uV %u%%",
|
|
||||||
gBatteryVoltageAverage / 100,
|
|
||||||
gBatteryVoltageAverage % 100,
|
|
||||||
BATTERY_VoltsToPercent(gBatteryVoltageAverage));
|
|
||||||
|
|
||||||
if (gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_VOLTAGE)
|
|
||||||
{
|
|
||||||
strcpy(WelcomeString0, "VOLTAGE");
|
|
||||||
strcpy(WelcomeString1, WelcomeString2);
|
|
||||||
}
|
|
||||||
else if(gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_ALL)
|
|
||||||
{
|
|
||||||
if(strlen(WelcomeString0) == 0 && strlen(WelcomeString1) == 0)
|
|
||||||
{
|
|
||||||
strcpy(WelcomeString0, "WELCOME");
|
|
||||||
strcpy(WelcomeString1, WelcomeString2);
|
|
||||||
}
|
|
||||||
else if(strlen(WelcomeString0) == 0 || strlen(WelcomeString1) == 0)
|
|
||||||
{
|
|
||||||
if(strlen(WelcomeString0) == 0)
|
|
||||||
{
|
|
||||||
strcpy(WelcomeString0, WelcomeString1);
|
|
||||||
}
|
|
||||||
strcpy(WelcomeString1, WelcomeString2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_MESSAGE)
|
|
||||||
{
|
|
||||||
if(strlen(WelcomeString0) == 0)
|
|
||||||
{
|
|
||||||
strcpy(WelcomeString0, "WELCOME");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(strlen(WelcomeString1) == 0)
|
|
||||||
{
|
|
||||||
strcpy(WelcomeString1, "BIENVENUE");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UI_PrintString(WelcomeString0, 0, 127, 0, 10);
|
|
||||||
UI_PrintString(WelcomeString1, 0, 127, 2, 10);
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
|
||||||
UI_PrintStringSmallNormal(Version, 0, 128, 4);
|
|
||||||
|
|
||||||
UI_DrawLineBuffer(gFrameBuffer, 0, 31, 127, 31, 1); // Be ware, status zone = 8 lines, the rest = 56 ->total 64
|
UI_DrawLineBuffer(gFrameBuffer, 0, 31, 127, 31, 1); // Be ware, status zone = 8 lines, the rest = 56 ->total 64
|
||||||
|
|
||||||
for (uint8_t i = 18; i < 110; i++)
|
for (uint8_t i = 18; i < 110; i++) {
|
||||||
{
|
|
||||||
gFrameBuffer[4][i] ^= 0xFF;
|
gFrameBuffer[4][i] ^= 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(WelcomeString3, "%s Edition", Edition);
|
|
||||||
UI_PrintStringSmallNormal(WelcomeString3, 0, 127, 6);
|
|
||||||
|
|
||||||
/*
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
|
||||||
#if ENABLE_FEAT_F4HWN_RESCUE_OPS > 1
|
|
||||||
UI_PrintStringSmallNormal(Edition, 18, 0, 6);
|
|
||||||
if(gEeprom.MENU_LOCK == true) {
|
|
||||||
memcpy(gFrameBuffer[6] + 103, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memcpy(gFrameBuffer[6] + 103, BITMAP_NotReady, sizeof(BITMAP_NotReady));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
UI_PrintStringSmallNormal(Edition, 18, 0, 5);
|
|
||||||
memcpy(gFrameBuffer[5] + 103, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
|
||||||
UI_PrintStringSmallNormal("RescueOps", 18, 0, 6);
|
|
||||||
if(gEeprom.MENU_LOCK == true) {
|
|
||||||
memcpy(gFrameBuffer[6] + 103, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memcpy(gFrameBuffer[6] + 103, BITMAP_NotReady, sizeof(BITMAP_NotReady));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
UI_PrintStringSmallNormal(Edition, 18, 0, 6);
|
|
||||||
memcpy(gFrameBuffer[6] + 103, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
#ifdef ENABLE_SPECTRUM
|
|
||||||
#ifdef ENABLE_FMRADIO
|
|
||||||
UI_PrintStringSmallNormal(Based, 0, 127, 5);
|
|
||||||
UI_PrintStringSmallNormal(Credits, 0, 127, 6);
|
|
||||||
#else
|
|
||||||
UI_PrintStringSmallNormal("Bandscope ", 0, 127, 5);
|
|
||||||
memcpy(gFrameBuffer[5] + 95, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
|
||||||
UI_PrintStringSmallNormal("RescueOps ", 0, 127, 6);
|
|
||||||
if(gEeprom.MENU_LOCK == true) {
|
|
||||||
memcpy(gFrameBuffer[6] + 95, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
UI_PrintStringSmallNormal("Broadcast ", 0, 127, 6);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
|
||||||
UI_PrintStringSmallNormal("RescueOps ", 0, 127, 5);
|
|
||||||
if(gEeprom.MENU_LOCK == true) {
|
|
||||||
memcpy(gFrameBuffer[5] + 95, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
UI_PrintStringSmallNormal("Bandscope ", 0, 127, 5);
|
|
||||||
#endif
|
|
||||||
UI_PrintStringSmallNormal("Broadcast ", 0, 127, 6);
|
|
||||||
memcpy(gFrameBuffer[6] + 95, BITMAP_Ready, sizeof(BITMAP_Ready));
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
#else
|
|
||||||
UI_PrintStringSmallNormal(Version, 0, 127, 6);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//ST7565_BlitStatusLine(); // blank status line : I think it's useless
|
//ST7565_BlitStatusLine(); // blank status line : I think it's useless
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
const char Version[] = AUTHOR_STRING_2 " " VERSION_STRING_2;
|
const char Version[] = AUTHOR_STRING_2 " " VERSION_STRING_2;
|
||||||
const char Edition[] = EDITION_STRING;
|
|
||||||
#else
|
#else
|
||||||
const char Version[] = AUTHOR_STRING VER;
|
const char Version[] = AUTHOR_STRING VER;
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user