add screen library
This commit is contained in:
@ -0,0 +1,34 @@
|
||||
#include <gui/mainview_screen/MainViewView.hpp>
|
||||
#include <gui/mainview_screen/MainViewPresenter.hpp>
|
||||
|
||||
MainViewPresenter::MainViewPresenter(MainViewView& v)
|
||||
: view(v)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MainViewPresenter::activate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MainViewPresenter::deactivate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MainViewPresenter::notifyModeChanged(std::string newMode){
|
||||
view.setModeSignal(newMode);
|
||||
}
|
||||
|
||||
void MainViewPresenter::notifyFreqChanged(std::string newFreq){
|
||||
view.setFreqSignal(newFreq);
|
||||
}
|
||||
|
||||
void MainViewPresenter::notifyDivTimChanged(std::string newDivTim){
|
||||
view.setLabelDivTime(newDivTim);
|
||||
}
|
||||
|
||||
void MainViewPresenter::notifyDrawGraph(uint16_t * values, uint16_t maxSize, float xScale /* = 1 */){
|
||||
view.drawGraph(values, maxSize, xScale);
|
||||
};
|
@ -0,0 +1,75 @@
|
||||
#include <cassert>
|
||||
#include "gui/mainview_screen/MainViewView.hpp"
|
||||
#include "app/gui.h"
|
||||
|
||||
MainViewView* MainViewView::_instance = nullptr;
|
||||
|
||||
MainViewView::MainViewView()
|
||||
{
|
||||
assert(!_instance);
|
||||
if(_instance==nullptr){
|
||||
_instance = this;
|
||||
}
|
||||
}
|
||||
|
||||
MainViewView* MainViewView::getInstance() {
|
||||
return _instance;
|
||||
}
|
||||
|
||||
void MainViewView::setupScreen()
|
||||
{
|
||||
MainViewViewBase::setupScreen();
|
||||
}
|
||||
|
||||
void MainViewView::tearDownScreen()
|
||||
{
|
||||
MainViewViewBase::tearDownScreen();
|
||||
}
|
||||
|
||||
void MainViewView::onBtnPlusPressed(){
|
||||
oscilloscope::Gui::getInstance()->onButtonTimePlusPressed();
|
||||
}
|
||||
|
||||
void MainViewView::onBtnMinusPressed(){
|
||||
oscilloscope::Gui::getInstance()->onButtonTimeMinusPressed();
|
||||
}
|
||||
|
||||
void MainViewView::onCheckBoxTriggerPressed(){
|
||||
|
||||
// Get actual state of the trigger checkbox by reading the status of the red LED
|
||||
const bool checked = !redLedDisable.isVisible();
|
||||
// Notify GUI
|
||||
oscilloscope::Gui::getInstance()->onCheckBoxTriggerCheckState(checked);
|
||||
}
|
||||
|
||||
void MainViewView::setModeSignal(const std::string str){
|
||||
Unicode::fromUTF8((const unsigned char *)str.c_str(),labelSignalBuffer1,LABELSIGNALBUFFER1_SIZE);
|
||||
labelSignal.invalidate();
|
||||
}
|
||||
|
||||
void MainViewView::setFreqSignal(const std::string str){
|
||||
Unicode::fromUTF8((const unsigned char *)str.c_str(),labelSignalBuffer2,LABELSIGNALBUFFER2_SIZE);
|
||||
labelSignal.invalidate();
|
||||
}
|
||||
|
||||
void MainViewView::setLabelDivTime(const std::string str){
|
||||
Unicode::fromUTF8((const unsigned char *)str.c_str(),labelDivTimeBuffer,LABELDIVTIME_SIZE);
|
||||
labelDivTime.invalidate();
|
||||
}
|
||||
|
||||
void MainViewView::drawGraph(uint16_t* values, uint16_t maxSize, float xScale /* = 1 */){
|
||||
chart.clear();
|
||||
|
||||
chartMajorXAxisGrid.setInterval(460/8); // Show 8 division on the chart
|
||||
|
||||
chart.setGraphRangeX(0, 460-1);
|
||||
|
||||
for(float addedPoints = 0, valuesIndex = 0;
|
||||
(uint32_t)valuesIndex < maxSize and addedPoints < 460;
|
||||
addedPoints++)
|
||||
{
|
||||
chart.addDataPoint(values[(uint32_t)valuesIndex]);
|
||||
valuesIndex = addedPoints * xScale;
|
||||
}
|
||||
chart.invalidate();
|
||||
}
|
Reference in New Issue
Block a user