aboutsummaryrefslogtreecommitdiffstats
path: root/app/base_app.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'app/base_app.hpp')
-rw-r--r--app/base_app.hpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/base_app.hpp b/app/base_app.hpp
new file mode 100644
index 0000000..c9367de
--- /dev/null
+++ b/app/base_app.hpp
@@ -0,0 +1,27 @@
+#pragma once
+#include "../hal/api.hpp"
+
+// Base app
+class BaseApp {
+ public:
+ struct AppAttributes {
+ uint id = 0;
+ bool destroy_on_exit = true;
+ uint render_interval = 500; // Interval in ms at which the render method is called.
+ };
+ enum AppReturnValues {
+ OK = 0,
+ CLOSE, // Close app from foreground, not respecting AppAttribues::destroy_on_exit.
+ QUIT // Completely quit app; stop running in background
+ };
+
+ // CHECK: Following have to be overwritten by derived classes
+ virtual const AppAttributes& app_get_attributes() = 0;
+ // Could be implemented as:
+ // {return app_attributes;}
+ // where app_attribues is an instance of AppAttributes
+
+ virtual AppReturnValues render(Api *app_api) = 0; // Has to be implemented
+ virtual AppReturnValues btnpressed(Api *app_api, uint gpio, unsigned long delta) {return AppReturnValues::OK;};
+ virtual AppReturnValues bgrefresh(Api *app_api, bool in_foreground) {return AppReturnValues::OK;};
+};