ControllerBox directs electromechanical equipment in restaurants to display information.

Dependencies:   EthernetInterface HTTPClient_KVplus MbedJSONValue SDFileSystem TextLCD mbed-rtos mbed picojson

Committer:
TimWoo
Date:
Sun Dec 07 13:18:27 2014 +0000
Revision:
4:8155d4d6a193
Parent:
3:21c8adb97c8f
Sandboxy state of MotiV ControllerBox.; ; ControllerBox directs electromechanical equipment in restaurants for displaying information.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TimWoo 3:21c8adb97c8f 1 #include "Table.h"
TimWoo 3:21c8adb97c8f 2 #include "Flower.h"
TimWoo 3:21c8adb97c8f 3 #include "Device.h"
TimWoo 3:21c8adb97c8f 4 #include "stdlib.h"
TimWoo 3:21c8adb97c8f 5 #include <vector>
TimWoo 3:21c8adb97c8f 6 //Flower commands
TimWoo 3:21c8adb97c8f 7 // fRESET = 0,
TimWoo 3:21c8adb97c8f 8 // fPETAL_SPD = 1,
TimWoo 3:21c8adb97c8f 9 // fBLINK_SPD = 2,
TimWoo 3:21c8adb97c8f 10 // fBLINK_PERIOD = 3,
TimWoo 3:21c8adb97c8f 11 // fLED_INTENSITY = 4,
TimWoo 3:21c8adb97c8f 12 // fPETAL_POS = 10,
TimWoo 3:21c8adb97c8f 13 // fLED_TABLE_FREE = 20,
TimWoo 3:21c8adb97c8f 14 // fLED_TABLE_RES = 21,
TimWoo 3:21c8adb97c8f 15 // fLED_FOOD = 22,
TimWoo 3:21c8adb97c8f 16 // fLED_DRINK = 23,
TimWoo 3:21c8adb97c8f 17 // fLED_SERVICE = 24,
TimWoo 3:21c8adb97c8f 18 // fLED_CLR = 29,
TimWoo 3:21c8adb97c8f 19 //// Flower version 2 commands n/a for now.
TimWoo 3:21c8adb97c8f 20 //// fPISTIL_SPD = 3,
TimWoo 3:21c8adb97c8f 21 //// fPETAL1_POS = 11,
TimWoo 3:21c8adb97c8f 22 //// fPETAL2_POS = 12,
TimWoo 3:21c8adb97c8f 23 //// fPETAL3_POS = 13,
TimWoo 3:21c8adb97c8f 24 //// fPETAL4_POS = 14,
TimWoo 3:21c8adb97c8f 25 //// fPETAL5_POS = 15,
TimWoo 3:21c8adb97c8f 26 //// fPETAL6_POS = 16,
TimWoo 3:21c8adb97c8f 27 //// fPISTIL_POS_FOOD = 30,
TimWoo 3:21c8adb97c8f 28 //// fPISTIL_POS_DRINKS = 31,
TimWoo 3:21c8adb97c8f 29 //// fPISTIL_POS_SERVICE = 32
TimWoo 3:21c8adb97c8f 30 // fTABLE_FREE = 50,
TimWoo 3:21c8adb97c8f 31 // fTABLE_ACTIVE = 51,
TimWoo 3:21c8adb97c8f 32 // fTABLE_RES = 52,
TimWoo 3:21c8adb97c8f 33 // fTABLE_END = 53,
TimWoo 3:21c8adb97c8f 34 // fFOOD_ORDERED = 54,
TimWoo 3:21c8adb97c8f 35 // fDRINKS_ORDERED = 55,
TimWoo 3:21c8adb97c8f 36 // fSERVICE_REQ = 56,
TimWoo 3:21c8adb97c8f 37 // fPETALS_CLOSE = 60,
TimWoo 3:21c8adb97c8f 38 // fLAMP_ACT = 100,
TimWoo 3:21c8adb97c8f 39 // fDEMO1 = 101,
TimWoo 3:21c8adb97c8f 40 // fDEMO2 = 102
TimWoo 3:21c8adb97c8f 41 //Flower commands v2
TimWoo 3:21c8adb97c8f 42 //Functie Waarde(n) Doel
TimWoo 3:21c8adb97c8f 43 //
TimWoo 3:21c8adb97c8f 44 //Primaire functies
TimWoo 3:21c8adb97c8f 45 //
TimWoo 3:21c8adb97c8f 46 //0* 0 Reset (Zet alle waarden terug naar default)
TimWoo 3:21c8adb97c8f 47 //1* 0 – 100 Zet bewegingssnelheid van de bladeren (0 langzaam, 100 snel)
TimWoo 3:21c8adb97c8f 48 //2 0 – 100 Zet knippersnelheid van de verlichting (in %)
TimWoo 3:21c8adb97c8f 49 //3 0 – 255 Zet knipperlengte van de verlichting (in sec)
TimWoo 3:21c8adb97c8f 50 //4 0 – 100 Zet de lichtintensiteit van de LEDstrip (0 – 100 %)
TimWoo 3:21c8adb97c8f 51 //5 0 – 100 Zet bewegingssnelheid van de stampers (Niet beschikbaar in bloem versie 1)
TimWoo 3:21c8adb97c8f 52 //6 0 – 255 Zet tijd
TimWoo 3:21c8adb97c8f 53 //10* 0 – 100 Zet de positie van de bloembladeren (0 dicht, 100 open)
TimWoo 3:21c8adb97c8f 54 //11 – 18 0 – 100 Zet de positie van (max. 8) individuele bloembladeren (0 dicht, 100 open) (Niet beschikbaar in bloem versie 1)
TimWoo 3:21c8adb97c8f 55 //20* 0 … 1 Zet led “tafel vrij”
TimWoo 3:21c8adb97c8f 56 //21* 0 … 1 Zet led “tafel gereserveerd”
TimWoo 3:21c8adb97c8f 57 //22* 0 … 1 Zet led F(ood)
TimWoo 3:21c8adb97c8f 58 //23* 0 … 1 Zet led D(rink)
TimWoo 3:21c8adb97c8f 59 //24* 0 … 1 Zet led S(ervice)
TimWoo 3:21c8adb97c8f 60 //29 0 … 1 Zet led verlichting (standaard wit)
TimWoo 3:21c8adb97c8f 61 //30 0 – 100 Zet hoogte van stamper F(ood) (Niet beschikbaar in bloem versie 1)
TimWoo 3:21c8adb97c8f 62 //31 0 – 100 Zet hoogte van stamper D(rink) (Niet beschikbaar in bloem versie 1)
TimWoo 3:21c8adb97c8f 63 //32 0 – 100 Zet hoogte van stamper S(ervice) (Niet beschikbaar in bloem versie 1)
TimWoo 3:21c8adb97c8f 64 //Complexe functies
TimWoo 3:21c8adb97c8f 65 //50* 1 Zet bloem naar stand “Tafel vrij” (Gesloten groen)
TimWoo 3:21c8adb97c8f 66 //51* 1 Zet bloem naar stand “Tafel in gebruik” (Open groen)
TimWoo 3:21c8adb97c8f 67 //52* 1 Zet bloem naar stand “Tafel gereserveerd” (Gesloten rood)
TimWoo 3:21c8adb97c8f 68 //53* 1 Zet bloem naar stand “Zittingstijd om” (Open rood)
TimWoo 3:21c8adb97c8f 69 //54* 0 – 100 Zet bloem naar stand “Eten besteld” met x% bestelstatus
TimWoo 3:21c8adb97c8f 70 //55* 0 – 100 Zet bloem naar stand “Drank besteld” met x% bestelstatus
TimWoo 3:21c8adb97c8f 71 //56* 0 – 100 Zet bloem naar stand “Bediening gevraagd” met x% bestelstatus
TimWoo 3:21c8adb97c8f 72 //60 1 Bloem sluit al naar gelang de ingestelde tijd
TimWoo 3:21c8adb97c8f 73 //61 1 Zet bloem naar status “zittingstijd om”. (“Gereserveerd rood knipperen”)
TimWoo 3:21c8adb97c8f 74 //100 1 Lampfunctie (Bloem opent een klein beetje en fungeert als lamp)
TimWoo 3:21c8adb97c8f 75 //101 1 Demostand 1 (Bloem gaat continu open en dicht en alle leds wisselen)
TimWoo 3:21c8adb97c8f 76 //102 0 – 100 Demostand 2 (Bloem opent naar stand X en statusleds wisselen)
TimWoo 3:21c8adb97c8f 77
TimWoo 3:21c8adb97c8f 78 using namespace std;
TimWoo 3:21c8adb97c8f 79
TimWoo 3:21c8adb97c8f 80 Table::Table()
TimWoo 3:21c8adb97c8f 81 : id(0),
TimWoo 3:21c8adb97c8f 82 status(0),
TimWoo 3:21c8adb97c8f 83 fStatus(0),
TimWoo 3:21c8adb97c8f 84 dStatus(0),
TimWoo 3:21c8adb97c8f 85 sStatus(0),
TimWoo 3:21c8adb97c8f 86 statusPrev(0),
TimWoo 3:21c8adb97c8f 87 fStatusPrev(0),
TimWoo 3:21c8adb97c8f 88 dStatusPrev(0),
TimWoo 3:21c8adb97c8f 89 sStatusPrev(0) { printf("Table default constructor\r\n"); }
TimWoo 3:21c8adb97c8f 90
TimWoo 3:21c8adb97c8f 91 Table::Table(int id)
TimWoo 3:21c8adb97c8f 92 : id(id),
TimWoo 3:21c8adb97c8f 93 status(0),
TimWoo 3:21c8adb97c8f 94 fStatus(0),
TimWoo 3:21c8adb97c8f 95 dStatus(0),
TimWoo 3:21c8adb97c8f 96 sStatus(0),
TimWoo 3:21c8adb97c8f 97 statusPrev(0),
TimWoo 3:21c8adb97c8f 98 fStatusPrev(0),
TimWoo 3:21c8adb97c8f 99 dStatusPrev(0),
TimWoo 3:21c8adb97c8f 100 sStatusPrev(0),
TimWoo 3:21c8adb97c8f 101 mFlower(id)
TimWoo 3:21c8adb97c8f 102 {
TimWoo 3:21c8adb97c8f 103 printf("Table constructor override(int id)\r\n");
TimWoo 3:21c8adb97c8f 104 }
TimWoo 3:21c8adb97c8f 105
TimWoo 3:21c8adb97c8f 106 Table::~Table() {}
TimWoo 3:21c8adb97c8f 107
TimWoo 3:21c8adb97c8f 108 Table& Table::operator=(const Table& tbl)
TimWoo 3:21c8adb97c8f 109 {
TimWoo 3:21c8adb97c8f 110 id = tbl.id;
TimWoo 3:21c8adb97c8f 111 status = tbl.status;
TimWoo 3:21c8adb97c8f 112 fStatus = tbl.fStatus;
TimWoo 3:21c8adb97c8f 113 dStatus = tbl.dStatus;
TimWoo 3:21c8adb97c8f 114 sStatus = tbl.sStatus;
TimWoo 3:21c8adb97c8f 115 statusPrev = tbl.statusPrev;
TimWoo 3:21c8adb97c8f 116 fStatusPrev = tbl.fStatusPrev;
TimWoo 3:21c8adb97c8f 117 dStatusPrev = tbl.dStatusPrev;
TimWoo 3:21c8adb97c8f 118 sStatusPrev = tbl.sStatusPrev;
TimWoo 3:21c8adb97c8f 119 return *this;
TimWoo 3:21c8adb97c8f 120 }
TimWoo 3:21c8adb97c8f 121
TimWoo 3:21c8adb97c8f 122 vector<MCommand> Table::update(int dinnerStatus, int foodStatus, int drinkStatus, int serviceStatus)
TimWoo 3:21c8adb97c8f 123 {
TimWoo 3:21c8adb97c8f 124 printf("update table\r\n");
TimWoo 3:21c8adb97c8f 125 //current info is now previous info
TimWoo 3:21c8adb97c8f 126 statusPrev = status;
TimWoo 3:21c8adb97c8f 127 fStatusPrev = fStatus;
TimWoo 3:21c8adb97c8f 128 dStatusPrev = dStatus;
TimWoo 3:21c8adb97c8f 129 sStatusPrev = sStatus;
TimWoo 3:21c8adb97c8f 130
TimWoo 3:21c8adb97c8f 131
TimWoo 3:21c8adb97c8f 132 //new info from API is current info
TimWoo 3:21c8adb97c8f 133 status = dinnerStatus;
TimWoo 3:21c8adb97c8f 134 fStatus = foodStatus;
TimWoo 3:21c8adb97c8f 135 dStatus = drinkStatus;
TimWoo 3:21c8adb97c8f 136 sStatus = serviceStatus;
TimWoo 3:21c8adb97c8f 137
TimWoo 3:21c8adb97c8f 138 printf("dinnerStatus = %d\r\nstatus = %d\r\nstatusPrev = %d\r\n", dinnerStatus, status, statusPrev);
TimWoo 3:21c8adb97c8f 139 //make and "send" the commands to control the devices to the controller
TimWoo 3:21c8adb97c8f 140 return prepareCommands();
TimWoo 3:21c8adb97c8f 141 }
TimWoo 3:21c8adb97c8f 142
TimWoo 3:21c8adb97c8f 143 int Table::getId()
TimWoo 3:21c8adb97c8f 144 {
TimWoo 3:21c8adb97c8f 145 return this->id;
TimWoo 3:21c8adb97c8f 146 }
TimWoo 3:21c8adb97c8f 147
TimWoo 3:21c8adb97c8f 148 vector<MCommand> Table::prepareCommands()
TimWoo 3:21c8adb97c8f 149 {
TimWoo 3:21c8adb97c8f 150 vector<MCommand> commandList;
TimWoo 3:21c8adb97c8f 151 printf("prepareCommands()\r\n");
TimWoo 3:21c8adb97c8f 152 //Decide what commands to retrieve from the flower
TimWoo 3:21c8adb97c8f 153 if(status != statusPrev) { //dinner status has changed since last update
TimWoo 3:21c8adb97c8f 154 if(status == 0) { //Table free
TimWoo 3:21c8adb97c8f 155 printf("status == 0\r\n");
TimWoo 3:21c8adb97c8f 156 commandList.push_back(mFlower.buildCommand(Flower::fPETAL_POS, 0));
TimWoo 3:21c8adb97c8f 157 commandList.push_back(mFlower.buildCommand(Flower::fLED_TABLE_FREE, 1));
TimWoo 3:21c8adb97c8f 158 commandList.push_back(mFlower.buildCommand(Flower::fLED_FOOD, 0));
TimWoo 3:21c8adb97c8f 159 commandList.push_back(mFlower.buildCommand(Flower::fLED_DRINK, 0));
TimWoo 3:21c8adb97c8f 160 commandList.push_back(mFlower.buildCommand(Flower::fLED_SERVICE, 0));
TimWoo 3:21c8adb97c8f 161 } else if(status == 1) { //Table reserved
TimWoo 3:21c8adb97c8f 162 printf("status == 1\r\n");
TimWoo 3:21c8adb97c8f 163 // commandList.push_back(mFlower.buildCommand(Flower::fPETAL_POS, 0));
TimWoo 3:21c8adb97c8f 164 commandList.push_back(mFlower.buildCommand(Flower::fLED_TABLE_RES, 1)); //For now assume that table reserved is only called after table free
TimWoo 3:21c8adb97c8f 165 // MCommand leCmd = mFlower.buildCommand(Flower::fLED_TABLE_RES, 1);
TimWoo 3:21c8adb97c8f 166 printf("Command in prepCommands");
TimWoo 3:21c8adb97c8f 167 // leCmd.print();
TimWoo 3:21c8adb97c8f 168 // vector<MCommand> cmdLst;
TimWoo 3:21c8adb97c8f 169 // cmdLst.push_back(leCmd);
TimWoo 3:21c8adb97c8f 170 printf("pushed_back?\r\n");
TimWoo 3:21c8adb97c8f 171 // std::vector<MCommand>::iterator it = commandList.begin();
TimWoo 3:21c8adb97c8f 172 // printf("leDeux command: ");
TimWoo 3:21c8adb97c8f 173 // it->print();
TimWoo 3:21c8adb97c8f 174 // commandList.push_back(mFlower.buildCommand(Flower::fLED_FOOD, 0));
TimWoo 3:21c8adb97c8f 175 // commandList.push_back(mFlower.buildCommand(Flower::fLED_DRINK, 0));
TimWoo 3:21c8adb97c8f 176 // commandList.push_back(mFlower.buildCommand(Flower::fLED_SERVICE, 0));
TimWoo 3:21c8adb97c8f 177 } else if(status >= 2) { //Table occupied
TimWoo 3:21c8adb97c8f 178 printf("status == 2\r\n");
TimWoo 3:21c8adb97c8f 179 commandList.push_back(mFlower.buildCommand(Flower::fPETAL_POS, 0));
TimWoo 3:21c8adb97c8f 180 commandList.push_back(mFlower.buildCommand(Flower::fLED_CLR, 1));
TimWoo 3:21c8adb97c8f 181 }
TimWoo 3:21c8adb97c8f 182 printf("dinnerStatus commands done\r\n");
TimWoo 3:21c8adb97c8f 183 }
TimWoo 3:21c8adb97c8f 184 if(fStatus != fStatusPrev) {
TimWoo 3:21c8adb97c8f 185 printf("foodStatus commands done\r\n");
TimWoo 3:21c8adb97c8f 186 }
TimWoo 3:21c8adb97c8f 187 if(dStatus != dStatusPrev) {
TimWoo 3:21c8adb97c8f 188 printf("drinksStatus commands done\r\n");
TimWoo 3:21c8adb97c8f 189 }
TimWoo 3:21c8adb97c8f 190 if(sStatus != sStatusPrev) {
TimWoo 3:21c8adb97c8f 191 printf("serviceStatus commands done\r\n");
TimWoo 3:21c8adb97c8f 192 }
TimWoo 3:21c8adb97c8f 193 printf("all commands done\r\n");
TimWoo 3:21c8adb97c8f 194 return commandList;
TimWoo 3:21c8adb97c8f 195 }