Simon Hladek / Mbed 2 deprecated elevator1

Dependencies:   MMA8451Q mbed

Revision:
12:1c7b59097090
Parent:
11:95e4e04a7dd2
Child:
13:e3089b058fab
diff -r 95e4e04a7dd2 -r 1c7b59097090 model.cpp
--- a/model.cpp	Sun Dec 18 13:52:01 2016 +0000
+++ b/model.cpp	Mon Dec 19 17:47:06 2016 +0000
@@ -2,13 +2,12 @@
 int pom=0;
 DigitalOut cervena(LED1);
 DigitalOut zelena(LED2);
-Model::Model(Serial *pci)
+Model::Model(Serial *pci):communication(pci)
 {
-
-
+        sendDataOk=false;
     cmd= new Commands();
     pc=pci;
-    pc->baud(57600);
+//    pc->baud(57600);
     cmd->MotorDown[0]=0x2;
     cmd->MotorDown[1]=0xff;
     cmd->MotorDown[2]=0xff;
@@ -21,141 +20,132 @@
     cmd->MotorUp[4]=0x14;
     cmd->MotorStop[0]=0x1;
     cmd->Lock[0]=0x00;
-    watchDog[0]=0x01;
-    sendDataOk = true;
+//    watchDog[0]=0x01;
+//    pc->attach(this,&Model::SerialCallBack,Serial::RxIrq);
+//    tc.attach(this,&Model::TickerCallBack,1);
+    //odosle packet na reset watchDogu-u vzdy pri vytvoreni objektu
 //    sendPacket(0xa0,0xfe,0x0, watchDog,1);
-//     sendPacket(0xa0,0xf,0x0, cmd->Lock,1);
-    watchDog[0]=0x2;
-    DataIn= new char[6]();
+//    watchDog[0]=0x02;
+//    DataIn= new char[6]();
     cmd->LedOn[0]=0x01;
     cmd->LedOff[0]=0x00;
     cmd->ArrowDown[0]=0x02;
     cmd->ArrowUp[0]=0x01;
-    mapPoschodie.insert(pair<string, bool>("p1",false));
-    mapPoschodie.insert(pair<string, bool>("p2",false));
-    mapPoschodie.insert(pair<string, bool>("p3",false));
-    mapPoschodie.insert(pair<string, bool>("p4",false));
-    mapPoschodie.insert(pair<string, bool>("p0",false));
-    poschodie=4;
+//    mapPoschodie.insert(pair<string, bool>("p1",false));
+//    mapPoschodie.insert(pair<string, bool>("p2",false));
+//    mapPoschodie.insert(pair<string, bool>("p3",false));
+//    mapPoschodie.insert(pair<string, bool>("p4",false));
+//    mapPoschodie.insert(pair<string, bool>("p0",false));
+//    poschodie=4;
     direction=0;
     p4=1;
     p3=1;
     p2=1;
     p1=1;
     p0=1;
-    pc->attach(this,&Model::SerialCallBack,Serial::RxIrq);
-//    tc.attach(this,&Model::TickerCallBack,1);
-}
+
 
-void Model::SerialCallBack()
-{
-//   pom++;
-//    if(pom==1) {
-//        zelena=0;
-//        cervena=0;
+NVIC_SetPriority(LPTimer_IRQn, 255);
+}
+//
+//void Model::SerialCallBack()
+//{
+//
+//    startByteIn=pc->getc();
+//    targetAdd=pc->getc();
+//    sourceAdd=pc->getc();
+//    DataLength=pc->getc();
+//    for (unsigned int i=0; i< DataLength; i++) {
+//        DataIn[i]=pc->getc();
+//    }
+//    CrcIn=pc->getc();
+//
+//    switch( sourceAdd) {
+//        case 0xc4:
+//        case 0xb4:
+//            if(poschodie!=4)
+//                mapPoschodie.find("p4")->second=true;
+//            break;
+//        case 0xb3:
+//        case 0xc3:
+//            if(poschodie!=3)
+//                mapPoschodie.find("p3")->second=true;
+//            break;
+//        case 0xb2:
+//        case 0xc2:
+//            if(poschodie!=2)
+//                mapPoschodie.find("p2")->second=true;
+//            break;
+//        case 0xb1:
+//        case 0xc1:
+//            if(poschodie!=1)
+//                mapPoschodie.find("p1")->second=true;
+//            break;
+//        case 0xb0:
+//        case 0xc0:
+//            if(poschodie!=0)
+//                mapPoschodie.find("p0")->second=true;
+//            break;
+//        default:
+//            ;
+//    }
+//    //osetrenie ACK
+//    if(sourceAdd==0x00)
+//        sendDataOk=false;
+//////        zelena=0;
+//////        cervena=0;
+////    }
+//}
+//void Model::TickerCallBack()
+//{
+//    sendPacket(0xa0,0xfe,0x00, watchDog,1);
+//    pom++;
+//    if (pom==1) {
+//        zelena =0;
+//        cervena=1;
 //    } else {
 //        zelena=1;
