ControllerBox directs electromechanical equipment in restaurants to display information.
Dependencies: EthernetInterface HTTPClient_KVplus MbedJSONValue SDFileSystem TextLCD mbed-rtos mbed picojson
libMotiv/Table.cpp@3:21c8adb97c8f, 2014-12-04 (annotated)
- Committer:
- TimWoo
- Date:
- Thu Dec 04 22:26:30 2014 +0000
- Revision:
- 3:21c8adb97c8f
Still sandboxing, but more inside the classes.; ; command building by Device and thus Flower works; updating table works; commandList basics now done;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |