2025-11-02 17:55:41 +00:00
|
|
|
|
#ifndef MAIN_H
|
|
|
|
|
|
#define MAIN_H
|
|
|
|
|
|
|
2025-11-05 19:16:26 +00:00
|
|
|
|
#include <Arduino.h>
|
2025-11-08 17:11:02 +00:00
|
|
|
|
#include <vector>
|
2025-11-02 17:55:41 +00:00
|
|
|
|
#include <lvgl.h>
|
|
|
|
|
|
#include <TFT_eSPI.h>
|
|
|
|
|
|
#include <XPT2046_Touchscreen.h>
|
|
|
|
|
|
#include <SPI.h>
|
|
|
|
|
|
#include <ui.h>
|
|
|
|
|
|
#include <WiFi.h>
|
|
|
|
|
|
#include <PicoMQTT.h>
|
2025-11-05 19:16:26 +00:00
|
|
|
|
#include <SPIFFS.h>
|
2025-11-08 17:11:02 +00:00
|
|
|
|
#include <WebServer.h>
|
2025-11-22 12:07:12 +00:00
|
|
|
|
#include <HTTPClient.h>
|
2025-11-02 17:55:41 +00:00
|
|
|
|
#include "vars.h"
|
|
|
|
|
|
#include "actions.h"
|
|
|
|
|
|
|
2025-11-08 17:11:02 +00:00
|
|
|
|
|
2025-11-02 17:55:41 +00:00
|
|
|
|
#define IBVS_BADGE 1
|
|
|
|
|
|
#define IBVS_PROCESSOR 2
|
2025-11-08 17:11:02 +00:00
|
|
|
|
#define START_SCREEN_WAIT (4 * 200) // First number is the time in seconds
|
|
|
|
|
|
#define NUM_OF_BADGES (10 + (10*8)) // First and second number have to be equal and is the number of badges
|
2025-11-02 17:55:41 +00:00
|
|
|
|
|
2025-11-09 21:26:16 +00:00
|
|
|
|
// 0 = off
|
|
|
|
|
|
// 1 = level-1 (verbose) – prints ONLY level-1 messages
|
|
|
|
|
|
// 2 = level-2 (normal) – prints level-2 AND (because level-2 “contains” level-1) also level-1
|
|
|
|
|
|
#define DBG_LEVEL 1 // change at build-time
|
|
|
|
|
|
#define DBG_L1(fmt, ...) do { if (DBG_LEVEL >= 1) Serial.printf(fmt, ##__VA_ARGS__); } while (0)
|
|
|
|
|
|
#define DBG_L2(fmt, ...) do { if (DBG_LEVEL >= 2) Serial.printf(fmt, ##__VA_ARGS__); } while (0)
|
|
|
|
|
|
|
2025-11-05 19:16:26 +00:00
|
|
|
|
|
2025-11-02 17:55:41 +00:00
|
|
|
|
// Struct objects for main data
|
|
|
|
|
|
struct ShortText {
|
|
|
|
|
|
char text[20];
|
|
|
|
|
|
int w;
|
|
|
|
|
|
int h;
|
|
|
|
|
|
};
|
|
|
|
|
|
struct LongText {
|
2025-11-10 21:53:16 +00:00
|
|
|
|
char text[40];
|
2025-11-02 17:55:41 +00:00
|
|
|
|
int w;
|
|
|
|
|
|
int h;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
extern bool screenNeedsUpdate;
|
|
|
|
|
|
extern char current_screen;
|
2025-11-02 20:26:47 +00:00
|
|
|
|
extern int ibvs_mode;
|
2025-11-02 17:55:41 +00:00
|
|
|
|
|
|
|
|
|
|
// Funcion declarations
|
|
|
|
|
|
void serial_config();
|
2025-11-05 19:16:26 +00:00
|
|
|
|
bool connect_wifi();
|
2025-11-02 17:55:41 +00:00
|
|
|
|
void mqtt_subs();
|
|
|
|
|
|
void mqtt_send_result(char result);
|
|
|
|
|
|
void Winner_Screen();
|
2025-11-05 19:16:26 +00:00
|
|
|
|
void badge_registration();
|
2025-11-02 17:55:41 +00:00
|
|
|
|
void log_print(lv_log_level_t level, const char * buf);
|
|
|
|
|
|
void touchscreen_read(lv_indev_t * indev, lv_indev_data_t * data);
|
|
|
|
|
|
void screen_manager(void *pvParameters);
|
|
|
|
|
|
void mqtt_manager(void *pvParameters);
|
2025-11-05 19:16:26 +00:00
|
|
|
|
bool load_image(const char* filename);
|
2025-11-09 21:26:16 +00:00
|
|
|
|
void handleImageUpload();
|
|
|
|
|
|
void handleUploadComplete();
|
2025-11-10 21:53:16 +00:00
|
|
|
|
void update_voting(char load);
|
|
|
|
|
|
void voting_setup();
|
|
|
|
|
|
bool ask_input(const char* prompt, const char* item_name, char* output, size_t output_size);
|
|
|
|
|
|
char get_winner();
|
2025-11-22 12:07:12 +00:00
|
|
|
|
void upload_results_http(const char* server_url);
|
2025-11-02 17:55:41 +00:00
|
|
|
|
|
|
|
|
|
|
#endif
|