Add files via upload

This commit is contained in:
Evgeniy
2025-01-31 23:43:39 +03:00
committed by GitHub
parent c9c5614f56
commit d8978e5242
4 changed files with 175 additions and 0 deletions

84
include/menu.h Normal file
View File

@@ -0,0 +1,84 @@
#pragma once
#define _LCD_TYPE 1
#include <LCD_1602_RUS_ALL.h>
#include <EncButton.h>
#include "pizzas.h"
#include "config.h"
class Menu {
public:
static Menu& getInstance() {
static Menu instance;
return instance;
}
enum Page {
WIFI_CONNECT,
PRELOAD,
PIZZA_SELECT,
DOUGH_SELECT,
SIZE_SELECT,
CONFIRMATION,
PLACING_ORDER,
TRACKING
};
enum TrackingStatus {
UNKNOWN = -1,
PROCESSING,
ACCEPTED,
COOKING,
COURIER_WAIT,
DELIVERY,
FINISHED,
CANCELLED
};
void tick();
void setMenuPage(Page page);
uint8_t getMenuPage() {return menuPage;}
void setTrackingStatus(TrackingStatus status);
void updateIndex();
uint32_t getSelectedPizzaId() {return selectedPizzaId;}
private:
LCD_1602_RUS lcd;
EncButton enc;
void animation();
void scroll(int8_t direction);
void initVariations();
void drawSizes();
void drawSizeSelectUpdate();
void drawTrackingStatus();
void drawPizzaName(char* name);
void drawVariation(Pizzas::Variation var);
void draw();
void drawPrice(uint16_t price);
void drawPriceShort(uint16_t price);
void drawIndex();
void drawDough(Pizzas::Dough dough);
const char* trackingStatusStrings[7] = {
"Обработка",
"Принят",
"Готовится",
"Ожидание курьера",
"Курьер в пути",
"Доставлено",
"Отменён"
};
boolean brbflag;
uint32_t animationTick;
boolean animationState;
Pizzas& pizzas = Pizzas::getInstance();
uint8_t curentPizzaIndex;
Page menuPage;
Pizzas::Dough selectedDough;
Pizzas::Variation pizzaSizes[4];
uint8_t pizzaSizesIndex;
uint32_t selectedPizzaId;
TrackingStatus trackingStatus = UNKNOWN;
Menu();
};

28
include/parser.h Normal file
View File

@@ -0,0 +1,28 @@
#pragma once
#include "JsonHandler.h"
#include "pizzas.h"
#include "menu.h"
class PizzaHandler: public JsonHandler {
public:
virtual void startDocument();
virtual void startArray(ElementPath path);
virtual void startObject(ElementPath path);
virtual void endArray(ElementPath path);
virtual void endObject(ElementPath path);
virtual void endDocument();
virtual void value(ElementPath path, ElementValue value);
virtual void whitespace(char c);
private:
Pizzas& pizzas = Pizzas::getInstance();
Pizzas::Pizza last_pizza;
Pizzas::Variation new_variation;
};

48
include/pizzas.h Normal file
View File

@@ -0,0 +1,48 @@
#pragma once
class Pizzas {
public:
static Pizzas& getInstance() {
static Pizzas instance;
return instance;
}
enum Dough {
THIN = 1,
TRADITIONAL = 3
};
struct Variation {
uint32_t id;
uint16_t price;
Dough dough;
uint8_t size;
};
struct Pizza {
uint16_t id;
char name[100];
uint16_t price;
Variation variations[20];
uint8_t variations_count = 0;
};
Pizza* get_all() {
return pizzas;
}
Pizza get(uint8_t index) {
return pizzas[index];
}
uint8_t get_count() {
return pizzas_count;
}
void add_pizza(Pizza pizza) {
pizzas[pizzas_count] = pizza;
pizzas_count++;
}
private:
Pizzas() {};
Pizza pizzas[100];
uint8_t pizzas_count = 0;
};

15
include/requests.h Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#include <HTTPClient.h>
#include <config.h>
#include <ArduinoStreamParser.h>
class Request {
public:
char* request(const char* method, const char* path);
char* request(const char* method, const char* path, const char* payload);
void request(const char* method, char* path, ArudinoStreamParser& parser);
private:
HTTPClient* _get_client(const char* method, char* path);
char* _get_url(const char* path);
};