Add initial UI main

replace/2b05c14ca0934e50e3ce22bd7d73cd73915b9408
Federico Amedeo Izzo 2020-10-30 20:13:52 +01:00 zatwierdzone przez Niccolò Izzo
rodzic 90023459f5
commit a2b2b602dd
6 zmienionych plików z 224 dodań i 36 usunięć

Wyświetl plik

@ -58,6 +58,8 @@ def = {'DONT_USE_CMSIS_INIT': ''}
## Linux
linux_src = src + ['openrtx/src/main.c',
'openrtx/src/bootstrap.c',
'openrtx/src/state.c',
'openrtx/src/ui.c',
'platform/drivers/display/display_libSDL.c',
'platform/mcu/x86_64/drivers/gpio.c',
'platform/mcu/x86_64/drivers/delays.c',
@ -85,6 +87,8 @@ endif
## TYT MD380
md380_src = src + ['openrtx/src/main.c',
'openrtx/src/bootstrap.c',
'openrtx/src/state.c',
'openrtx/src/ui.c',
'platform/mcu/STM32F4xx/boot/startup.c',
'platform/mcu/STM32F4xx/boot/libc_integration.c',
'platform/mcu/STM32F4xx/drivers/usb/usb_bsp.c',
@ -125,6 +129,8 @@ md380_inc = inc + ['platform/mcu/CMSIS/Include',
## TYT MD-UV380
mduv380_src = src + ['openrtx/src/main.c',
'openrtx/src/bootstrap.c',
'openrtx/src/state.c',
'openrtx/src/ui.c',
'platform/mcu/STM32F4xx/boot/startup.c',
'platform/mcu/STM32F4xx/boot/libc_integration.c',
'platform/mcu/STM32F4xx/drivers/usb/usb_bsp.c',

Wyświetl plik

@ -0,0 +1,77 @@
/***************************************************************************
* 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 <http://www.gnu.org/licenses/> *
***************************************************************************/
#ifndef STATE_H
#define STATE_H
/**
* Part of this structure has been commented because the corresponding
* functionality is not yet implemented.
* Uncomment once the related feature is ready
*/
typedef struct state_t {
//enum ui_screen;
//enum tuner_mode;
//enum radio_mode;
//time_t rx_status_tv;
//bool rx_status;
//time_t tx_status_tv;
//bool tx_status;
//freq_t rx_freq;
//freq_t tx_freq;
//float tx_power;
//uint8_t squelch;
//tone_t rx_tone;
//tone_t tx_tone;
//ch_t *channel;
//#ifdef DMR_ENABLED
//uint8_t dmr_color;
//uint8_t dmr_timeslot;
//dmr_contact_t *dmr_contact;
//#endif
} state_t;
/**
* This function initialises the Radio state, acquiring the information
* needed to populate it from device drivers.
*/
void state_init();
/**
* This function updates the state information by sourcing the
* updated values of the various fields of the state_t struct
* from corresponding device drivers.
*/
state_t state_update();
/**
* This function terminates the Radio state.
*/
void state_terminate();
#endif /* STATE_H */

Wyświetl plik

@ -0,0 +1,44 @@
/***************************************************************************
* 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 <http://www.gnu.org/licenses/> *
***************************************************************************/
#ifndef UI_H
#define UI_H
#include <stdbool.h>
#include <state.h>
/**
* This function initialises the User Interface, starting the
* Finite State Machine describing the user interaction.
*/
void ui_init();
/**
* This function advances the User Interface FSM, basing on the
* current radio state and the keys pressed.
* @return true if a screen refresh is needed after the update
*/
bool ui_update(state_t state, uint16_t keys);
/**
* This function terminates the User Interface.
*/
void ui_terminate();
#endif /* UI_H */

Wyświetl plik

@ -24,55 +24,46 @@
#include "graphics.h"
#include "hwconfig.h"
#include "platform.h"
#include "state.h"
#include "keyboard.h"
#include "ui.h"
void platform_test()
{
gpio_togglePin(GREEN_LED);
OS_ERR os_err;
point_t pos_line1 = {0, 0};
point_t pos_line2 = {0, 9};
point_t pos_line3 = {0, 17};
color_t color_white = {255, 255, 255};
char *buf = "Platform Test";
gfx_print(pos_line1, buf, FONT_SIZE_1, TEXT_ALIGN_LEFT, color_white);
float vBat = platform_getVbat();
float micLevel = platform_getMicLevel();
float volumeLevel = platform_getVolumeLevel();
uint8_t currentCh = platform_getChSelector();
bool ptt = platform_getPttStatus();
char buf2[26] = "";
snprintf(buf2, sizeof(buf2), "bat:%.2f mic:%.2f", vBat, micLevel);
char buf3[26] = "";
snprintf(buf3, sizeof(buf3), "vol:%.2f ch:%d ptt:%s", volumeLevel, currentCh, ptt?"on":"off");
gfx_print(pos_line2, buf2, FONT_SIZE_1, TEXT_ALIGN_LEFT, color_white);
gfx_print(pos_line3, buf3, FONT_SIZE_1, TEXT_ALIGN_LEFT, color_white);
gfx_render();
while(gfx_renderingInProgress());
OSTimeDlyHMSM(0u, 0u, 0u, 250u, OS_OPT_TIME_HMSM_STRICT, &os_err);
}
int main(void)
{
gpio_setMode(GREEN_LED, OUTPUT);
OS_ERR os_err;
// Init the graphic stack
gfx_init();
platform_setBacklightLevel(255);
point_t origin = {0, SCREEN_HEIGHT / 2};
color_t color_yellow = {250, 180, 19};
char *buffer = "OpenRTX";
// Print splash screen
point_t splash_origin = {0, SCREEN_HEIGHT / 2};
color_t color_yellow_fab413 = {250, 180, 19};
char *splash_buf = "OpenRTX";
gfx_clearScreen();
gfx_print(splash_origin, splash_buf, FONT_SIZE_4, TEXT_ALIGN_CENTER, color_yellow_fab413);
gfx_render();
while(gfx_renderingInProgress());
OSTimeDlyHMSM(0u, 0u, 0u, 500u, OS_OPT_TIME_HMSM_STRICT, &os_err);
// Clear screen
gfx_clearScreen();
gfx_render();
while(gfx_renderingInProgress());
OS_ERR os_err;
// Task infinite loop
// UI update infinite loop
while(1)
{
gfx_clearScreen();
gfx_print(origin, buffer, FONT_SIZE_4, TEXT_ALIGN_CENTER, color_yellow);
//gfx_render();
//while(gfx_renderingInProgress());
platform_test();
state_t state = state_update();
uint32_t keys = kbd_getKeys();
bool renderNeeded = ui_update(state, keys);
if(renderNeeded)
{
gfx_render();
while(gfx_renderingInProgress());
}
OSTimeDlyHMSM(0u, 0u, 0u, 100u, OS_OPT_TIME_HMSM_STRICT, &os_err);
}
}

Wyświetl plik

@ -0,0 +1,36 @@
/***************************************************************************
* 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 <http://www.gnu.org/licenses/> *
***************************************************************************/
#include <stdio.h>
#include <state.h>
state_t current_state;
void state_init()
{
}
state_t state_update()
{
return current_state;
}
void state_terminate()
{
}

34
openrtx/src/ui.c 100644
Wyświetl plik

@ -0,0 +1,34 @@
/***************************************************************************
* 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 <http://www.gnu.org/licenses/> *
***************************************************************************/
#include <stdio.h>
#include <ui.h>
void ui_init()
{
}
bool ui_update(state_t state, uint16_t keys)
{
return true;
}
void ui_terminate()
{
}