// // Created by bruno on 3/30/25. // #include "messages.h" // 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 (gEnteringSMS != SMS_NOT_ENTERING) { if (gEnteringSMS == SMS_ENTERING_DEST) { UI_PrintString("SMS dest", 0, 0, 1 /*, 8 */); u32_to_str(dataPacket.dest, String); UI_PrintStringSmallNormal(String, 0, 0, 2); } else if (gEnteringSMS == SMS_ENTERING_MESSAGE) { UI_PrintString("SMS data", 0, 0, 1 /*, 8 */); UI_PrintStringSmallNormal((const char *) dataPacket.data, 1, 0, 2); } } 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 < 14; i++) { String[i] = ' '; } 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] = 'g'; String[3] = 's'; String[4] = ':'; String[5] = ' '; String[6] = 0; u8_to_str(loadedPacket.flags, &String[6]); // 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 */); } ST7565_BlitFullScreen(); }