diff --git a/openrtx/include/interfaces/datatypes.h b/openrtx/include/interfaces/datatypes.h new file mode 100644 index 00000000..01a43fc8 --- /dev/null +++ b/openrtx/include/interfaces/datatypes.h @@ -0,0 +1,42 @@ +/*************************************************************************** + * Copyright (C) 2020 by Federico Amedeo Izzo IU2NUO, * + * Niccolò Izzo IU2KIN, * + * Silvano Seva IU2KWO * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see * + ***************************************************************************/ + +#ifndef DATATYPES_H +#define DATATYPES_H + +/** + * \brief CTCSS and DCS type definition. + * + * Continuous Tone Controlled Squelch System (CTCSS) + * sub-audible tone frequency are expressed in \em tenth of Hz. + * For example, the subaudible tone of 88.5 Hz is represented within + * Hamlib by 885. + * + * Digitally-Coded Squelch codes are simple direct integers. + */ +typedef unsigned int tone_t; + +/** + * \brief Frequency type, + * + * Frequency type unit in Hz, able to hold SHF frequencies. + */ +typedef float freq_t; + +#endif /* DATATYPES_H */ diff --git a/openrtx/include/interfaces/state.h b/openrtx/include/interfaces/state.h index ec023b32..8ab6cd29 100644 --- a/openrtx/include/interfaces/state.h +++ b/openrtx/include/interfaces/state.h @@ -20,6 +20,8 @@ #ifndef STATE_H #define STATE_H +#include + /** * Part of this structure has been commented because the corresponding * functionality is not yet implemented. @@ -37,8 +39,8 @@ typedef struct state_t { //time_t tx_status_tv; //bool tx_status; - //freq_t rx_freq; - //freq_t tx_freq; + freq_t rx_freq; + freq_t tx_freq; //float tx_power; diff --git a/openrtx/src/main.c b/openrtx/src/main.c index 0fc4d8c7..26b2ab36 100644 --- a/openrtx/src/main.c +++ b/openrtx/src/main.c @@ -33,6 +33,9 @@ int main(void) { OS_ERR os_err; + // Initialize the radio state + state_init(); + // Init the graphic stack gfx_init(); platform_setBacklightLevel(255); @@ -52,7 +55,6 @@ int main(void) gfx_render(); while(gfx_renderingInProgress()); - // UI update infinite loop while(1) { diff --git a/openrtx/src/state.c b/openrtx/src/state.c index bfe6a8fe..378efea3 100644 --- a/openrtx/src/state.c +++ b/openrtx/src/state.c @@ -24,6 +24,10 @@ state_t current_state; void state_init() { + /*TODO: Read current state parameters from hardware, + * or initialize them to sane defaults */ + current_state.rx_freq = 0.0; + current_state.tx_freq = 0.0; } state_t state_update() diff --git a/openrtx/src/ui.c b/openrtx/src/ui.c index 533162e7..1af4e0b1 100644 --- a/openrtx/src/ui.c +++ b/openrtx/src/ui.c @@ -77,13 +77,29 @@ void ui_drawTopBar() // TODO: Replace with battery icon char bat_buf[6] = ""; float v_bat = platform_getVbat(); - snprintf(bat_buf, sizeof(bat_buf), "%.1fV", v_bat); + snprintf(bat_buf, sizeof(bat_buf), "%.1fV ", v_bat); gfx_print(top_bar_pos, bat_buf, FONT_SIZE_1, TEXT_ALIGN_RIGHT, color_white); } -void ui_drawMainScreen() +void ui_drawVFO(state_t state) +{ + // Middle line printing positions, uses 8 px padding + point_t line1_pos = {0, 25}; + point_t line2_pos = {0, 57}; + point_t line3_pos = {0, 89}; + + // Print VFO frequencies + char freq_buf[20] = ""; + snprintf(freq_buf, sizeof(freq_buf), "Rx: %09.5f", state.rx_freq); + gfx_print(line1_pos, freq_buf, FONT_SIZE_3, TEXT_ALIGN_CENTER, color_white); + snprintf(freq_buf, sizeof(freq_buf), "Tx: %09.5f", state.tx_freq); + gfx_print(line2_pos, freq_buf, FONT_SIZE_3, TEXT_ALIGN_CENTER, color_white); +} + +void ui_drawMainScreen(state_t state) { ui_drawTopBar(); + ui_drawVFO(state); } void ui_init() @@ -93,7 +109,7 @@ void ui_init() bool ui_update(state_t state, uint32_t keys) { gfx_clearScreen(); - ui_drawMainScreen(); + ui_drawMainScreen(state); return true; }