mirror of
https://github.com/egzumer/uv-k5-firmware-custom
synced 2024-11-21 09:10:27 +00:00
Removed floating point stuff
This commit is contained in:
parent
21d5d1ee15
commit
2f907f82f8
14
README.md
14
README.md
@ -34,19 +34,7 @@ To enable the custom option just uncomment the line by removing the starting '#'
|
|||||||
* AM RX now allowed everywhere, although the radio really doesn't do AM, the adverts are a con !
|
* AM RX now allowed everywhere, although the radio really doesn't do AM, the adverts are a con !
|
||||||
* Finer RSSI bar steps
|
* Finer RSSI bar steps
|
||||||
* Nicer/cleaner big numeric font than original QS big numeric font
|
* Nicer/cleaner big numeric font than original QS big numeric font
|
||||||
*
|
* Various menu re-wordings - to try and reduce 'WTH does that mean ?'
|
||||||
* "MEM-CH" and "DEL-CH" menus now include channel name
|
|
||||||
* "STEP" menu, added 1.25kHz option, removed 5kHz option
|
|
||||||
* "TXP" menu, renamed to "TX-PWR"
|
|
||||||
* "SAVE" menu, renamed to "B-SAVE"
|
|
||||||
* "WX" menu, renamed to "CROS-B" ('WX' means weather here in the UK)
|
|
||||||
* "ABR" menu, renamed to "BAK-LT", extended times, includes always ON option
|
|
||||||
* "SCR" menu, renamed to "SCRAM"
|
|
||||||
* "MIC" menu, shows mic gain in dB's, includes max mic gain possible (+15.5dB)
|
|
||||||
* "VOL" menu, renamed to "BATVOL", added percentage level
|
|
||||||
* "AM" menu, renamed to "MODE", shows RX modulation mode
|
|
||||||
|
|
||||||
Menu renames are to try and reduce 'WTF does that mean ?'
|
|
||||||
|
|
||||||
# Compiler
|
# Compiler
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ static void AIRCOPY_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
for (i = 0; i < 7; i++)
|
for (i = 0; i < 7; i++)
|
||||||
{
|
{
|
||||||
if (Frequency >= gLowerLimitFrequencyBandTable[i] && Frequency <= gUpperLimitFrequencyBandTable[i])
|
if (Frequency >= LowerLimitFrequencyBandTable[i] && Frequency <= UpperLimitFrequencyBandTable[i])
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||||
|
@ -440,11 +440,11 @@ void APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t Step)
|
|||||||
{
|
{
|
||||||
uint32_t Frequency = pInfo->ConfigRX.Frequency + (Step * pInfo->StepFrequency);
|
uint32_t Frequency = pInfo->ConfigRX.Frequency + (Step * pInfo->StepFrequency);
|
||||||
|
|
||||||
if (Frequency < gLowerLimitFrequencyBandTable[pInfo->Band])
|
if (Frequency < LowerLimitFrequencyBandTable[pInfo->Band])
|
||||||
Frequency = FREQUENCY_FloorToStep(gUpperLimitFrequencyBandTable[pInfo->Band], pInfo->StepFrequency, gLowerLimitFrequencyBandTable[pInfo->Band]);
|
Frequency = FREQUENCY_FloorToStep(UpperLimitFrequencyBandTable[pInfo->Band], pInfo->StepFrequency, LowerLimitFrequencyBandTable[pInfo->Band]);
|
||||||
else
|
else
|
||||||
if (Frequency > gUpperLimitFrequencyBandTable[pInfo->Band])
|
if (Frequency > UpperLimitFrequencyBandTable[pInfo->Band])
|
||||||
Frequency = gLowerLimitFrequencyBandTable[pInfo->Band];
|
Frequency = LowerLimitFrequencyBandTable[pInfo->Band];
|
||||||
|
|
||||||
pInfo->ConfigRX.Frequency = Frequency;
|
pInfo->ConfigRX.Frequency = Frequency;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "app/app.h"
|
#include "app/app.h"
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
#include "app/generic.h"
|
#include "app/generic.h"
|
||||||
@ -174,7 +176,7 @@ void GENERIC_Key_PTT(bool bKeyPressed)
|
|||||||
else
|
else
|
||||||
gDTMF_CallMode = DTMF_CALL_MODE_DTMF;
|
gDTMF_CallMode = DTMF_CALL_MODE_DTMF;
|
||||||
|
|
||||||
sprintf(gDTMF_String, "%s", gDTMF_InputBox);
|
strcpy(gDTMF_String, gDTMF_InputBox);
|
||||||
|
|
||||||
gDTMF_PreviousIndex = gDTMF_InputIndex;
|
gDTMF_PreviousIndex = gDTMF_InputIndex;
|
||||||
gDTMF_ReplyState = DTMF_REPLY_ANI;
|
gDTMF_ReplyState = DTMF_REPLY_ANI;
|
||||||
|
@ -104,7 +104,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
for (i = 0; i < 7; i++)
|
for (i = 0; i < 7; i++)
|
||||||
{
|
{
|
||||||
if (Frequency >= gLowerLimitFrequencyBandTable[i] && Frequency <= gUpperLimitFrequencyBandTable[i])
|
if (Frequency >= LowerLimitFrequencyBandTable[i] && Frequency <= UpperLimitFrequencyBandTable[i])
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||||
@ -123,7 +123,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
Frequency += 75;
|
Frequency += 75;
|
||||||
|
|
||||||
gTxVfo->ConfigRX.Frequency = FREQUENCY_FloorToStep(Frequency, gTxVfo->StepFrequency, gLowerLimitFrequencyBandTable[gTxVfo->Band]);
|
gTxVfo->ConfigRX.Frequency = FREQUENCY_FloorToStep(Frequency, gTxVfo->StepFrequency, LowerLimitFrequencyBandTable[gTxVfo->Band]);
|
||||||
|
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
return;
|
return;
|
||||||
|
5
audio.c
5
audio.c
@ -169,7 +169,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep)
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
||||||
SYSTEM_DelayMs(7);
|
SYSTEM_DelayMs(20);
|
||||||
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
@ -179,11 +179,12 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep)
|
|||||||
else
|
else
|
||||||
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_1);
|
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_1);
|
||||||
|
|
||||||
SYSTICK_DelayUs(1200);
|
SYSTICK_DelayUs(1000);
|
||||||
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
||||||
SYSTICK_DelayUs(1200);
|
SYSTICK_DelayUs(1200);
|
||||||
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0);
|
||||||
VoiceID <<= 1;
|
VoiceID <<= 1;
|
||||||
|
SYSTICK_DelayUs(200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
27
board.c
27
board.c
@ -39,6 +39,15 @@
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "sram-overlay.h"
|
#include "sram-overlay.h"
|
||||||
|
|
||||||
|
static const uint32_t gDefaultFrequencyTable[] =
|
||||||
|
{
|
||||||
|
14502500,
|
||||||
|
14552500,
|
||||||
|
43477500,
|
||||||
|
43502500,
|
||||||
|
43697500
|
||||||
|
};
|
||||||
|
|
||||||
void BOARD_FLASH_Init(void)
|
void BOARD_FLASH_Init(void)
|
||||||
{
|
{
|
||||||
FLASH_Init(FLASH_READ_MODE_1_CYCLE);
|
FLASH_Init(FLASH_READ_MODE_1_CYCLE);
|
||||||
@ -389,7 +398,7 @@ void BOARD_EEPROM_Init(void)
|
|||||||
gEeprom.KEY_2_LONG_PRESS_ACTION = (Data[4] < ACTION_OPT_LEN) ? Data[4] : ACTION_OPT_FM;
|
gEeprom.KEY_2_LONG_PRESS_ACTION = (Data[4] < ACTION_OPT_LEN) ? Data[4] : ACTION_OPT_FM;
|
||||||
gEeprom.SCAN_RESUME_MODE = (Data[5] < 3) ? Data[5] : SCAN_RESUME_CO;
|
gEeprom.SCAN_RESUME_MODE = (Data[5] < 3) ? Data[5] : SCAN_RESUME_CO;
|
||||||
gEeprom.AUTO_KEYPAD_LOCK = (Data[6] < 2) ? Data[6] : false;
|
gEeprom.AUTO_KEYPAD_LOCK = (Data[6] < 2) ? Data[6] : false;
|
||||||
gEeprom.POWER_ON_DISPLAY_MODE = (Data[7] < 3) ? Data[7] : POWER_ON_DISPLAY_MODE_MESSAGE;
|
gEeprom.POWER_ON_DISPLAY_MODE = (Data[7] < 3) ? Data[7] : POWER_ON_DISPLAY_MODE_VOLTAGE;
|
||||||
|
|
||||||
// 0E98..0E9F
|
// 0E98..0E9F
|
||||||
EEPROM_ReadBuffer(0x0E98, Data, 8);
|
EEPROM_ReadBuffer(0x0E98, Data, 8);
|
||||||
@ -478,9 +487,6 @@ void BOARD_EEPROM_Init(void)
|
|||||||
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
||||||
gSetting_F_LOCK = (Data[0] < 6) ? Data[0] : F_LOCK_OFF;
|
gSetting_F_LOCK = (Data[0] < 6) ? Data[0] : F_LOCK_OFF;
|
||||||
|
|
||||||
gUpperLimitFrequencyBandTable = UpperLimitFrequencyBandTable;
|
|
||||||
gLowerLimitFrequencyBandTable = LowerLimitFrequencyBandTable;
|
|
||||||
|
|
||||||
gSetting_350TX = (Data[1] < 2) ? Data[1] : false; // was true
|
gSetting_350TX = (Data[1] < 2) ? Data[1] : false; // was true
|
||||||
gSetting_KILLED = (Data[2] < 2) ? Data[2] : false;
|
gSetting_KILLED = (Data[2] < 2) ? Data[2] : false;
|
||||||
gSetting_200TX = (Data[3] < 2) ? Data[3] : false;
|
gSetting_200TX = (Data[3] < 2) ? Data[3] : false;
|
||||||
@ -587,4 +593,17 @@ void BOARD_FactoryReset(bool bIsAll)
|
|||||||
EEPROM_WriteBuffer(i, Template);
|
EEPROM_WriteBuffer(i, Template);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bIsAll)
|
||||||
|
{
|
||||||
|
RADIO_InitInfo(gRxVfo, FREQ_CHANNEL_FIRST + 5, 5, 43300000);
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
const uint32_t Frequency = gDefaultFrequencyTable[i];
|
||||||
|
gRxVfo->ConfigRX.Frequency = Frequency;
|
||||||
|
gRxVfo->ConfigTX.Frequency = Frequency;
|
||||||
|
gRxVfo->Band = FREQUENCY_GetBand(Frequency);
|
||||||
|
SETTINGS_SaveChannel(MR_CHANNEL_FIRST + i, 0, gRxVfo, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
3
misc.c
3
misc.c
@ -29,9 +29,6 @@ const uint32_t gDefaultAesKey[4] = {0x4AA5CC60, 0x0312CC5F, 0xFFD2DABB, 0x6BB
|
|||||||
|
|
||||||
const uint8_t gMicGain_dB2[5] = {3, 8, 16, 24, 31};
|
const uint8_t gMicGain_dB2[5] = {3, 8, 16, 24, 31};
|
||||||
|
|
||||||
const uint32_t *gUpperLimitFrequencyBandTable;
|
|
||||||
const uint32_t *gLowerLimitFrequencyBandTable;
|
|
||||||
|
|
||||||
bool gSetting_350TX;
|
bool gSetting_350TX;
|
||||||
bool gSetting_KILLED;
|
bool gSetting_KILLED;
|
||||||
bool gSetting_200TX;
|
bool gSetting_200TX;
|
||||||
|
3
misc.h
3
misc.h
@ -84,9 +84,6 @@ extern const uint16_t gMin_bat_v;
|
|||||||
|
|
||||||
extern const uint8_t gMicGain_dB2[5];
|
extern const uint8_t gMicGain_dB2[5];
|
||||||
|
|
||||||
extern const uint32_t *gUpperLimitFrequencyBandTable;
|
|
||||||
extern const uint32_t *gLowerLimitFrequencyBandTable;
|
|
||||||
|
|
||||||
extern bool gSetting_350TX;
|
extern bool gSetting_350TX;
|
||||||
extern bool gSetting_KILLED;
|
extern bool gSetting_KILLED;
|
||||||
extern bool gSetting_200TX;
|
extern bool gSetting_200TX;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
#define PRINTF_DISABLE_SUPPORT_LONG_LONG
|
#define PRINTF_DISABLE_SUPPORT_LONG_LONG
|
||||||
#define PRINTF_DISABLE_SUPPORT_EXPONENTIAL
|
#define PRINTF_DISABLE_SUPPORT_EXPONENTIAL
|
||||||
#define PRINTF_DISABLE_SUPPORT_PTRDIFF_T
|
#define PRINTF_DISABLE_SUPPORT_PTRDIFF_T
|
||||||
|
#define PRINTF_DISABLE_SUPPORT_FLOAT
|
||||||
|
18
radio.c
18
radio.c
@ -128,6 +128,12 @@ void RADIO_InitInfo(VFO_Info_t *pInfo, uint8_t ChannelSave, uint8_t Band, uint32
|
|||||||
pInfo->pTX = &pInfo->ConfigTX;
|
pInfo->pTX = &pInfo->ConfigTX;
|
||||||
pInfo->FREQUENCY_OF_DEVIATION = 1000000;
|
pInfo->FREQUENCY_OF_DEVIATION = 1000000;
|
||||||
|
|
||||||
|
if (ChannelSave == (FREQ_CHANNEL_FIRST + BAND2_108MHz))
|
||||||
|
{
|
||||||
|
pInfo->AM_CHANNEL_MODE = true;
|
||||||
|
pInfo->IsAM = true;
|
||||||
|
}
|
||||||
|
|
||||||
RADIO_ConfigureSquelchAndOutputPower(pInfo);
|
RADIO_ConfigureSquelchAndOutputPower(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,7 +205,7 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
|
|
||||||
Index = Channel - FREQ_CHANNEL_FIRST;
|
Index = Channel - FREQ_CHANNEL_FIRST;
|
||||||
|
|
||||||
RADIO_InitInfo(pRadio, Channel, Index, gLowerLimitFrequencyBandTable[Index]);
|
RADIO_InitInfo(pRadio, Channel, Index, LowerLimitFrequencyBandTable[Index]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -342,14 +348,14 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
|
|
||||||
Frequency = pRadio->ConfigRX.Frequency;
|
Frequency = pRadio->ConfigRX.Frequency;
|
||||||
|
|
||||||
if (Frequency < gLowerLimitFrequencyBandTable[Band])
|
if (Frequency < LowerLimitFrequencyBandTable[Band])
|
||||||
Frequency = gLowerLimitFrequencyBandTable[Band];
|
Frequency = LowerLimitFrequencyBandTable[Band];
|
||||||
else
|
else
|
||||||
if (Frequency > gUpperLimitFrequencyBandTable[Band])
|
if (Frequency > UpperLimitFrequencyBandTable[Band])
|
||||||
Frequency = gUpperLimitFrequencyBandTable[Band];
|
Frequency = UpperLimitFrequencyBandTable[Band];
|
||||||
else
|
else
|
||||||
if (Channel >= FREQ_CHANNEL_FIRST)
|
if (Channel >= FREQ_CHANNEL_FIRST)
|
||||||
Frequency = FREQUENCY_FloorToStep(Frequency, gEeprom.VfoInfo[VFO].StepFrequency, gLowerLimitFrequencyBandTable[Band]);
|
Frequency = FREQUENCY_FloorToStep(Frequency, gEeprom.VfoInfo[VFO].StepFrequency, LowerLimitFrequencyBandTable[Band]);
|
||||||
|
|
||||||
pRadio->ConfigRX.Frequency = Frequency;
|
pRadio->ConfigRX.Frequency = Frequency;
|
||||||
|
|
||||||
|
@ -53,10 +53,10 @@ void UI_DisplayAircopy(void)
|
|||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
if (gAirCopyIsSendMode == 0)
|
if (gAirCopyIsSendMode == 0)
|
||||||
sprintf(String, "RCV:%d E:%d", gAirCopyBlockNumber, gErrorsDuringAirCopy);
|
sprintf(String, "RCV:%u E:%u", gAirCopyBlockNumber, gErrorsDuringAirCopy);
|
||||||
else
|
else
|
||||||
if (gAirCopyIsSendMode == 1)
|
if (gAirCopyIsSendMode == 1)
|
||||||
sprintf(String, "SND:%d", gAirCopyBlockNumber);
|
sprintf(String, "SND:%u", gAirCopyBlockNumber);
|
||||||
UI_PrintString(String, 2, 127, 4, 8);
|
UI_PrintString(String, 2, 127, 4, 8);
|
||||||
|
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
|
80
ui/fmradio.c
80
ui/fmradio.c
@ -27,64 +27,80 @@
|
|||||||
|
|
||||||
void UI_DisplayFM(void)
|
void UI_DisplayFM(void)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
unsigned int i;
|
||||||
char String[16];
|
char String[16];
|
||||||
|
|
||||||
memset(gFrameBuffer, 0, sizeof(gFrameBuffer));
|
memset(gFrameBuffer, 0, sizeof(gFrameBuffer));
|
||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
strcpy(String, "FM");
|
strcpy(String, "FM");
|
||||||
|
|
||||||
UI_PrintString(String, 0, 127, 0, 12);
|
UI_PrintString(String, 0, 127, 0, 12);
|
||||||
memset(String, 0, sizeof(String));
|
|
||||||
|
|
||||||
if (gAskToSave) {
|
memset(String, 0, sizeof(String));
|
||||||
|
if (gAskToSave)
|
||||||
|
{
|
||||||
strcpy(String, "SAVE?");
|
strcpy(String, "SAVE?");
|
||||||
} else if (gAskToDelete) {
|
}
|
||||||
|
else
|
||||||
|
if (gAskToDelete)
|
||||||
|
{
|
||||||
strcpy(String, "DEL?");
|
strcpy(String, "DEL?");
|
||||||
} else {
|
}
|
||||||
if (gFM_ScanState == FM_SCAN_OFF) {
|
else
|
||||||
if (!gEeprom.FM_IsMrMode) {
|
{
|
||||||
for (i = 0; i < 20; i++) {
|
if (gFM_ScanState == FM_SCAN_OFF)
|
||||||
if (gEeprom.FM_FrequencyPlaying == gFM_Channels[i]) {
|
{
|
||||||
sprintf(String, "VFO(CH%02d)", i + 1);
|
if (!gEeprom.FM_IsMrMode)
|
||||||
|
{
|
||||||
|
for (i = 0; i < 20; i++)
|
||||||
|
{
|
||||||
|
if (gEeprom.FM_FrequencyPlaying == gFM_Channels[i])
|
||||||
|
{
|
||||||
|
sprintf(String, "VFO(CH%02u)", i + 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i == 20) {
|
|
||||||
|
if (i == 20)
|
||||||
strcpy(String, "VFO");
|
strcpy(String, "VFO");
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sprintf(String, "MR(CH%02d)", gEeprom.FM_SelectedChannel + 1);
|
|
||||||
}
|
}
|
||||||
} else {
|
else
|
||||||
if (!gFM_AutoScan) {
|
sprintf(String, "MR(CH%02u)", gEeprom.FM_SelectedChannel + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!gFM_AutoScan)
|
||||||
strcpy(String, "M-SCAN");
|
strcpy(String, "M-SCAN");
|
||||||
} else {
|
else
|
||||||
sprintf(String, "A-SCAN(%d)", gFM_ChannelPosition + 1);
|
sprintf(String, "A-SCAN(%u)", gFM_ChannelPosition + 1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_PrintString(String, 0, 127, 2, 10);
|
UI_PrintString(String, 0, 127, 2, 10);
|
||||||
memset(String, 0, sizeof(String));
|
|
||||||
|
|
||||||
if (gAskToSave || (gEeprom.FM_IsMrMode && gInputBoxIndex)) {
|
memset(String, 0, sizeof(String));
|
||||||
|
if (gAskToSave || (gEeprom.FM_IsMrMode && gInputBoxIndex))
|
||||||
|
{
|
||||||
UI_GenerateChannelString(String, gFM_ChannelPosition);
|
UI_GenerateChannelString(String, gFM_ChannelPosition);
|
||||||
} else if (!gAskToDelete) {
|
}
|
||||||
if (gInputBoxIndex == 0) {
|
else
|
||||||
|
if (!gAskToDelete)
|
||||||
|
{
|
||||||
|
if (gInputBoxIndex == 0)
|
||||||
|
{
|
||||||
NUMBER_ToDigits(gEeprom.FM_FrequencyPlaying * 10000, String);
|
NUMBER_ToDigits(gEeprom.FM_FrequencyPlaying * 10000, String);
|
||||||
UI_DisplayFrequency(String, 23, 4, false, true);
|
UI_DisplayFrequency(String, 23, 4, false, true);
|
||||||
} else {
|
|
||||||
UI_DisplayFrequency(gInputBox, 23, 4, true, false);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
UI_DisplayFrequency(gInputBox, 23, 4, true, false);
|
||||||
|
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
return;
|
return;
|
||||||
} else {
|
|
||||||
sprintf(String, "CH-%02d", gEeprom.FM_SelectedChannel + 1);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(String, "CH-%02u", gEeprom.FM_SelectedChannel + 1);
|
||||||
|
}
|
||||||
UI_PrintString(String, 0, 127, 4, 10);
|
UI_PrintString(String, 0, 127, 4, 10);
|
||||||
|
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ void UI_GenerateChannelString(char *pString, const uint8_t Channel)
|
|||||||
|
|
||||||
if (gInputBoxIndex == 0)
|
if (gInputBoxIndex == 0)
|
||||||
{
|
{
|
||||||
sprintf(pString, "CH-%02d", Channel + 1);
|
sprintf(pString, "CH-%02u", Channel + 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,12 +54,12 @@ void UI_GenerateChannelStringEx(char *pString, const bool bShowPrefix, const uin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bShowPrefix)
|
if (bShowPrefix)
|
||||||
sprintf(pString, "CH-%03d", ChannelNumber + 1);
|
sprintf(pString, "CH-%03u", ChannelNumber + 1);
|
||||||
else
|
else
|
||||||
if (ChannelNumber == 0xFF)
|
if (ChannelNumber == 0xFF)
|
||||||
strcpy(pString, "NULL");
|
strcpy(pString, "NULL");
|
||||||
else
|
else
|
||||||
sprintf(pString, "%03d", ChannelNumber + 1);
|
sprintf(pString, "%03u", ChannelNumber + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_PrintString(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t Width)
|
void UI_PrintString(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t Width)
|
||||||
|
14
ui/main.c
14
ui/main.c
@ -240,7 +240,7 @@ void UI_DisplayMain(void)
|
|||||||
strcpy(String, "ALARM");
|
strcpy(String, "ALARM");
|
||||||
break;
|
break;
|
||||||
case VFO_STATE_VOLTAGE_HIGH:
|
case VFO_STATE_VOLTAGE_HIGH:
|
||||||
sprintf(String, "VOLT HIGH");
|
strcpy(String, "VOLT HIGH");
|
||||||
//Width = 8;
|
//Width = 8;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -290,13 +290,13 @@ void UI_DisplayMain(void)
|
|||||||
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1, true);
|
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1, true);
|
||||||
#else
|
#else
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
sprintf(String, "%03u.%05u", frequency_Hz / 100000, frequency_Hz % 100000);
|
||||||
UI_PrintString(String, 31, 112, Line, 8);
|
UI_PrintString(String, 31, 112, Line, 8);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MDF_CHANNEL: // show the channel number
|
case MDF_CHANNEL: // show the channel number
|
||||||
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03u", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
UI_PrintString(String, 31, 112, Line, 8);
|
UI_PrintString(String, 31, 112, Line, 8);
|
||||||
frequency_Hz = 0;
|
frequency_Hz = 0;
|
||||||
break;
|
break;
|
||||||
@ -304,7 +304,7 @@ void UI_DisplayMain(void)
|
|||||||
case MDF_NAME: // show the channel name
|
case MDF_NAME: // show the channel name
|
||||||
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
||||||
{ // no channel name, show the channel number instead
|
{ // no channel name, show the channel number instead
|
||||||
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03u", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
UI_PrintString(String, 31, 112, Line, 8);
|
UI_PrintString(String, 31, 112, Line, 8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -317,7 +317,7 @@ void UI_DisplayMain(void)
|
|||||||
case MDF_NAME_FREQ: // show the channel name and frequency
|
case MDF_NAME_FREQ: // show the channel name and frequency
|
||||||
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
||||||
{ // no channel name, show channel number instead
|
{ // no channel name, show channel number instead
|
||||||
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03u", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
UI_PrintStringSmall(gEeprom.VfoInfo[vfo_num].Name, 31 + 8, 0, Line);
|
UI_PrintStringSmall(gEeprom.VfoInfo[vfo_num].Name, 31 + 8, 0, Line);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -332,7 +332,7 @@ void UI_DisplayMain(void)
|
|||||||
NUMBER_ToDigits(frequency_Hz, String); // 8 digits
|
NUMBER_ToDigits(frequency_Hz, String); // 8 digits
|
||||||
UI_DisplayFrequencySmall(String, 31 + 8, Line + 1, false);
|
UI_DisplayFrequencySmall(String, 31 + 8, Line + 1, false);
|
||||||
#else
|
#else
|
||||||
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
sprintf(String, "%03u.%05u", frequency_Hz / 100000, frequency_Hz % 100000);
|
||||||
UI_PrintStringSmall(String, 31 + 8, 0, Line + 1);
|
UI_PrintStringSmall(String, 31 + 8, 0, Line + 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -351,7 +351,7 @@ void UI_DisplayMain(void)
|
|||||||
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1, true);
|
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1, true);
|
||||||
#else
|
#else
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
sprintf(String, "%03u.%05u", frequency_Hz / 100000, frequency_Hz % 100000);
|
||||||
UI_PrintString(String, 38, 112, Line, 8);
|
UI_PrintString(String, 38, 112, Line, 8);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
46
ui/menu.c
46
ui/menu.c
@ -39,8 +39,8 @@ static const char MenuList[][7] =
|
|||||||
"RxCTCS", // was "R_CTCS"
|
"RxCTCS", // was "R_CTCS"
|
||||||
"TxDCS", // was "T_DCS"
|
"TxDCS", // was "T_DCS"
|
||||||
"TxCTCS", // was "T_CTCS"
|
"TxCTCS", // was "T_CTCS"
|
||||||
"SFTDir",
|
"TxDir", // was "SFT_D"
|
||||||
"Offset",
|
"TxOffs", // was "OFFSET"
|
||||||
"W/N",
|
"W/N",
|
||||||
"Scram", // was "SCR"
|
"Scram", // was "SCR"
|
||||||
"BusyCL", // was "BCL"
|
"BusyCL", // was "BCL"
|
||||||
@ -48,15 +48,15 @@ static const char MenuList[][7] =
|
|||||||
"BatSav", // was "SAVE"
|
"BatSav", // was "SAVE"
|
||||||
"VOX",
|
"VOX",
|
||||||
"BackLt", // was "ABR"
|
"BackLt", // was "ABR"
|
||||||
"Dual-W", // was "TDR"
|
"DualRx", // was "TDR"
|
||||||
"CrossB", // was "WX"
|
"TxVFO", // was "WX"
|
||||||
"Beep",
|
"Beep",
|
||||||
"TxTOut", // was "TOT"
|
"TxTOut", // was "TOT"
|
||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
"Voice",
|
"Voice",
|
||||||
#endif
|
#endif
|
||||||
"SC-Rev",
|
"SC-Rev",
|
||||||
"MDF",
|
"ChDisp", // was "MDF"
|
||||||
"KeyLoc", // was "AUTOLk"
|
"KeyLoc", // was "AUTOLk"
|
||||||
"S-Add1",
|
"S-Add1",
|
||||||
"S-Add2",
|
"S-Add2",
|
||||||
@ -80,7 +80,7 @@ static const char MenuList[][7] =
|
|||||||
"PTT-ID",
|
"PTT-ID",
|
||||||
"D-DCD",
|
"D-DCD",
|
||||||
"D-List",
|
"D-List",
|
||||||
"PonMsg",
|
"POnMsg",
|
||||||
"Roger",
|
"Roger",
|
||||||
"BatVol", // was "VOL"
|
"BatVol", // was "VOL"
|
||||||
"Mode", // was "AM"
|
"Mode", // was "AM"
|
||||||
@ -303,20 +303,18 @@ void UI_DisplayMenu(void)
|
|||||||
switch (gMenuCursor)
|
switch (gMenuCursor)
|
||||||
{
|
{
|
||||||
case MENU_SQL:
|
case MENU_SQL:
|
||||||
sprintf(String, "%d", gSubMenuSelection);
|
sprintf(String, "%u", 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];
|
||||||
//EEPROM_ReadBuffer(0x1F80 + gSubMenuSelection, &mic, 1);
|
sprintf(String, "+%u.%01udB", mic / 2, mic % 2);
|
||||||
//sprintf(String, "%d %.1fdB", gSubMenuSelection, mic * 0.5);
|
|
||||||
sprintf(String, "%+.1fdB", mic * 0.5);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP:
|
||||||
sprintf(String, "%.2fKHz", gSubMenu_Step[gSubMenuSelection] * 0.01);
|
sprintf(String, "%u.%02uKHz", gSubMenu_Step[gSubMenuSelection] / 100, gSubMenu_Step[gSubMenuSelection] % 100);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_TXP:
|
case MENU_TXP:
|
||||||
@ -339,7 +337,7 @@ void UI_DisplayMenu(void)
|
|||||||
if (gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0)
|
||||||
strcpy(String, "OFF");
|
strcpy(String, "OFF");
|
||||||
else
|
else
|
||||||
sprintf(String, "%.1fHz", CTCSS_Options[gSubMenuSelection - 1] * 0.1);
|
sprintf(String, "%u.%uHz", CTCSS_Options[gSubMenuSelection - 1] / 10, CTCSS_Options[gSubMenuSelection - 1] % 10);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_SFT_D:
|
case MENU_SFT_D:
|
||||||
@ -349,7 +347,7 @@ void UI_DisplayMenu(void)
|
|||||||
case MENU_OFFSET:
|
case MENU_OFFSET:
|
||||||
if (!gIsInSubMenu || gInputBoxIndex == 0)
|
if (!gIsInSubMenu || gInputBoxIndex == 0)
|
||||||
{
|
{
|
||||||
sprintf(String, "%.5f", gSubMenuSelection * 1e-05);
|
sprintf(String, "%u.%05u", gSubMenuSelection / 100000, gSubMenuSelection % 100000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +373,7 @@ void UI_DisplayMenu(void)
|
|||||||
if (gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0)
|
||||||
strcpy(String, "OFF");
|
strcpy(String, "OFF");
|
||||||
else
|
else
|
||||||
sprintf(String, "%d", gSubMenuSelection);
|
sprintf(String, "%u", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ABR:
|
case MENU_ABR:
|
||||||
@ -384,7 +382,7 @@ void UI_DisplayMenu(void)
|
|||||||
strcpy(String, "OFF");
|
strcpy(String, "OFF");
|
||||||
else
|
else
|
||||||
if (gSubMenuSelection < 5)
|
if (gSubMenuSelection < 5)
|
||||||
sprintf(String, "%d sec", gSubMenuSelection * 10);
|
sprintf(String, "%u sec", gSubMenuSelection * 10);
|
||||||
else
|
else
|
||||||
strcpy(String, "ON");
|
strcpy(String, "ON");
|
||||||
#else
|
#else
|
||||||
@ -449,7 +447,7 @@ void UI_DisplayMenu(void)
|
|||||||
if (gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0)
|
||||||
strcpy(String, "OFF");
|
strcpy(String, "OFF");
|
||||||
else
|
else
|
||||||
sprintf(String, "%dmin", gSubMenuSelection);
|
sprintf(String, "%umin", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
@ -470,11 +468,11 @@ void UI_DisplayMenu(void)
|
|||||||
if (gSubMenuSelection == 0)
|
if (gSubMenuSelection == 0)
|
||||||
strcpy(String, "OFF");
|
strcpy(String, "OFF");
|
||||||
else
|
else
|
||||||
sprintf(String, "%d*100ms", gSubMenuSelection);
|
sprintf(String, "%u*100ms", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_S_LIST:
|
case MENU_S_LIST:
|
||||||
sprintf(String, "LIST%d", gSubMenuSelection);
|
sprintf(String, "LIST%u", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifndef DISABLE_ALARM
|
#ifndef DISABLE_ALARM
|
||||||
@ -500,11 +498,11 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_D_HOLD:
|
case MENU_D_HOLD:
|
||||||
sprintf(String, "%ds", gSubMenuSelection);
|
sprintf(String, "%us", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_D_PRE:
|
case MENU_D_PRE:
|
||||||
sprintf(String, "%d*10ms", gSubMenuSelection);
|
sprintf(String, "%u*10ms", gSubMenuSelection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_PTT_ID:
|
case MENU_PTT_ID:
|
||||||
@ -528,7 +526,7 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_VOL:
|
case MENU_VOL:
|
||||||
sprintf(String, "%.2fV", gBatteryVoltageAverage * 0.01); // argh, floating point :(
|
sprintf(String, "%u.%02uV", gBatteryVoltageAverage / 100, gBatteryVoltageAverage % 100);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_RESET:
|
case MENU_RESET:
|
||||||
@ -642,7 +640,7 @@ void UI_DisplayMenu(void)
|
|||||||
i = gMenuCursor - MENU_SLIST1;
|
i = gMenuCursor - MENU_SLIST1;
|
||||||
|
|
||||||
if (gSubMenuSelection == 0xFF)
|
if (gSubMenuSelection == 0xFF)
|
||||||
sprintf(String, "NULL");
|
strcpy(String, "NULL");
|
||||||
else
|
else
|
||||||
UI_GenerateChannelStringEx(String, true, (uint8_t)gSubMenuSelection);
|
UI_GenerateChannelStringEx(String, true, (uint8_t)gSubMenuSelection);
|
||||||
|
|
||||||
@ -656,13 +654,13 @@ void UI_DisplayMenu(void)
|
|||||||
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH1[i]))
|
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH1[i]))
|
||||||
{
|
{
|
||||||
sprintf(String, "PRI1:%d", gEeprom.SCANLIST_PRIORITY_CH1[i] + 1);
|
sprintf(String, "PRI1:%u", gEeprom.SCANLIST_PRIORITY_CH1[i] + 1);
|
||||||
UI_PrintString(String, 50, 127, 2, 8);
|
UI_PrintString(String, 50, 127, 2, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH2[i]))
|
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH2[i]))
|
||||||
{
|
{
|
||||||
sprintf(String, "PRI2:%d", gEeprom.SCANLIST_PRIORITY_CH2[i] + 1);
|
sprintf(String, "PRI2:%u", gEeprom.SCANLIST_PRIORITY_CH2[i] + 1);
|
||||||
UI_PrintString(String, 50, 127, 4, 8);
|
UI_PrintString(String, 50, 127, 4, 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,17 +34,17 @@ void UI_DisplayScanner(void)
|
|||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
if (gScanSingleFrequency || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED))
|
if (gScanSingleFrequency || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED))
|
||||||
sprintf(String, "FREQ:%.5f", gScanFrequency * 1e-05);
|
sprintf(String, "FREQ:%u.%05u", gScanFrequency / 100000, gScanFrequency % 100000);
|
||||||
else
|
else
|
||||||
sprintf(String, "FREQ:**.*****");
|
strcpy(String, "FREQ:**.*****");
|
||||||
UI_PrintString(String, 2, 0, 1, 8);
|
UI_PrintString(String, 2, 0, 1, 8);
|
||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
if (gScanCssState < SCAN_CSS_STATE_FOUND || !gScanUseCssResult)
|
if (gScanCssState < SCAN_CSS_STATE_FOUND || !gScanUseCssResult)
|
||||||
sprintf(String, "CTC:******");
|
strcpy(String, "CTC:******");
|
||||||
else
|
else
|
||||||
if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE)
|
if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE)
|
||||||
sprintf(String, "CTC:%.1fHz", CTCSS_Options[gScanCssResultCode] * 0.1);
|
sprintf(String, "CTC:%u.%uHz", CTCSS_Options[gScanCssResultCode] / 10, CTCSS_Options[gScanCssResultCode] % 10);
|
||||||
else
|
else
|
||||||
sprintf(String, "DCS:D%03oN", DCS_Options[gScanCssResultCode]);
|
sprintf(String, "DCS:D%03oN", DCS_Options[gScanCssResultCode]);
|
||||||
UI_PrintString(String, 2, 0, 3, 8);
|
UI_PrintString(String, 2, 0, 3, 8);
|
||||||
|
@ -49,9 +49,10 @@ void UI_DisplayWelcome(void)
|
|||||||
(gBatteryVoltageAverage > gMax_bat_v) ? gMax_bat_v :
|
(gBatteryVoltageAverage > gMax_bat_v) ? gMax_bat_v :
|
||||||
gBatteryVoltageAverage;
|
gBatteryVoltageAverage;
|
||||||
|
|
||||||
sprintf(WelcomeString0, "VOLTAGE");
|
strcpy(WelcomeString0, "VOLTAGE");
|
||||||
sprintf(WelcomeString1, "%.2fV %u%%",
|
sprintf(WelcomeString1, "%u.%02uV %u%%",
|
||||||
gBatteryVoltageAverage * 0.01, // argh, floating point :(
|
gBatteryVoltageAverage / 100,
|
||||||
|
gBatteryVoltageAverage % 100,
|
||||||
(100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v));
|
(100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
|
||||||
#ifdef GIT_HASH
|
#ifdef GIT_HASH
|
||||||
const char Version[] = "OEFW-" GIT_HASH;
|
const char Version[] = "OEFW-" GIT_HASH;
|
||||||
|
const char UART_Version[45] = "UV-K5 Firmware, Open Edition, OEFW-"GIT_HASH"\r\n";
|
||||||
#else
|
#else
|
||||||
const char Version[] = "OEFW-230912";
|
const char Version[] = "OEFW-230913";
|
||||||
|
const char UART_Version[45] = "UV-K5 Firmware, Open Edition, OEFW-230913\r\n";
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#define VERSION_H
|
#define VERSION_H
|
||||||
|
|
||||||
extern const char Version[];
|
extern const char Version[];
|
||||||
|
extern const char UART_Version[45];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ del /S /Q *.o >nul 2>nul
|
|||||||
del /S /Q *.d >nul 2>nul
|
del /S /Q *.d >nul 2>nul
|
||||||
|
|
||||||
::python -m pip install --upgrade pip crcmod
|
::python -m pip install --upgrade pip crcmod
|
||||||
fw-pack.py firmware.bin 230912 firmware.packed.bin
|
fw-pack.py firmware.bin 230913 firmware.packed.bin
|
||||||
|
|
||||||
::arm-none-eabi-size firmware
|
::arm-none-eabi-size firmware
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user