Try out the fsk
All checks were successful
Build Firmware / build (push) Successful in 2m30s

This commit is contained in:
2025-03-31 21:53:23 +02:00
parent 101bde7463
commit f1904e03fe
16 changed files with 446 additions and 246 deletions

View File

@@ -434,7 +434,7 @@ void UI_DisplayMain(void) {
UI_DisplayClear();
if (gLowBattery && !gLowBatteryConfirmed) {
UI_DisplayPopup("LOW BATT");
UI_DisplayPopup("LOW BAT");
ST7565_BlitFullScreen();
return;
}
@@ -549,21 +549,6 @@ void UI_DisplayMain(void) {
}
#endif
if (gEnteringSMS == SMS_ENTERING_DEST) {
UI_PrintString("SMS Dst", 0, 0, line - 1 /*, 8 */);
sprintf(String, "%ld", 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
#ifdef ENABLE_DTMF_CALLING
|| gDTMF_CallState != DTMF_CALL_STATE_NONE || gDTMF_IsTx

View File

@@ -5,61 +5,102 @@
#include "messages.h"
void UI_DisplayMessages(void)
{
char String[19] = {0};
char *pPrintStr = String;
sprintf("FRM:%d %d/%d", )
bool bCentered;
uint8_t Start;
// Convert a 32-bit number to a string (10 digits, zero-padded)
void u32_to_str(uint32_t num, char *str) {
for (int i = 9; i >= 0; i--) {
str[i] = '0' + (num % 10);
num /= 10;
}
str[10] = '\0';
}
// Convert an 8-bit number to a 2-digit string (zero-padded)
void u8_to_str(uint8_t num, char *str) {
str[0] = '0' + (num / 100); // Hundreds place
str[1] = '0' + ((num / 10) % 10); // Tens place
str[2] = '0' + (num % 10); // Ones place
str[3] = '\0';
}
void UI_DisplayMessages(void) {
char String[19];
UI_DisplayClear();
if (gScanSingleFrequency || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED)) {
sprintf(String, "FREQ:%u.%05u", gScanFrequency / 100000, gScanFrequency % 100000);
pPrintStr = String;
} else {
pPrintStr = "FREQ:**.*****";
}
UI_PrintString(pPrintStr, 2, 0, 1 /*, 8 */);
if (gScanCssState < SCAN_CSS_STATE_FOUND || !gScanUseCssResult) {
pPrintStr = "CTC:******";
} else if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE) {
sprintf(String, "CTC:%u.%uHz", CTCSS_Options[gScanCssResultCode] / 10, CTCSS_Options[gScanCssResultCode] % 10);
pPrintStr = String;
} else {
sprintf(String, "DCS:D%03oN", DCS_Options[gScanCssResultCode]);
pPrintStr = String;
}
UI_PrintString(pPrintStr, 2, 0, 3 /*, 8 */);
memset(String, 0, sizeof(String));
if (gScannerSaveState == SCAN_SAVE_CHANNEL) {
pPrintStr = "SAV?";
Start = 0;
bCentered = 1;
} else {
Start = 2;
bCentered = 0;
if (gScannerSaveState == SCAN_SAVE_CHAN_SEL) {
strcpy(String, "SAV:");
UI_GenerateChannelStringEx(String + 5, gShowChPrefix, gScanChannel);
pPrintStr = String;
} else if (gScanCssState < SCAN_CSS_STATE_FOUND) {
strcpy(String, "SCN");
memset(String + 4, '.', (gScanProgressIndicator & 7) + 1);
pPrintStr = String;
} else if (gScanCssState == SCAN_CSS_STATE_FOUND) {
pPrintStr = "SCN CMP.";
} else {
pPrintStr = "SCN FAIL.";
if (gEnteringSMS != SMS_NOT_ENTERING) {
UI_PrintString("SMS write", 0, 0, 0 /*, 8 */);
if (gEnteringSMS == SMS_ENTERING_DEST) {
UI_PrintString("SMS dest", 0, 0, 2 /*, 8 */);
u32_to_str(dataPacket.dest, String);
UI_PrintStringSmallNormal(String, 0, 0, 3);
} else if (gEnteringSMS == SMS_ENTERING_MESSAGE) {
UI_PrintString("SMS data", 0, 0, 2 /*, 8 */);
UI_PrintStringSmallNormal((const char *) dataPacket.data, 1, 0, 3);
}
} else {
String[0] = 'M';
String[1] = 'E';
String[2] = 'S';
String[3] = 'S';
String[4] = 'A';
String[5] = 'G';
String[6] = 'E';
String[7] = 'S';
for (size_t i = 8; i < 12; i++) {
String[i] = ' ';
}
uint8_t Data[8];
EEPROM_ReadBuffer(SEQParameterEEPROM, Data, 8);
String[13] = Data[1] == gActiveMessage ? 'L' : ' ';
String[14] = '0' + gActiveMessage;
String[15] = '/';
String[16] = '0' + MESSAGES_COUNT;
String[17] = 0;
UI_PrintString(String, 2, 0, 0 /*, 8 */);
String[0] = 'F';
String[1] = 'r';
String[2] = 'o';
String[3] = 'm';
String[4] = ':';
String[5] = ' ';
u32_to_str(loadedPacket.src, &String[6]); // Write at offset 6
UI_PrintString(String, 2, 0, 1 /*, 8 */);
String[0] = 'S';
String[1] = 'E';
String[2] = 'Q';
String[3] = ':';
String[4] = ' ';
u8_to_str(loadedPacket.seq, &String[5]); // Write at offset 5
String[8] = ' ';
String[9] = 'T';
String[10] = 'T';
String[11] = 'L';
String[12] = ':';
String[13] = ' ';
String[14] = 0;
u8_to_str(loadedPacket.ttl, &String[14]); // Write at new offset
UI_PrintString(String, 2, 0, 2 /*, 8 */);
String[0] = 'F';
String[1] = 'l';
String[2] = 'a';
String[3] = 'g';
String[4] = 's';
String[5] = ':';
String[6] = ' ';
String[7] = 0;
u8_to_str(loadedPacket.flags, &String[7]); // Write at offset 7
UI_PrintString(String, 2, 0, 3 /*, 8 */);
UI_PrintString("Data:", 0, 0, 4 /*, 8 */);
UI_PrintString((const char *) loadedPacket.data, 2, 0, 5 /*, 8 */);
}
UI_PrintString(pPrintStr, Start, bCentered ? 127 : 0, 5 /*, 8 */);
ST7565_BlitFullScreen();
}

View File

@@ -4,7 +4,15 @@
#ifndef BRNQUANFW_MESSAGES_H
#define BRNQUANFW_MESSAGES_H
#include "stdio.h"
#include "helper.h"
#include "../driver/st7565.h"
#include "string.h"
#include "../app/messages.h"
#include "../app/fskmodem.h"
void UI_DisplayMessages(void);
void u8_to_str(uint8_t num, char *str);
void u32_to_str(uint32_t num, char *str);
#endif //BRNQUANFW_MESSAGES_H

View File

@@ -39,6 +39,7 @@
#include "ui/scanner.h"
#include "ui/ui.h"
#include "../misc.h"
#include "messages.h"
GUI_DisplayType_t gScreenToDisplay;
GUI_DisplayType_t gRequestDisplayScreen = DISPLAY_INVALID;
@@ -52,6 +53,7 @@ void (*UI_DisplayFunctions[])(void) = {
[DISPLAY_MAIN] = &UI_DisplayMain,
[DISPLAY_MENU] = &UI_DisplayMenu,
[DISPLAY_SCANNER] = &UI_DisplayScanner,
[DISPLAY_MESSAGES] = &UI_DisplayMessages,
#ifdef ENABLE_FMRADIO
[DISPLAY_FM] = &UI_DisplayFM,

View File

@@ -25,7 +25,7 @@ enum GUI_DisplayType_t
DISPLAY_MAIN = 0,
DISPLAY_MENU,
DISPLAY_SCANNER,
DISPLAY_MESSAGES
DISPLAY_MESSAGES,
#ifdef ENABLE_FMRADIO
DISPLAY_FM,