1
0

add screen library

This commit is contained in:
2024-01-13 19:15:18 +01:00
parent 7b660f0fe2
commit 65ff5de90f
533 changed files with 113575 additions and 2 deletions

View File

@ -0,0 +1,24 @@
#ifndef FRONTENDAPPLICATION_HPP
#define FRONTENDAPPLICATION_HPP
#include <gui_generated/common/FrontendApplicationBase.hpp>
class FrontendHeap;
using namespace touchgfx;
class FrontendApplication : public FrontendApplicationBase
{
public:
FrontendApplication(Model& m, FrontendHeap& heap);
virtual ~FrontendApplication() { }
virtual void handleTickEvent()
{
model.tick();
FrontendApplicationBase::handleTickEvent();
}
private:
};
#endif // FRONTENDAPPLICATION_HPP

View File

@ -0,0 +1,74 @@
#ifndef FRONTENDHEAP_HPP
#define FRONTENDHEAP_HPP
#include <gui_generated/common/FrontendHeapBase.hpp>
class FrontendHeap : public FrontendHeapBase
{
public:
/* List any user-defined view types here*/
typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type
touchgfx::meta::Nil //List must always end with meta::Nil !
> UserDefinedViewTypes;
/* List any user-defined presenter types here*/
typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type
touchgfx::meta::Nil //List must always end with meta::Nil !
> UserDefinedPresenterTypes;
/* List any user-defined transition types here*/
typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type
touchgfx::meta::Nil //List must always end with meta::Nil !
> UserDefinedTransitionTypes;
/* Calculate largest view, both from generated and user-defined typelists */
typedef touchgfx::meta::select_type_maxsize< UserDefinedViewTypes >::type MaxUserViewType;
typedef touchgfx::meta::TypeList< MaxGeneratedViewType,
touchgfx::meta::TypeList< MaxUserViewType,
touchgfx::meta::Nil
> > CombinedViewTypes;
typedef touchgfx::meta::select_type_maxsize< CombinedViewTypes >::type MaxViewType;
/* Calculate largest presenter, both from generated and user-defined typelists */
typedef touchgfx::meta::select_type_maxsize< UserDefinedPresenterTypes >::type MaxUserPresenterType;
typedef touchgfx::meta::TypeList< MaxGeneratedPresenterType,
touchgfx::meta::TypeList< MaxUserPresenterType,
touchgfx::meta::Nil
> > CombinedPresenterTypes;
typedef touchgfx::meta::select_type_maxsize< CombinedPresenterTypes >::type MaxPresenterType;
/* Calculate largest transition, both from generated and user-defined typelists */
typedef touchgfx::meta::select_type_maxsize< UserDefinedTransitionTypes >::type MaxUserTransitionType;
typedef touchgfx::meta::TypeList< MaxGeneratedTransitionType,
touchgfx::meta::TypeList< MaxUserTransitionType,
touchgfx::meta::Nil
> > CombinedTransitionTypes;
typedef touchgfx::meta::select_type_maxsize< CombinedTransitionTypes >::type MaxTransitionType;
static FrontendHeap& getInstance()
{
static FrontendHeap instance;
return instance;
}
touchgfx::Partition< CombinedPresenterTypes, 1 > presenters;
touchgfx::Partition< CombinedViewTypes, 1 > views;
touchgfx::Partition< CombinedTransitionTypes, 1 > transitions;
Model model;
FrontendApplication app;
private:
FrontendHeap() : FrontendHeapBase(presenters, views, transitions, app),
app(model, *this)
{
gotoStartScreen(app);
}
};
#endif // FRONTENDHEAP_HPP

View File