-//        cervena=1;
+//        cervena=0;
 //        pom=0;
 //    }
-    startByteIn=pc->getc();
-    targetAdd=pc->getc();
-    sourceAdd=pc->getc();
-    DataLength=pc->getc();
-    for (unsigned int i=0; i< DataLength; i++) {
-        DataIn[i]=pc->getc();
-    }
-    CrcIn=pc->getc();
-    
-    switch( sourceAdd) {
-        case 0xc4:
-        case 0xb4:
-        if(poschodie!=4)
-            mapPoschodie.find("p4")->second=true;
-            break;
-        case 0xb3:
-        case 0xc3:
-            if(poschodie!=3)
-            mapPoschodie.find("p3")->second=true;
-            break;
-        case 0xb2:
-        case 0xc2:
-            if(poschodie!=2)
-            mapPoschodie.find("p2")->second=true;
-            break;
-        case 0xb1:
-        case 0xc1:
-            if(poschodie!=1)
-            mapPoschodie.find("p1")->second=true;
-            break;
-        case 0xb0:
-        case 0xc0:
-            if(poschodie!=0)
-            mapPoschodie.find("p0")->second=true;
-            break;
-        default:
-            ;
-    }
-//    if(startByteIn==0xa0&&targetAdd==0x00&&sourceAdd==0x00&&DataLength==0x00) {
-//        sendDataOk=false;
-//        zelena=0;
-//        cervena=0;
+//
+//}
+//
+//char Model::crcCalc(char targetAddr, char senderAddr, char *data,int DataSize)
+//{
+//    int dataLenght = DataSize;
+//    char crc = 0x00;
+//    crc = crcArray[crc^targetAddr];
+//    crc = crcArray[crc^senderAddr];
+//    for(int i = 0 ; i < dataLenght ; i++) {
+//        crc = crcArray[crc^data[i]];
 //    }
