Simon Hladek / Mbed 2 deprecated elevator1

Dependencies:   MMA8451Q mbed

Revision:
2:3cb49ae40d02
Parent:
1:998a963e2ead
Child:
3:9ee509852c9a
--- a/model.cpp	Wed Dec 07 22:17:39 2016 +0000
+++ b/model.cpp	Fri Dec 09 21:45:17 2016 +0000
@@ -31,71 +31,152 @@
 }
 void Model::doSomething(char data)
 {
-
     switch(data) {
+        case 0xb4:
         case 0xc4:
-            mapPoschodie.find("p4")->second=true;
-            if(poschodie<(0xc3-0xc0+1)) { //chod nahor
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,sizeof(cmd->MotorUp));
+            if( mapPoschodie.find("p4")->second==false) {
+                mapPoschodie.find("p4")->second=true;
+                if(poschodie<4) { //chod nahor
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                    sendPacket(0xa0,0x14,0x00,cmd->LedOn,1);
+                    sendPacket(0xa0,0x24,0x00,cmd->LedOn,1);
+                }
+            }
+            break;
+        case 0xb3:
+        case 0xc3://tlacidlo vonkajsie 3. poschodie
+            if( mapPoschodie.find("p3")->second==false) {
+                sendPacket(0xa0,0x13,0x00,cmd->LedOn,1);
+                sendPacket(0xa0,0x23,0x00,cmd->LedOn,1);
+                mapPoschodie.find("p3")->second=true;
+                if(poschodie<3) { //chod nahor
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                } else
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
             }
             break;
-        case 0xc3://tlacidlo vonkajsie 3. poschodie
-            mapPoschodie.find("p3")->second=true;
-            if(poschodie<(0xc2-0xc0+1)) { //chod nahor
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,sizeof(cmd->MotorUp));
-            } else
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,sizeof(cmd->MotorDown));
-            break;
+        case 0xb2:
         case 0xc2://tlacidlo vonkajsie 2. poschodie
-            mapPoschodie.find("p2")->second=true;
-            if(poschodie<(0xc1-0xc0+1)) { //chod nahor
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,sizeof(cmd->MotorUp));
-            } else
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,sizeof(cmd->MotorDown));
+            if( mapPoschodie.find("p2")->second==false) {
+                sendPacket(0xa0,0x12,0x00,cmd->LedOn,1);
+                sendPacket(0xa0,0x22,0x00,cmd->LedOn,1);
+                mapPoschodie.find("p2")->second=true;
+                if(poschodie<2) { //chod nahor
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                } else
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+            }
             break;
+        case 0xb1:
         case 0xc1://tlacidlo vonkajsie 1. poschodie
-            mapPoschodie.find("p1")->second=true;
-            if(poschodie<(0xc0-0xc0+1)) { //chod nahor
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,sizeof(cmd->MotorUp));
-            } else
-                sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,sizeof(cmd->MotorDown));
+            if( mapPoschodie.find("p1")->second==false) {
+                sendPacket(0xa0,0x11,0x00,cmd->LedOn,1);
+                sendPacket(0xa0,0x21,0x00,cmd->LedOn,1);
+                mapPoschodie.find("p1")->second=true;
+                if(poschodie<1) { //chod nahor
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                } else
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+            }
             break;
         case 0xc0://tlacidlo vonkajsie prizemie
-            mapPoschodie.find("p0")->second=true;
-            sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,sizeof(cmd->MotorDown));
+            if( mapPoschodie.find("p0")->second==false) {
+                sendPacket(0xa0,0x10,0x00,cmd->LedOn,1);
+                sendPacket(0xa0,0x20,0x00,cmd->LedOn,1);
+                mapPoschodie.find("p0")->second=true;
+                sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+            }
+            break;
+        case 0xe4:
+            poschodie=4;
+            if( mapPoschodie.find("p4")->second==true) {
+                mapPoschodie.find("p4")->second=false;
+                sendPacket(0xa0,0x24,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0x14,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0x14,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0xf1,0x00,cmd->MotorStop,1);
+                wait(3);
+                if(mapPoschodie.find("p3")->second==true||mapPoschodie.find("p2")->second==true||mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+                }
+            }
             break;
         case 0xe3:
             poschodie=3;
             if( mapPoschodie.find("p3")->second==true) {
                 mapPoschodie.find("p3")->second=false;
+                sendPacket(0xa0,0x13,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0x23,0x00,cmd->LedOff,1);
                 sendPacket(0xa0,0xf1,0x00,cmd->MotorStop,1);
+                wait(3);
+                if(mapPoschodie.find("p2")->second==true||mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+                } else if(mapPoschodie.find("p4")->second==true) {
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                }
             }
             break;
         case 0xe2:
             poschodie=2;
             if( mapPoschodie.find("p2")->second==true) {
                 mapPoschodie.find("p2")->second=false;
+                sendPacket(0xa0,0x12,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0x22,0x00,cmd->LedOff,1);
                 sendPacket(0xa0,0xf1,0x00,cmd->MotorStop,1);
+                wait(3);
+                if(mapPoschodie.find("p2")->second==true||mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+                } else if(mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
+
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                }
             }
+
             break;
         case 0xe1:
             poschodie=1;
             if( mapPoschodie.find("p1")->second==true) {
                 mapPoschodie.find("p1")->second=false;
+                sendPacket(0xa0,0x11,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0x21,0x00,cmd->LedOff,1);
                 sendPacket(0xa0,0xf1,0x00,cmd->MotorStop,1);
+                wait(3);
+                if(mapPoschodie.find("p0")->second==true) {
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
+                } else if(mapPoschodie.find("p2")->second==true||mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                }
             }
             break;
         case 0xe0:
             poschodie=0;
             if( mapPoschodie.find("p0")->second==true) {
                 mapPoschodie.find("p0")->second=false;
+                sendPacket(0xa0,0x10,0x00,cmd->LedOff,1);
+                sendPacket(0xa0,0x20,0x00,cmd->LedOff,1);
                 sendPacket(0xa0,0xf1,0x00,cmd->MotorStop,1);
             }
+             else if(mapPoschodie.find("p1")->second==true||mapPoschodie.find("p2")->second==true||mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
+
+                    sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
+                }
             break;
         default:
+            ;
+
 
     }
 }
+void Model::setDoorStatus(bool mValue)
+{
+    if(mValue==true) {
+        cmd->Lock[1]=0x01;//Lock door
+    } else {
+        cmd->Lock[1]=0x00;//;Unlock door
+    }
+    sendPacket(0xa0,0xf0,0x0, cmd->Lock,1);
+}
+
 unsigned char Model::crcArray[]= {
     0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
     157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,