Minor formatting, diagnostic and documentation changes

This commit is contained in:
Avamander 2020-10-04 15:08:48 +03:00
parent bb72712d37
commit f68c7b65b3
5 changed files with 31 additions and 11 deletions

View file

@ -552,7 +552,7 @@ link_directories(
) )
set(COMMON_FLAGS -MP -MD -mthumb -mabi=aapcs -Wall -g3 -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Wreturn-type -Werror=return-type) set(COMMON_FLAGS -MP -MD -mthumb -mabi=aapcs -Wall -Wno-unknown-pragmas -g3 -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Wreturn-type -Werror=return-type)
add_definitions(-DCONFIG_GPIO_AS_PINRESET) add_definitions(-DCONFIG_GPIO_AS_PINRESET)
add_definitions(-DDEBUG) add_definitions(-DDEBUG)
add_definitions(-DNIMBLE_CFG_CONTROLLER) add_definitions(-DNIMBLE_CFG_CONTROLLER)

View file

@ -7,9 +7,9 @@ using namespace Pinetime::Applications::Screens;
extern lv_font_t jetbrains_mono_extrabold_compressed; extern lv_font_t jetbrains_mono_extrabold_compressed;
extern lv_font_t jetbrains_mono_bold_20; extern lv_font_t jetbrains_mono_bold_20;
InfiniPaint::InfiniPaint(Pinetime::Applications::DisplayApp *app, Pinetime::Components::LittleVgl& lvgl) : Screen(app), lvgl{lvgl} { InfiniPaint::InfiniPaint(Pinetime::Applications::DisplayApp *app, Pinetime::Components::LittleVgl &lvgl) : Screen(app), lvgl{lvgl} {
app->SetTouchMode(DisplayApp::TouchModes::Polling); app->SetTouchMode(DisplayApp::TouchModes::Polling);
std::fill(b, b+bufferSize, LV_COLOR_WHITE); std::fill(b, b + bufferSize, LV_COLOR_WHITE);
} }
InfiniPaint::~InfiniPaint() { InfiniPaint::~InfiniPaint() {
@ -33,10 +33,10 @@ bool InfiniPaint::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
bool InfiniPaint::OnTouchEvent(uint16_t x, uint16_t y) { bool InfiniPaint::OnTouchEvent(uint16_t x, uint16_t y) {
lv_area_t area; lv_area_t area;
area.x1 = x-(width/2); area.x1 = x - (width / 2);
area.y1 = y-(height/2); area.y1 = y - (height / 2);
area.x2 = x+(width/2)-1; area.x2 = x + (width / 2) - 1;
area.y2 = y+(height/2)-1; area.y2 = y + (height / 2) - 1;
lvgl.SetFullRefresh(Components::LittleVgl::FullRefreshDirections::None); lvgl.SetFullRefresh(Components::LittleVgl::FullRefreshDirections::None);
lvgl.FlushDisplay(&area, b); lvgl.FlushDisplay(&area, b);
return true; return true;

View file

@ -12,13 +12,25 @@ namespace Pinetime {
explicit Screen(DisplayApp* app) : app{app} {} explicit Screen(DisplayApp* app) : app{app} {}
virtual ~Screen() = default; virtual ~Screen() = default;
// Return false if the app can be closed, true if it must continue to run /**
* Most of the time, apps only react to events (touch events, for example).
* In this case you don't need to do anything in this method.
*
* For example, InfiniPaint does nothing in Refresh().
* But, if you want to update your display periodically, draw an animation...
* you cannot do it in a touch event handler because these handlers are not
* called if the user does not touch the screen.
*
* That's why Refresh() is there: update the display periodically.
*
* @return false if the app can be closed, true if it must continue to run
**/
virtual bool Refresh() = 0; virtual bool Refresh() = 0;
// Return false if the button hasn't been handled by the app, true if it has been handled /** @return false if the button hasn't been handled by the app, true if it has been handled */
virtual bool OnButtonPushed() { return false; } virtual bool OnButtonPushed() { return false; }
// Return false if the event hasn't been handled by the app, true if it has been handled /** @return false if the event hasn't been handled by the app, true if it has been handled */
virtual bool OnTouchEvent(TouchEvents event) { return false; } virtual bool OnTouchEvent(TouchEvents event) { return false; }
virtual bool OnTouchEvent(uint16_t x, uint16_t y) { return false; } virtual bool OnTouchEvent(uint16_t x, uint16_t y) { return false; }

View file

@ -19,10 +19,15 @@ void NrfLogger::Init() {
void NrfLogger::Process(void*) { void NrfLogger::Process(void*) {
NRF_LOG_INFO("Logger task started!"); NRF_LOG_INFO("Logger task started!");
// Suppress endless loop diagnostic
#pragma clang diagnostic push
#pragma ide diagnostic ignored "EndlessLoop"
while (1) { while (1) {
NRF_LOG_FLUSH(); NRF_LOG_FLUSH();
vTaskDelay(100); // Not good for power consumption, it will wake up every 100ms... vTaskDelay(100); // Not good for power consumption, it will wake up every 100ms...
} }
// Clear diagnostic suppression
#pragma clang diagnostic pop
} }
void NrfLogger::Resume() { void NrfLogger::Resume() {

View file

@ -100,6 +100,9 @@ void SystemTask::Work() {
idleTimer = xTimerCreate ("idleTimer", idleTime, pdFALSE, this, IdleTimerCallback); idleTimer = xTimerCreate ("idleTimer", idleTime, pdFALSE, this, IdleTimerCallback);
xTimerStart(idleTimer, 0); xTimerStart(idleTimer, 0);
// Suppress endless loop diagnostic
#pragma clang diagnostic push
#pragma ide diagnostic ignored "EndlessLoop"
while(true) { while(true) {
uint8_t msg; uint8_t msg;
if (xQueueReceive(systemTasksMsgQueue, &msg, isSleeping ? 2500 : 1000)) { if (xQueueReceive(systemTasksMsgQueue, &msg, isSleeping ? 2500 : 1000)) {
@ -231,7 +234,7 @@ void SystemTask::PushMessage(SystemTask::Messages msg) {
xQueueSendFromISR(systemTasksMsgQueue, &msg, &xHigherPriorityTaskWoken); xQueueSendFromISR(systemTasksMsgQueue, &msg, &xHigherPriorityTaskWoken);
if (xHigherPriorityTaskWoken) { if (xHigherPriorityTaskWoken) {
/* Actual macro used here is port specific. */ /* Actual macro used here is port specific. */
// TODO : should I do something here? // TODO: should I do something here?
} }
} }