Simplify app registration with TactilityCpp (#7)
- Simplified app registration with a C++ wrapper for the TactilityC. - Rename the various app classes from `Application` to more specific names like `Calculator` etc.
This commit is contained in:
committed by
GitHub
parent
e1579d3cbd
commit
b39bd6b6f5
@@ -1,4 +1,4 @@
|
||||
#include "Application.h"
|
||||
#include "Gpio.h"
|
||||
|
||||
#include <tt_app_alertdialog.h>
|
||||
#include <tt_hal.h>
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
constexpr char* TAG = "GPIO";
|
||||
|
||||
void Application::updatePinStates() {
|
||||
void Gpio::updatePinStates() {
|
||||
tt_mutex_lock(mutex, TT_MAX_TICKS);
|
||||
// Update pin states
|
||||
for (int i = 0; i < pinStates.size(); ++i) {
|
||||
@@ -19,7 +19,7 @@ void Application::updatePinStates() {
|
||||
tt_mutex_unlock(mutex);
|
||||
}
|
||||
|
||||
void Application::updatePinWidgets() {
|
||||
void Gpio::updatePinWidgets() {
|
||||
tt_lvgl_lock();
|
||||
assert(pinStates.size() == pinWidgets.size());
|
||||
for (int j = 0; j < pinStates.size(); ++j) {
|
||||
@@ -39,7 +39,7 @@ void Application::updatePinWidgets() {
|
||||
tt_lvgl_unlock();
|
||||
}
|
||||
|
||||
lv_obj_t* Application::createGpioRowWrapper(lv_obj_t* parent) {
|
||||
lv_obj_t* Gpio::createGpioRowWrapper(lv_obj_t* parent) {
|
||||
lv_obj_t* wrapper = lv_obj_create(parent);
|
||||
lv_obj_set_style_pad_all(wrapper, 0, LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_border_width(wrapper, 0, LV_STATE_DEFAULT);
|
||||
@@ -49,13 +49,13 @@ lv_obj_t* Application::createGpioRowWrapper(lv_obj_t* parent) {
|
||||
|
||||
// region Task
|
||||
|
||||
void Application::onTimer(void* context) {
|
||||
Application* app = static_cast<Application*>(context);
|
||||
void Gpio::onTimer(void* context) {
|
||||
Gpio* app = static_cast<Gpio*>(context);
|
||||
app->updatePinStates();
|
||||
app->updatePinWidgets();
|
||||
}
|
||||
|
||||
void Application::startTask() {
|
||||
void Gpio::startTask() {
|
||||
tt_mutex_lock(mutex, TT_MAX_TICKS);
|
||||
assert(timer == nullptr);
|
||||
timer = tt_timer_alloc(TimerTypePeriodic, onTimer, this);
|
||||
@@ -63,7 +63,7 @@ void Application::startTask() {
|
||||
tt_mutex_unlock(mutex);
|
||||
}
|
||||
|
||||
void Application::stopTask() {
|
||||
void Gpio::stopTask() {
|
||||
assert(timer);
|
||||
|
||||
tt_timer_stop(timer);
|
||||
@@ -81,15 +81,15 @@ static int getSquareSpacing(UiScale scale) {
|
||||
}
|
||||
}
|
||||
|
||||
void Application::onCreate(AppHandle app) {
|
||||
void Gpio::onCreate(AppHandle app) {
|
||||
mutex = tt_mutex_alloc(MUTEX_TYPE_RECURSIVE);
|
||||
}
|
||||
|
||||
void Application::onDestroy(AppHandle app) {
|
||||
void Gpio::onDestroy(AppHandle app) {
|
||||
tt_mutex_free(mutex);
|
||||
}
|
||||
|
||||
void Application::onShow(AppHandle app, lv_obj_t* parent) {
|
||||
void Gpio::onShow(AppHandle app, lv_obj_t* parent) {
|
||||
// auto ui_scale = hal::getConfiguration()->uiScale;
|
||||
|
||||
lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN);
|
||||
@@ -171,7 +171,7 @@ void Application::onShow(AppHandle app, lv_obj_t* parent) {
|
||||
startTask();
|
||||
}
|
||||
|
||||
void Application::onHide(AppHandle app) {
|
||||
void Gpio::onHide(AppHandle app) {
|
||||
stopTask();
|
||||
|
||||
tt_mutex_lock(mutex, TT_MAX_TICKS);
|
||||
@@ -1,13 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "tt_app.h"
|
||||
#include "tt_mutex.h"
|
||||
#include "tt_timer.h"
|
||||
#include <TactilityCpp/App.h>
|
||||
|
||||
#include <tt_app.h>
|
||||
#include <tt_mutex.h>
|
||||
#include <tt_timer.h>
|
||||
|
||||
#include <lvgl.h>
|
||||
#include <vector>
|
||||
|
||||
class Application final {
|
||||
class Gpio final : public App {
|
||||
|
||||
std::vector<lv_obj_t*> pinWidgets;
|
||||
std::vector<bool> pinStates;
|
||||
@@ -19,10 +21,10 @@ class Application final {
|
||||
|
||||
public:
|
||||
|
||||
void onCreate(AppHandle app);
|
||||
void onDestroy(AppHandle app);
|
||||
void onShow(AppHandle context, lv_obj_t* parent);
|
||||
void onHide(AppHandle context);
|
||||
void onCreate(AppHandle app) override;
|
||||
void onDestroy(AppHandle app) override;
|
||||
void onShow(AppHandle context, lv_obj_t* parent) override;
|
||||
void onHide(AppHandle context) override;
|
||||
|
||||
void startTask();
|
||||
void stopTask();
|
||||
@@ -1,41 +1,9 @@
|
||||
#include <tt_app.h>
|
||||
#include "Application.h"
|
||||
|
||||
static void onCreateApp(AppHandle appHandle, void* data) {
|
||||
static_cast<Application*>(data)->onCreate(appHandle);
|
||||
}
|
||||
|
||||
static void onDestroyApp(AppHandle appHandle, void* data) {
|
||||
static_cast<Application*>(data)->onDestroy(appHandle);
|
||||
}
|
||||
|
||||
static void onShowApp(AppHandle appHandle, void* data, lv_obj_t* parent) {
|
||||
static_cast<Application*>(data)->onShow(appHandle, parent);
|
||||
}
|
||||
|
||||
static void onHideApp(AppHandle appHandle, void* data) {
|
||||
static_cast<Application*>(data)->onHide(appHandle);
|
||||
}
|
||||
|
||||
static void* createAppData() {
|
||||
return new Application();
|
||||
}
|
||||
|
||||
static void destroyAppData(void* app) {
|
||||
delete static_cast<Application*>(app);
|
||||
}
|
||||
#include "Gpio.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
tt_app_register((AppRegistration) {
|
||||
.createData = createAppData,
|
||||
.destroyData = destroyAppData,
|
||||
.onCreate = onCreateApp,
|
||||
.onDestroy = onDestroyApp,
|
||||
.onShow = onShowApp,
|
||||
.onHide = onHideApp,
|
||||
});
|
||||
registerApp<Gpio>();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user