Dependencies:   mbed TSI

Revision:
0:62c18ef61b61
Child:
1:7dea46c9d8dc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ovladanie.cpp	Wed Jan 23 23:43:20 2019 +0000
@@ -0,0 +1,136 @@
+/** 
+*   @file ovladanie.cpp 
+*   @brief Súbor obsahuje funkcie ktoré odosielajú údaje simulátoru
+*   @author Benedikt Kicin
+*   @date 21.1.2018
+*/
+
+#include "komunikacia.h"
+
+/**
+* Funkcia ktorá riadi pohyb výťahu, ktorý buď zastaví alebo sa pohybuje horea a nadol
+* @param command - parameter podľa ktorého sa zadáva aký typ pohybu má výťah vykonať
+*/
+void motor(int command) //0-stop, 1 - hore, 2-dole, 3-pocet pohybov
+{
+    switch(command) {
+        case 0: {//stop elevator
+            int packet0[]= {0xA0,0xf1,0x00,0x01,0x01};  //doska; rychlost motoru; vytah; velkost dat; data
+            sendTo(packet0);
+            break;
+        }
+        case 1: {//up move of elevator
+            int packet1[]= {0xA0,0xf1,0x00,0x05,0x02,0x00,0x00,0x00,0x64};  //data rychlost 100 hore
+            sendTo(packet1);
+            break;
+        }
+        case 2: {//down move of elevator
+            int packet2[]= {0xA0,0xf1,0x00,0x05,0x02,0xFF,0xFF,0xFF,0x9C};  //data rychlost 100 dole
+            sendTo(packet2);
+            break;
+        }
+        case 3: { //pocet spusteni motora
+            int packet3[]= {0xA0,0xf1,0x00,0x01,0x03};
+            sendTo(packet3);
+            break;
+        }
+    }
+}
+
+/**
+* Funkcia ktorá riadi zamykanie výťahu
+* @param command - parameter podľa ktorého sa kabínka 
+*        odomkne - 0, zamkne - 1, pošle aktuálny stav -2
+*/
+void kabinkaLock(int command)
+{
+    switch(command) {
+        case 0: {//Unlock the door
+            int packet0[]= {0xA0,0xf0,0x00,0x01,0x00};  //doska; vytah
+            sendTo(packet0);
+            break;
+        }
+        case 1: {//Lock the door
+            int packet1[]= {0xA0,0xf0,0x00,0x01,0x01};
+            sendTo(packet1);
+            break;
+        }
+        default : { //send status
+            int packet1[]= {0xA0,0xf0,0x00,0x01,0x02};
+            sendTo(packet1);
+            break;
+        }
+    }
+}
+
+/**
+* Funkcia ktorá rozsviecuje a zhasína LED indikátory tlačidiel v simulátore
+* @param floor   - parameter ktorý vyjadruje na akom poschodí sa má LED rozsvietiť/zhasnúť
+* @param command - riadi či sa LED zhasne - 0 alebo rozsvieti - 1
+*/
+void ledButton(int floor, int command) //(0x21,1)
+{
+    //int pom = floor%0x10; //mod16
+    if(command == 0) { //offLed
+        int packet0[]= {0xA0,floor,0x00,0x01,0x00}; //vypni
+        sendTo(packet0);
+    } else {
+        int packet0[]= {0xA0,floor,0x00,0x01,0x01}; //inak zapni
+        sendTo(packet0);
+    }
+}
+
+/**
+* Funkcia ktorá vykresľuje na displej výťahu kde sa výťah nachádza a ktorým smerom sa pohybuje
+* @param floor   - parameter ktorý vyjadruje na akom poschodí sa výťah nachádza
+* @param command - riadi aký sa má indikovať smer pohybu nahor - 1 alebo nadol - 2
+*/
+void LCDdisp(int floor,int command)
+{
+    int addr = 0x30;
+    int data0;
+    if(command == 1) {//up arrow
+        data0 = 0x01;
+    } else if (command == 2) { //down arrow
+        data0= 0x02;
+    } else data0= 0x03;
+    switch(floor) {
+        case 0: {// P floor
+            int packet0[]= {0xA0,addr,0x00,0x02,data0,0x50};
+            sendTo(packet0);
+            break;
+        }
+        case 1: {// 1st floor
+            int packet0[]= {0xA0,addr,0x00,0x02,data0,0x31};
+            sendTo(packet0);
+            break;
+        }
+        case 2: {// 2nd floor
+            int packet0[]= {0xA0,addr,0x00,0x02,data0,0x32};
+            sendTo(packet0);
+            break;
+        }
+        case 3: {// 3rd floor
+            int packet0[]= {0xA0,addr,0x00,0x02,data0,0x33};
+            sendTo(packet0);
+            break;
+        }
+        case 4: {// 4th floor
+            int packet0[]= {0xA0,addr,0x00,0x02,data0,0x34};
+            sendTo(packet0);
+            break;
+        }
+    }
+}
+
+/**
+* Funkcia ktorá inicializuje uvodnné nastavenie LED tlačidiel výťahu
+*/
+void ledReset()
+{
+    for (int j=0x10; j<0x15; j++) {
+        ledButton(j, 0);
+        int k=j+0x10;
+        ledButton(k, 0);
+    }
+}
\ No newline at end of file