Simon Hladek / Mbed 2 deprecated elevator1

Dependencies:   MMA8451Q mbed

Committer:
skirmish
Date:
Mon Dec 19 18:54:01 2016 +0000
Revision:
13:e3089b058fab
Parent:
12:1c7b59097090
Child:
14:19e36b53e76a
version 0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skirmish 0:41e22e385908 1 #include "model.h"
skirmish 13:e3089b058fab 2
skirmish 12:1c7b59097090 3 Model::Model(Serial *pci):communication(pci)
skirmish 7:9521d6ae3747 4 {
skirmish 13:e3089b058fab 5
skirmish 10:dc94bacfccc6 6 cmd= new Commands();
skirmish 8:96c852630824 7 cmd->MotorDown[0]=0x2;
skirmish 8:96c852630824 8 cmd->MotorDown[1]=0xff;
skirmish 8:96c852630824 9 cmd->MotorDown[2]=0xff;
skirmish 8:96c852630824 10 cmd->MotorDown[3]=0xff;
skirmish 8:96c852630824 11 cmd->MotorDown[4]=0xfb;
skirmish 8:96c852630824 12 cmd->MotorUp[0]=0x2;
skirmish 8:96c852630824 13 cmd->MotorUp[1]=0x00;
skirmish 8:96c852630824 14 cmd->MotorUp[2]=0x00;
skirmish 8:96c852630824 15 cmd->MotorUp[3]=0x00;
skirmish 8:96c852630824 16 cmd->MotorUp[4]=0x14;
skirmish 8:96c852630824 17 cmd->MotorStop[0]=0x1;
skirmish 9:97b26dcd1035 18 cmd->Lock[0]=0x00;
skirmish 8:96c852630824 19 cmd->LedOn[0]=0x01;
skirmish 8:96c852630824 20 cmd->LedOff[0]=0x00;
skirmish 8:96c852630824 21 cmd->ArrowDown[0]=0x02;
skirmish 8:96c852630824 22 cmd->ArrowUp[0]=0x01;
skirmish 8:96c852630824 23 direction=0;
skirmish 13:e3089b058fab 24 p4=1; p3=1; p2=1; p1=1; p0=1;
skirmish 9:97b26dcd1035 25
skirmish 12:1c7b59097090 26 NVIC_SetPriority(LPTimer_IRQn, 255);
skirmish 12:1c7b59097090 27 }
skirmish 13:e3089b058fab 28
skirmish 13:e3089b058fab 29 void Model::doSomething()
skirmish 1:998a963e2ead 30 {
skirmish 13:e3089b058fab 31 switch(getSourceAdd()) {
skirmish 9:97b26dcd1035 32 case 0xe4:
skirmish 9:97b26dcd1035 33 p4=1;
skirmish 9:97b26dcd1035 34 poschodie=4;
skirmish 9:97b26dcd1035 35 cmd->ArrowDown[1]=0x34;
skirmish 9:97b26dcd1035 36 cmd->ArrowUp[1]=0x34;
skirmish 9:97b26dcd1035 37 switch(direction) {
skirmish 9:97b26dcd1035 38 case -1:
skirmish 9:97b26dcd1035 39 sendPacket(0xa0,0x30,0x00,cmd->ArrowDown,2);
skirmish 9:97b26dcd1035 40 break;
skirmish 9:97b26dcd1035 41 case 1:
skirmish 9:97b26dcd1035 42 sendPacket(0xa0,0x30,0x00,cmd->ArrowUp,2);
skirmish 9:97b26dcd1035 43 break;
skirmish 9:97b26dcd1035 44 default:
skirmish 9:97b26dcd1035 45 ;
skirmish 9:97b26dcd1035 46 }
skirmish 9:97b26dcd1035 47 if( mapPoschodie.find("p4")->second==true) {
skirmish 9:97b26dcd1035 48 mapPoschodie.find("p4")->second=false;
skirmish 9:97b26dcd1035 49 sendPacket(0xa0,0x24,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 50 sendPacket(0xa0,0x14,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 51 stopMotor();
skirmish 9:97b26dcd1035 52 tmOut.attach(this,&Model::TimeOutCallBack,4);
skirmish 9:97b26dcd1035 53 tmOut2.attach(this,&Model::DoorUnlock,3);
skirmish 9:97b26dcd1035 54 };
skirmish 9:97b26dcd1035 55 break;
skirmish 9:97b26dcd1035 56 case 0xe3:
skirmish 9:97b26dcd1035 57 p3=1;
skirmish 9:97b26dcd1035 58 poschodie=3;
skirmish 9:97b26dcd1035 59 cmd->ArrowDown[1]=0x33;
skirmish 9:97b26dcd1035 60 cmd->ArrowUp[1]=0x33;
skirmish 9:97b26dcd1035 61 switch(direction) {
skirmish 9:97b26dcd1035 62 case -1:
skirmish 9:97b26dcd1035 63 sendPacket(0xa0,0x30,0x00,cmd->ArrowDown,2);
skirmish 9:97b26dcd1035 64 break;
skirmish 9:97b26dcd1035 65 case 1:
skirmish 9:97b26dcd1035 66 sendPacket(0xa0,0x30,0x00,cmd->ArrowUp,2);
skirmish 9:97b26dcd1035 67 break;
skirmish 9:97b26dcd1035 68 default:
skirmish 9:97b26dcd1035 69 ;
skirmish 9:97b26dcd1035 70 }
skirmish 9:97b26dcd1035 71 if( mapPoschodie.find("p3")->second==true) {
skirmish 9:97b26dcd1035 72 mapPoschodie.find("p3")->second=false;
skirmish 9:97b26dcd1035 73 sendPacket(0xa0,0x13,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 74 sendPacket(0xa0,0x23,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 75 stopMotor();
skirmish 9:97b26dcd1035 76 tmOut.attach(this,&Model::TimeOutCallBack,4);
skirmish 9:97b26dcd1035 77 tmOut2.attach(this,&Model::DoorUnlock,3);
skirmish 9:97b26dcd1035 78 }
skirmish 9:97b26dcd1035 79 break;
skirmish 9:97b26dcd1035 80 case 0xe2:
skirmish 9:97b26dcd1035 81 poschodie=2;
skirmish 9:97b26dcd1035 82 p2=1;
skirmish 9:97b26dcd1035 83 cmd->ArrowDown[1]=0x32;
skirmish 9:97b26dcd1035 84 cmd->ArrowUp[1]=0x32;
skirmish 9:97b26dcd1035 85 switch(direction) {
skirmish 9:97b26dcd1035 86 case -1:
skirmish 9:97b26dcd1035 87 sendPacket(0xa0,0x30,0x00,cmd->ArrowDown,2);
skirmish 9:97b26dcd1035 88 break;
skirmish 9:97b26dcd1035 89 case 1:
skirmish 9:97b26dcd1035 90 sendPacket(0xa0,0x30,0x00,cmd->ArrowUp,2);
skirmish 9:97b26dcd1035 91 break;
skirmish 9:97b26dcd1035 92 default:
skirmish 9:97b26dcd1035 93 ;
skirmish 9:97b26dcd1035 94
skirmish 9:97b26dcd1035 95 }
skirmish 9:97b26dcd1035 96 if( mapPoschodie.find("p2")->second==true) {
skirmish 9:97b26dcd1035 97 mapPoschodie.find("p2")->second=false;
skirmish 9:97b26dcd1035 98 sendPacket(0xa0,0x12,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 99 sendPacket(0xa0,0x22,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 100 stopMotor();
skirmish 9:97b26dcd1035 101 tmOut.attach(this,&Model::TimeOutCallBack,4);
skirmish 9:97b26dcd1035 102 tmOut2.attach(this,&Model::DoorUnlock,3);
skirmish 9:97b26dcd1035 103
skirmish 9:97b26dcd1035 104 }
skirmish 9:97b26dcd1035 105 break;
skirmish 9:97b26dcd1035 106 case 0xe1:
skirmish 9:97b26dcd1035 107 poschodie=1;
skirmish 9:97b26dcd1035 108 cmd->ArrowDown[1]=0x31;
skirmish 9:97b26dcd1035 109 cmd->ArrowUp[1]=0x31;
skirmish 9:97b26dcd1035 110 p1=1;
skirmish 9:97b26dcd1035 111 switch(direction) {
skirmish 9:97b26dcd1035 112 case -1:
skirmish 9:97b26dcd1035 113 sendPacket(0xa0,0x30,0x00,cmd->ArrowDown,2);
skirmish 9:97b26dcd1035 114 break;
skirmish 9:97b26dcd1035 115 case 1:
skirmish 9:97b26dcd1035 116 sendPacket(0xa0,0x30,0x00,cmd->ArrowUp,2);
skirmish 9:97b26dcd1035 117 break;
skirmish 9:97b26dcd1035 118 default:
skirmish 9:97b26dcd1035 119 ;
skirmish 9:97b26dcd1035 120 }
skirmish 9:97b26dcd1035 121 if( mapPoschodie.find("p1")->second==true) {
skirmish 9:97b26dcd1035 122 mapPoschodie.find("p1")->second=false;
skirmish 9:97b26dcd1035 123 sendPacket(0xa0,0x11,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 124 sendPacket(0xa0,0x21,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 125 stopMotor();
skirmish 9:97b26dcd1035 126 tmOut.attach(this,&Model::TimeOutCallBack,4);
skirmish 9:97b26dcd1035 127 tmOut2.attach(this,&Model::DoorUnlock,3);
skirmish 9:97b26dcd1035 128 }
skirmish 9:97b26dcd1035 129 break;
skirmish 12:1c7b59097090 130
skirmish 9:97b26dcd1035 131 case 0xe0:
skirmish 9:97b26dcd1035 132 poschodie=0;
skirmish 9:97b26dcd1035 133 p0=1;
skirmish 9:97b26dcd1035 134 cmd->ArrowDown[1]=0x50;
skirmish 9:97b26dcd1035 135 cmd->ArrowUp[1]=0x50;
skirmish 9:97b26dcd1035 136 switch(direction) {
skirmish 9:97b26dcd1035 137 case -1:
skirmish 9:97b26dcd1035 138 sendPacket(0xa0,0x30,0x00,cmd->ArrowDown,2);
skirmish 9:97b26dcd1035 139 break;
skirmish 9:97b26dcd1035 140 case 1:
skirmish 9:97b26dcd1035 141 sendPacket(0xa0,0x30,0x00,cmd->ArrowUp,2);
skirmish 9:97b26dcd1035 142 break;
skirmish 9:97b26dcd1035 143 default:
skirmish 9:97b26dcd1035 144 ;
skirmish 9:97b26dcd1035 145 }
skirmish 9:97b26dcd1035 146 if( mapPoschodie.find("p0")->second==true) {
skirmish 9:97b26dcd1035 147 mapPoschodie.find("p0")->second=false;
skirmish 9:97b26dcd1035 148 sendPacket(0xa0,0x10,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 149 sendPacket(0xa0,0x20,0x00,cmd->LedOff,1);
skirmish 9:97b26dcd1035 150 stopMotor();
skirmish 9:97b26dcd1035 151 tmOut.attach(this,&Model::TimeOutCallBack,4);
skirmish 9:97b26dcd1035 152 tmOut2.attach(this,&Model::DoorUnlock,3);
skirmish 9:97b26dcd1035 153 }
skirmish 9:97b26dcd1035 154 break;
skirmish 9:97b26dcd1035 155 default:
skirmish 9:97b26dcd1035 156 ;
skirmish 9:97b26dcd1035 157 }
skirmish 7:9521d6ae3747 158 if( mapPoschodie.find("p4")->second==true&&p4==true) {
skirmish 7:9521d6ae3747 159 p4=false;
skirmish 7:9521d6ae3747 160 sendPacket(0xa0,0x14,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 161 sendPacket(0xa0,0x24,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 162 if(direction==0) { //chod nahor
skirmish 12:1c7b59097090 163 if(poschodie<4)
skirmish 8:96c852630824 164 upMotor();
skirmish 12:1c7b59097090 165
skirmish 7:9521d6ae3747 166 }
skirmish 9:97b26dcd1035 167 } else if( mapPoschodie.find("p3")->second==true&&p3==true) {
skirmish 7:9521d6ae3747 168 p3=false;
skirmish 7:9521d6ae3747 169 sendPacket(0xa0,0x13,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 170 sendPacket(0xa0,0x23,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 171 if(direction==0) {
skirmish 12:1c7b59097090 172 if(poschodie<3)
skirmish 7:9521d6ae3747 173 upMotor();
skirmish 12:1c7b59097090 174 else
skirmish 7:9521d6ae3747 175 downMotor();
skirmish 12:1c7b59097090 176
skirmish 7:9521d6ae3747 177 }
skirmish 9:97b26dcd1035 178 } else if( mapPoschodie.find("p2")->second==true&&p2==true) {
skirmish 7:9521d6ae3747 179 p2=false;
skirmish 7:9521d6ae3747 180 sendPacket(0xa0,0x12,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 181 sendPacket(0xa0,0x22,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 182 if(direction==0) {
skirmish 12:1c7b59097090 183 if(poschodie<2)
skirmish 7:9521d6ae3747 184 upMotor();
skirmish 12:1c7b59097090 185 else
skirmish 7:9521d6ae3747 186 downMotor();
skirmish 12:1c7b59097090 187
skirmish 7:9521d6ae3747 188 }
skirmish 9:97b26dcd1035 189 } else if( mapPoschodie.find("p1")->second==true&&p1==true) {
skirmish 7:9521d6ae3747 190 p1=false;
skirmish 7:9521d6ae3747 191 sendPacket(0xa0,0x11,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 192 sendPacket(0xa0,0x21,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 193 if(direction==0) {
skirmish 12:1c7b59097090 194 if(poschodie<1)
skirmish 7:9521d6ae3747 195 upMotor();
skirmish 12:1c7b59097090 196 else
skirmish 7:9521d6ae3747 197 downMotor();
skirmish 9:97b26dcd1035 198
skirmish 7:9521d6ae3747 199 }
skirmish 9:97b26dcd1035 200 } else if( mapPoschodie.find("p0")->second==true&&p0==1) {
skirmish 7:9521d6ae3747 201 p0=0;
skirmish 7:9521d6ae3747 202 sendPacket(0xa0,0x10,0x00,cmd->LedOn,1);
skirmish 7:9521d6ae3747 203 sendPacket(0xa0,0x20,0x00,cmd->LedOn,1);
skirmish 9:97b26dcd1035 204 if(direction==0)
skirmish 9:97b26dcd1035 205 downMotor();
skirmish 7:9521d6ae3747 206 }
skirmish 3:9ee509852c9a 207 }
skirmish 2:3cb49ae40d02 208 void Model::setDoorStatus(bool mValue)
skirmish 2:3cb49ae40d02 209 {
skirmish 12:1c7b59097090 210 if(mValue==true)
skirmish 9:97b26dcd1035 211 cmd->Lock[0]=0x01;//Lock door
skirmish 12:1c7b59097090 212 else
skirmish 9:97b26dcd1035 213 cmd->Lock[0]=0x00;//;Unlock door
skirmish 12:1c7b59097090 214
skirmish 2:3cb49ae40d02 215 sendPacket(0xa0,0xf0,0x0, cmd->Lock,1);
skirmish 2:3cb49ae40d02 216 }
skirmish 9:97b26dcd1035 217 void Model::DoorUnlock()
skirmish 9:97b26dcd1035 218 {
skirmish 9:97b26dcd1035 219 cmd->Lock[0]=0x00;//;Unlock door
skirmish 9:97b26dcd1035 220 sendPacket(0xa0,0xf0,0x0, cmd->Lock,1);
skirmish 9:97b26dcd1035 221 }
skirmish 5:8ab8a587e609 222 void Model::stopMotor()
skirmish 5:8ab8a587e609 223 {
skirmish 5:8ab8a587e609 224 direction=0;
skirmish 5:8ab8a587e609 225 sendPacket(0xa0,0xf1,0x00,cmd->MotorStop,1);
skirmish 9:97b26dcd1035 226
skirmish 9:97b26dcd1035 227
skirmish 9:97b26dcd1035 228 }
skirmish 5:8ab8a587e609 229 void Model::downMotor()
skirmish 5:8ab8a587e609 230 {
skirmish 5:8ab8a587e609 231 direction=-1;
skirmish 5:8ab8a587e609 232 sendPacket(0xa0,0xf1,0x00,cmd->MotorDown,5);
skirmish 9:97b26dcd1035 233 setDoorStatus(1);
skirmish 9:97b26dcd1035 234 }
skirmish 5:8ab8a587e609 235 void Model::upMotor()
skirmish 5:8ab8a587e609 236 {
skirmish 5:8ab8a587e609 237 direction=1;
skirmish 5:8ab8a587e609 238 sendPacket(0xa0,0xf1,0x00,cmd->MotorUp,5);
skirmish 9:97b26dcd1035 239 setDoorStatus(1);
skirmish 9:97b26dcd1035 240 }
skirmish 9:97b26dcd1035 241 void Model::TimeOutCallBack()
skirmish 9:97b26dcd1035 242 {
skirmish 9:97b26dcd1035 243 switch(poschodie) {
skirmish 9:97b26dcd1035 244 case 4:
skirmish 9:97b26dcd1035 245 if(mapPoschodie.find("p3")->second==true||mapPoschodie.find("p2")->second==true||mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
skirmish 9:97b26dcd1035 246 downMotor();
skirmish 9:97b26dcd1035 247 }
skirmish 9:97b26dcd1035 248 break;
skirmish 9:97b26dcd1035 249 case 3:
skirmish 9:97b26dcd1035 250 if(mapPoschodie.find("p2")->second==true||mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
skirmish 9:97b26dcd1035 251 downMotor();
skirmish 9:97b26dcd1035 252 } else if(mapPoschodie.find("p4")->second==true) {
skirmish 9:97b26dcd1035 253 upMotor();
skirmish 9:97b26dcd1035 254 }
skirmish 9:97b26dcd1035 255 break;
skirmish 9:97b26dcd1035 256 case 2:
skirmish 9:97b26dcd1035 257 if(mapPoschodie.find("p1")->second==true||mapPoschodie.find("p0")->second==true) {
skirmish 9:97b26dcd1035 258 downMotor();
skirmish 9:97b26dcd1035 259 } else if(mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
skirmish 9:97b26dcd1035 260 upMotor();
skirmish 9:97b26dcd1035 261 }
skirmish 9:97b26dcd1035 262 break;
skirmish 9:97b26dcd1035 263 case 1:
skirmish 9:97b26dcd1035 264 if(mapPoschodie.find("p0")->second==true) {
skirmish 9:97b26dcd1035 265 downMotor();
skirmish 9:97b26dcd1035 266 } else if(mapPoschodie.find("p2")->second==true||mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
skirmish 9:97b26dcd1035 267 upMotor();
skirmish 9:97b26dcd1035 268 }
skirmish 9:97b26dcd1035 269 break;
skirmish 9:97b26dcd1035 270 case 0:
skirmish 9:97b26dcd1035 271 if(mapPoschodie.find("p1")->second==true||mapPoschodie.find("p2")->second==true||mapPoschodie.find("p3")->second==true||mapPoschodie.find("p4")->second==true) {
skirmish 9:97b26dcd1035 272 upMotor();
skirmish 9:97b26dcd1035 273 }
skirmish 9:97b26dcd1035 274 break;
skirmish 9:97b26dcd1035 275 default:
skirmish 9:97b26dcd1035 276 ;
skirmish 9:97b26dcd1035 277 }
skirmish 9:97b26dcd1035 278
skirmish 9:97b26dcd1035 279 }
skirmish 13:e3089b058fab 280