From d8978e5242dec32982a5d4e01c5125debf7cdc43 Mon Sep 17 00:00:00 2001 From: Evgeniy <38162408+y0zhyck@users.noreply.github.com> Date: Fri, 31 Jan 2025 23:43:39 +0300 Subject: [PATCH] Add files via upload --- include/menu.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++ include/parser.h | 28 ++++++++++++++++ include/pizzas.h | 48 ++++++++++++++++++++++++++ include/requests.h | 15 +++++++++ 4 files changed, 175 insertions(+) create mode 100644 include/menu.h create mode 100644 include/parser.h create mode 100644 include/pizzas.h create mode 100644 include/requests.h diff --git a/include/menu.h b/include/menu.h new file mode 100644 index 0000000..c0a2bc1 --- /dev/null +++ b/include/menu.h @@ -0,0 +1,84 @@ +#pragma once +#define _LCD_TYPE 1 +#include +#include + +#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(); + +}; diff --git a/include/parser.h b/include/parser.h new file mode 100644 index 0000000..5d08792 --- /dev/null +++ b/include/parser.h @@ -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; +}; \ No newline at end of file diff --git a/include/pizzas.h b/include/pizzas.h new file mode 100644 index 0000000..8eb3bdd --- /dev/null +++ b/include/pizzas.h @@ -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; +}; \ No newline at end of file diff --git a/include/requests.h b/include/requests.h new file mode 100644 index 0000000..5ddb9e7 --- /dev/null +++ b/include/requests.h @@ -0,0 +1,15 @@ +#pragma once +#include +#include +#include + +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); +}; +