@ -0,0 +1,42 @@
#ifndef MAINVIEWPRESENTER_HPP
#define MAINVIEWPRESENTER_HPP
#include <gui/model/ModelListener.hpp>
#include <mvp/Presenter.hpp>
using namespace touchgfx;
class MainViewView;
class MainViewPresenter : public touchgfx::Presenter, public ModelListener
{
public:
MainViewPresenter(MainViewView& v);
/**
* The activate function is called automatically when this screen is "switched in"
* (ie. made active). Initialization logic can be placed here.
*/
virtual void activate();
/**
* The deactivate function is called automatically when this screen is "switched out"
* (ie. made inactive). Teardown functionality can be placed here.
*/
virtual void deactivate();
virtual ~MainViewPresenter() {};
void notifyModeChanged(std::string newMode) override;
void notifyFreqChanged(std::string newFreq) override;
void notifyDivTimChanged(std::string newDivTim) override;
void notifyDrawGraph(uint16_t* values, uint16_t maxSize, float xScale = 1) override;
private:
MainViewPresenter();
MainViewView& view;
};
#endif // MAINVIEWPRESENTER_HPP

View File

@ -0,0 +1,34 @@
#ifndef MAINVIEWVIEW_HPP
#define MAINVIEWVIEW_HPP
#include <gui_generated/mainview_screen/MainViewViewBase.hpp>
#include <gui/mainview_screen/MainViewPresenter.hpp>
#include <string>
class MainViewView : public MainViewViewBase
{
public:
MainViewView();
virtual ~MainViewView() {}
virtual void setupScreen();
virtual void tearDownScreen();
static MainViewView* getInstance();
void onBtnPlusPressed() override;
void onBtnMinusPressed() override;
void onCheckBoxTriggerPressed() override;
void setModeSignal(const std::string str);
void setFreqSignal(const std::string str);
void setLabelDivTime(const std::string str);
void drawGraph(uint16_t * values, uint16_t maxSize, float xScale = 1);
protected:
/*
* Singleton
*/
static MainViewView* _instance;
};
#endif // MAINVIEWVIEW_HPP

View File

@ -0,0 +1,61 @@
#ifndef MODEL_HPP
#define MODEL_HPP
#include <string>
#include "touchgfx-config.h"
#if (TOUCHGFX_FREERTOS != 0)
#include "FreeRTOS.h"
#include "queue.h"
#endif // TOUCHGFX_FREERTOS
class ModelListener;
#if (TOUCHGFX_FREERTOS != 0)
enum GUI_EVENT{
UNDEFINED=0,
FREQUENCY_EVENT,
MODE_EVENT,
DIVTIM_EVENT,
GRAPH_EVENT
};
#endif // TOUCHGFX_FREERTOS
class Model
{
public:
Model();
static Model* getInstance();
void bind(ModelListener* listener)
{
modelListener = listener;
}
void tick();
void setModeSignal(const std::string str);
void setFreqSignal(const std::string str);
void setDivTimLabel(const std::string str);
void setGraphPoints(uint16_t * values, uint16_t maxSize, float xScale = 1);
protected:
ModelListener* modelListener;
static Model* _instance;
std::string textMode;
std::string textFreq;
std::string textDivTim;
uint16_t* values; ///< Pointer to signal data.
uint16_t maxSize; ///< Maximum size of 'values' array.
float xScale; ///< X axis scaling factor.
#if (TOUCHGFX_BAREMETAL != 0)
bool flagMode;
bool flagDivTim;
bool flagFreq;
bool flagGraph;
#endif // TOUCHGFX_BAREMETAL
#if (TOUCHGFX_FREERTOS != 0)
xQueueHandle gui_msg_q;
#endif // TOUCHGFX_FREERTOS
};
#endif // MODEL_HPP

View File

@ -0,0 +1,26 @@
#ifndef MODELLISTENER_HPP
#define MODELLISTENER_HPP
#include <gui/model/Model.hpp>
class ModelListener
{
public:
ModelListener() : model(0) {}
virtual ~ModelListener() {}
void bind(Model* m)
{
model = m;
}
virtual void notifyModeChanged(std::string newMode){};
virtual void notifyFreqChanged(std::string newFreq){};
virtual void notifyDivTimChanged(std::string newDivTim){};
virtual void notifyDrawGraph(uint16_t * values, uint16_t maxSize, float xScale = 1){};
protected:
Model* model;
};
#endif // MODELLISTENER_HPP