-
-}
-void Model::TickerCallBack()
-{
-//    sendPacket(0xa0,0xfe,0x00, watchDog,1);
-    pom++;
-    if (pom==1) {
-        zelena =0;
-//        cervena=1;
-    } else {
-        zelena=1;
-//        cervena=0;
-        pom=0;
-    }
-
-}
-
-char Model::crcCalc(char targetAddr, char senderAddr, char *data,int DataSize)
-{
-    int dataLenght = DataSize;
-    char crc = 0x00;
-    crc = crcArray[crc^targetAddr];
-    crc = crcArray[crc^senderAddr];
-    for(int i = 0 ; i < dataLenght ; i++) {
-        crc = crcArray[crc^data[i]];
-    }
-    return crc;
-}
-void Model::sendPacket(char startByte,char target,char source,char *data,int DataSize)
-{
+//    return crc;
+//}
+//void Model::sendPacket(char startByte,char target,char source,char *data,int DataSize)
+//{
 //    sendDataOk=true;
-    //packet format : || start byte: a0 | reciever adress - 1B | sender adress - 1B | data lenght - 1B | data - 0-265B | crc8 - 1B ||
-//   do{
-
-//    cervena=1;
-    int dataLenght = DataSize;
-    char crc8 = crcCalc(target, source, data,dataLenght);
-    pc->putc(startByte);
-    pc->putc(target);
-    pc->putc(source);
-    pc->putc(dataLenght);
-    for (int i = 0 ; i < dataLenght ; i++) {
-        pc->putc(data[i]);
-    }
-    pc->putc(crc8);
-
+//    int cnt=0;
+//    while(sendDataOk){
+//        cnt++;
+//        if(cnt==5){sendDataOk=false;cnt=0;}
+//    //packet format : || start byte: a0 | reciever adress - 1B | sender adress - 1B | data lenght - 1B | data - 0-265B | crc8 - 1B ||
+//    int dataLenght = DataSize;
+//    char crc8 = crcCalc(target, source, data,dataLenght);
+//    pc->putc(startByte);
+//    pc->putc(target);
+//    pc->putc(source);
+//    pc->putc(dataLenght);
+//    for (int i = 0 ; i < dataLenght ; i++) {
+//        pc->putc(data[i]);
+//    }
+//    pc->putc(crc8);
 //    wait(0.003);
-
-//    } while(sendDataOk);
-//    zelena=1;
-
-}
+//    }
+//}
 void Model::doSomething(char data)
 {
-
+data=getSourceAdd();
     switch(data) {
         case 0xe4:
             p4=1;
@@ -195,7 +185,6 @@
                     break;
                 default:
                     ;
-
             }
             if( mapPoschodie.find("p3")->second==true) {
                 mapPoschodie.find("p3")->second=false;
@@ -222,8 +211,6 @@
                     ;
 
             }
-
-
             if( mapPoschodie.find("p2")->second==true) {
                 mapPoschodie.find("p2")->second=false;
                 sendPacket(0xa0,0x12,0x00,cmd->LedOff,1);
@@ -258,6 +245,7 @@
                 tmOut2.attach(this,&Model::DoorUnlock,3);
             }
             break;
+        
         case 0xe0:
             poschodie=0;
             p0=1;
@@ -290,60 +278,58 @@
         sendPacket(0xa0,0x14,0x00,cmd->LedOn,1);
         sendPacket(0xa0,0x24,0x00,cmd->LedOn,1);
         if(direction==0) { //chod nahor
-            if(poschodie<4) {
+            if(poschodie<4)
                 upMotor();
-            }
+
         }
     } else if( mapPoschodie.find("p3")->second==true&&p3==true) {
         p3=false;
         sendPacket(0xa0,0x13,0x00,cmd->LedOn,1);
         sendPacket(0xa0,0x23,0x00,cmd->LedOn,1);
         if(direction==0) {
-            if(poschodie<3) {
+            if(poschodie<3)
                 upMotor();
-            } else {
+            else
                 downMotor();
-            }
+
         }
     } else if( mapPoschodie.find("p2")->second==true&&p2==true) {
         p2=false;
         sendPacket(0xa0,0x12,0x00,cmd->LedOn,1);
         sendPacket(0xa0,0x22,0x00,cmd->LedOn,1);
         if(direction==0) {
-            if(poschodie<2) {
+            if(poschodie<2)
                 upMotor();
-            } else {
+            else
                 downMotor();
-            }
+
         }
     } else if( mapPoschodie.find("p1")->second==true&&p1==true) {
         p1=false;
         sendPacket(0xa0,0x11,0x00,cmd->LedOn,1);
         sendPacket(0xa0,0x21,0x00,cmd->LedOn,1);
         if(direction==0) {
-            if(poschodie<1) {
+            if(poschodie<1)
                 upMotor();
-            } else {
+            else
                 downMotor();
-            }
 
         }
     } else if( mapPoschodie.find("p0")->second==true&&p0==1) {
         p0=0;
         sendPacket(0xa0,0x10,0x00,cmd->LedOn,1);
         sendPacket(0xa0,0x20,0x00,cmd->LedOn,1);
-//         if(mapPoschodie.find("p4")->second==false || mapPoschodie.find("p3")->second==false/* || mapPoschodie.find("p2")->second==false|| mapPoschodie.find("p1")->second==false  */) {
         if(direction==0)
             downMotor();
     }
 }
 void Model::setDoorStatus(bool mValue)
 {
-    if(mValue==true) {
+    if(mValue==true)
         cmd->Lock[0]=0x01;//Lock door
-    } else {
+    else
         cmd->Lock[0]=0x00;//;Unlock door
-    }
+
     sendPacket(0xa0,0xf0,0x0, cmd->Lock,1);
 }
 void Model::DoorUnlock()
@@ -386,7 +372,6 @@
             }
             break;
         case 2:
-            //
             if(mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
                 downMotor();
             } else if(mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
@@ -394,7 +379,6 @@
             }
             break;
         case 1:
-
             if(mapPoschodie.find("p0")->second==true) {
                 downMotor();
             } else if(mapPoschodie.find("p2")->second==true||mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {