Add boilerplate for wifi panel
This commit is contained in:
parent
59284f3655
commit
d98b7764e2
BIN
img/square.png
BIN
img/square.png
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
BIN
img/wifi_background.jpg
Executable file
BIN
img/wifi_background.jpg
Executable file
Binary file not shown.
After Width: | Height: | Size: 558 KiB |
@ -10,6 +10,7 @@
|
|||||||
// A list of all panels to be displayed, in order
|
// A list of all panels to be displayed, in order
|
||||||
dashboard::panel::panel* PANELS[] = {
|
dashboard::panel::panel* PANELS[] = {
|
||||||
new dashboard::panel::weather(),
|
new dashboard::panel::weather(),
|
||||||
|
new dashboard::panel::wifi(),
|
||||||
};
|
};
|
||||||
size_t PANELS_LENGTH = sizeof(PANELS)/sizeof(PANELS[0]);
|
size_t PANELS_LENGTH = sizeof(PANELS)/sizeof(PANELS[0]);
|
||||||
|
|
||||||
@ -22,6 +23,7 @@ dashboard::panel::panel* OVERLAY = new dashboard::panel::def_overlay();
|
|||||||
const char* IMAGE_LOCATIONS[] = {
|
const char* IMAGE_LOCATIONS[] = {
|
||||||
"bmp_24.png",
|
"bmp_24.png",
|
||||||
"sky.png",
|
"sky.png",
|
||||||
|
"wifi_background.jpg",
|
||||||
};
|
};
|
||||||
size_t IMAGE_LOCATIONS_LENGTH = sizeof(IMAGE_LOCATIONS)/sizeof(IMAGE_LOCATIONS[0]);
|
size_t IMAGE_LOCATIONS_LENGTH = sizeof(IMAGE_LOCATIONS)/sizeof(IMAGE_LOCATIONS[0]);
|
||||||
|
|
||||||
|
@ -77,6 +77,7 @@ constexpr int IMG_FLAGS = 0
|
|||||||
#include "panel/panel.hpp"
|
#include "panel/panel.hpp"
|
||||||
#include "panel/weather.hpp"
|
#include "panel/weather.hpp"
|
||||||
#include "panel/def_overlay.hpp"
|
#include "panel/def_overlay.hpp"
|
||||||
|
#include "panel/wifi.hpp"
|
||||||
extern dashboard::panel::panel* PANELS[];
|
extern dashboard::panel::panel* PANELS[];
|
||||||
extern size_t PANELS_LENGTH;
|
extern size_t PANELS_LENGTH;
|
||||||
|
|
||||||
|
93
src/panel/wifi.cpp
Normal file
93
src/panel/wifi.cpp
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Tyler Perkins
|
||||||
|
// 21-12-21
|
||||||
|
// wifi panel
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "wifi.hpp"
|
||||||
|
#include "wifi_config.hpp"
|
||||||
|
|
||||||
|
using namespace dashboard::panel;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constructors ///////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
wifi::wifi(){
|
||||||
|
std::cerr << "WIFI CONSTRUCTOR\n";
|
||||||
|
_texture = nullptr;
|
||||||
|
_time_on_screen = WIFI_DEFAULT_TIME_ON_SCREEN;
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi::~wifi(){
|
||||||
|
std::cerr << "WIFI DECONSTRUCTOR\n";
|
||||||
|
if(_texture != nullptr)
|
||||||
|
SDL_DestroyTexture(_texture);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Draw function //////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void wifi::draw(){
|
||||||
|
//create the texture if this is the first time running draw
|
||||||
|
if(_texture == nullptr){
|
||||||
|
initTexture();
|
||||||
|
update();
|
||||||
|
update_texture();
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_RenderCopy(board::getRenderer(), _texture, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Helper functions ///////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Update the information of wifi
|
||||||
|
// This DOES NOT update the display
|
||||||
|
void wifi::update() {
|
||||||
|
//this shows static info on the wifi network, which does need to change
|
||||||
|
//therefore, no update
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Update the texture that is being
|
||||||
|
// displayed. Due to the nature of what
|
||||||
|
// is being displayed, this will only
|
||||||
|
// ever be called once, as the wifi
|
||||||
|
// info doesnt change
|
||||||
|
void wifi::update_texture(){
|
||||||
|
std::cerr << "WIFI::UPDATE_TEXTURE\n";
|
||||||
|
SDL_Rect tgt;
|
||||||
|
|
||||||
|
SDL_SetRenderTarget(board::getRenderer(), _texture);
|
||||||
|
SDL_RenderClear(board::getRenderer());
|
||||||
|
|
||||||
|
//place background image
|
||||||
|
SDL_RenderCopy(board::getRenderer(),
|
||||||
|
board::getImage("wifi_background.jpg"), NULL, NULL);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SDL_SetRenderTarget(board::getRenderer(), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Lazy load the texture object
|
||||||
|
// This is to make sure that all of SDL
|
||||||
|
// is init before we attempt to draw anything
|
||||||
|
void wifi::initTexture(){
|
||||||
|
std::cerr << "WIFI INIT TEXTURE\n";
|
||||||
|
if(_texture == nullptr){
|
||||||
|
_texture = SDL_CreateTexture(board::getRenderer(),
|
||||||
|
SDL_PIXELFORMAT_RGBA8888,
|
||||||
|
SDL_TEXTUREACCESS_TARGET,
|
||||||
|
SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||||
|
|
||||||
|
SDL_SetTextureBlendMode(_texture, SDL_BLENDMODE_BLEND);
|
||||||
|
}
|
||||||
|
}
|
31
src/panel/wifi.hpp
Normal file
31
src/panel/wifi.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Tyler Perkins
|
||||||
|
// 21-12-21
|
||||||
|
// Wifi panel
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "panel.hpp"
|
||||||
|
|
||||||
|
#include <SDL.h>
|
||||||
|
#include <SDL2/SDL_image.h>
|
||||||
|
#include <SDL2/SDL_ttf.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace dashboard::panel {
|
||||||
|
class wifi : public panel {
|
||||||
|
public:
|
||||||
|
wifi();
|
||||||
|
~wifi();
|
||||||
|
|
||||||
|
void draw();
|
||||||
|
private:
|
||||||
|
void update();
|
||||||
|
void update_texture();
|
||||||
|
void initTexture();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "../board.hpp"
|
17
src/panel/wifi_config.hpp
Normal file
17
src/panel/wifi_config.hpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Tyler Perkins
|
||||||
|
// 21-12-21
|
||||||
|
// def overlay configuration
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace dashboard::panel {
|
||||||
|
//Default time the slid is shown on the screen, in ms
|
||||||
|
//Default 15s
|
||||||
|
constexpr size_t WIFI_DEFAULT_TIME_ON_SCREEN = 15000;
|
||||||
|
|
||||||
|
//How long should we wait between updates? in ms
|
||||||
|
//Due to the nature of this panel, this value is ignored
|
||||||
|
constexpr size_t WIFI_UPDATE_INTERVAL = 60000;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user