Merge pull request #82 from Avamander/patch-6
Minor formatting, diagnostic and documentation changes
This commit is contained in:
commit
da73938f4d
7 changed files with 59 additions and 29 deletions
|
@ -7,6 +7,10 @@
|
||||||
<option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
|
<option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
|
||||||
<option name="INDENT_DIRECTIVE_AS_CODE" value="true" />
|
<option name="INDENT_DIRECTIVE_AS_CODE" value="true" />
|
||||||
<option name="SPACE_BEFORE_TEMPLATE_DECLARATION_LT" value="true" />
|
<option name="SPACE_BEFORE_TEMPLATE_DECLARATION_LT" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_POINTER_IN_DECLARATION" value="false" />
|
||||||
|
<option name="SPACE_AFTER_POINTER_IN_DECLARATION" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_REFERENCE_IN_DECLARATION" value="false" />
|
||||||
|
<option name="SPACE_AFTER_REFERENCE_IN_DECLARATION" value="true" />
|
||||||
</Objective-C>
|
</Objective-C>
|
||||||
<codeStyleSettings language="ObjectiveC">
|
<codeStyleSettings language="ObjectiveC">
|
||||||
<option name="RIGHT_MARGIN" value="140" />
|
<option name="RIGHT_MARGIN" value="140" />
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -11,24 +11,28 @@
|
||||||
namespace Pinetime {
|
namespace Pinetime {
|
||||||
namespace Applications {
|
namespace Applications {
|
||||||
namespace Screens {
|
namespace Screens {
|
||||||
|
|
||||||
class InfiniPaint : public Screen{
|
class InfiniPaint : public Screen {
|
||||||
public:
|
public:
|
||||||
InfiniPaint(DisplayApp* app, Pinetime::Components::LittleVgl& lvgl);
|
InfiniPaint(DisplayApp* app, Pinetime::Components::LittleVgl& lvgl);
|
||||||
~InfiniPaint() override;
|
|
||||||
|
~InfiniPaint() override;
|
||||||
bool Refresh() override;
|
|
||||||
bool OnButtonPushed() override;
|
bool Refresh() override;
|
||||||
bool OnTouchEvent(TouchEvents event) override;
|
|
||||||
bool OnTouchEvent(uint16_t x, uint16_t y) override;
|
bool OnButtonPushed() override;
|
||||||
|
|
||||||
private:
|
bool OnTouchEvent(TouchEvents event) override;
|
||||||
Pinetime::Components::LittleVgl& lvgl;
|
|
||||||
static constexpr uint16_t width = 10;
|
bool OnTouchEvent(uint16_t x, uint16_t y) override;
|
||||||
static constexpr uint16_t height = 10;
|
|
||||||
static constexpr uint16_t bufferSize = width*height;
|
private:
|
||||||
lv_color_t b[bufferSize];
|
Pinetime::Components::LittleVgl& lvgl;
|
||||||
bool running = true;
|
static constexpr uint16_t width = 10;
|
||||||
|
static constexpr uint16_t height = 10;
|
||||||
|
static constexpr uint16_t bufferSize = width * height;
|
||||||
|
lv_color_t b[bufferSize];
|
||||||
|
bool running = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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)) {
|
||||||
|
@ -191,6 +194,8 @@ void SystemTask::Work() {
|
||||||
if(!nrf_gpio_pin_read(pinButton))
|
if(!nrf_gpio_pin_read(pinButton))
|
||||||
watchdog.Kick();
|
watchdog.Kick();
|
||||||
}
|
}
|
||||||
|
// Clear diagnostic suppression
|
||||||
|
#pragma clang diagnostic pop
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemTask::OnButtonPushed() {
|
void SystemTask::OnButtonPushed() {
|
||||||
|
@ -231,7 +236,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?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue