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
|
||||
dashboard::panel::panel* PANELS[] = {
|
||||
new dashboard::panel::weather(),
|
||||
new dashboard::panel::wifi(),
|
||||
};
|
||||
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[] = {
|
||||
"bmp_24.png",
|
||||
"sky.png",
|
||||
"wifi_background.jpg",
|
||||
};
|
||||
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/weather.hpp"
|
||||
#include "panel/def_overlay.hpp"
|
||||
#include "panel/wifi.hpp"
|
||||
extern dashboard::panel::panel* PANELS[];
|
||||
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