Simon Hladek / Mbed 2 deprecated elevator1

Dependencies:   MMA8451Q mbed

Committer:
skirmish
Date:
Tue Dec 20 09:03:13 2016 +0000
Revision:
14:19e36b53e76a
Parent:
13:e3089b058fab
finally

Who changed what in which revision?

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