Jasmine Karlsson
/
train_rail
New project
Train.cpp@31:9d973398554f, 2018-06-28 (annotated)
- Committer:
- jasminealice
- Date:
- Thu Jun 28 15:08:41 2018 +0000
- Revision:
- 31:9d973398554f
- Parent:
- 28:1430685f4d12
Fiiinal!!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jasminealice | 18:f5824ba95892 | 1 | #include "Train.h" |
jasminealice | 18:f5824ba95892 | 2 | |
jasminealice | 28:1430685f4d12 | 3 | Train::Train(const unsigned int newaddress, const unsigned int newinst, int pos, const unsigned int speed, const unsigned int speed2): normSpeed(speed), slowSpeed(speed2) |
jasminealice | 18:f5824ba95892 | 4 | { |
jasminealice | 18:f5824ba95892 | 5 | //ctor |
jasminealice | 18:f5824ba95892 | 6 | address = newaddress; |
jasminealice | 20:32ba0a5f2d02 | 7 | inst = newinst; |
jasminealice | 21:31647d80614f | 8 | position = pos; |
jasminealice | 21:31647d80614f | 9 | dirClockwise = false; |
jasminealice | 21:31647d80614f | 10 | nrPacket = 20; |
KwamsC | 24:418711ed8c52 | 11 | isStopped = false; |
jasminealice | 28:1430685f4d12 | 12 | |
jasminealice | 18:f5824ba95892 | 13 | } |
jasminealice | 18:f5824ba95892 | 14 | |
jasminealice | 18:f5824ba95892 | 15 | Train::~Train() |
jasminealice | 18:f5824ba95892 | 16 | { |
jasminealice | 18:f5824ba95892 | 17 | //dtor |
jasminealice | 18:f5824ba95892 | 18 | } |
jasminealice | 18:f5824ba95892 | 19 | |
jasminealice | 28:1430685f4d12 | 20 | unsigned int Train::normalSpeed(){ |
KwamsC | 27:9f9cd0df9a79 | 21 | return normSpeed; |
KwamsC | 27:9f9cd0df9a79 | 22 | } |
KwamsC | 27:9f9cd0df9a79 | 23 | |
jasminealice | 28:1430685f4d12 | 24 | unsigned int Train::slowlySpeed(){ |
jasminealice | 28:1430685f4d12 | 25 | return slowSpeed; |
jasminealice | 28:1430685f4d12 | 26 | } |
jasminealice | 28:1430685f4d12 | 27 | |
jasminealice | 18:f5824ba95892 | 28 | int Train::getPosition(){ |
jasminealice | 18:f5824ba95892 | 29 | |
jasminealice | 18:f5824ba95892 | 30 | return position; |
jasminealice | 18:f5824ba95892 | 31 | } |
jasminealice | 20:32ba0a5f2d02 | 32 | |
jasminealice | 23:bb57966cb776 | 33 | void Train::sendCommand(){ |
jasminealice | 23:bb57966cb776 | 34 | //lcd.cls(); |
jasminealice | 23:bb57966cb776 | 35 | //lcd.printf("Send command"); |
jasminealice | 23:bb57966cb776 | 36 | //lcd.printf("%d", inst); |
jasminealice | 20:32ba0a5f2d02 | 37 | DCC_send_command(address, inst, nrPacket); |
jasminealice | 20:32ba0a5f2d02 | 38 | |
jasminealice | 20:32ba0a5f2d02 | 39 | } |
jasminealice | 20:32ba0a5f2d02 | 40 | |
jasminealice | 21:31647d80614f | 41 | void Train::changeSpeed(unsigned int speed){ |
jasminealice | 28:1430685f4d12 | 42 | isStopped = false; |
jasminealice | 21:31647d80614f | 43 | inst = speed; |
jasminealice | 21:31647d80614f | 44 | } |
jasminealice | 21:31647d80614f | 45 | |
jasminealice | 21:31647d80614f | 46 | void Train::Stop(){ |
jasminealice | 23:bb57966cb776 | 47 | inst = 0x40; |
KwamsC | 24:418711ed8c52 | 48 | isStopped = true; |
jasminealice | 23:bb57966cb776 | 49 | DCC_send_command(address, inst, nrPacket); |
jasminealice | 21:31647d80614f | 50 | } |
jasminealice | 21:31647d80614f | 51 | |
jasminealice | 21:31647d80614f | 52 | unsigned int Train::getSpeed(){ |
jasminealice | 21:31647d80614f | 53 | return inst; |
jasminealice | 21:31647d80614f | 54 | } |
jasminealice | 21:31647d80614f | 55 | |
jasminealice | 21:31647d80614f | 56 | void Train::setPosition(int pos){ |
jasminealice | 21:31647d80614f | 57 | position = pos; |
jasminealice | 21:31647d80614f | 58 | } |
jasminealice | 23:bb57966cb776 | 59 | |
jasminealice | 23:bb57966cb776 | 60 | bool Train::isClockwise(){ |
jasminealice | 23:bb57966cb776 | 61 | return dirClockwise; |
jasminealice | 23:bb57966cb776 | 62 | } |
jasminealice | 23:bb57966cb776 | 63 | |
jasminealice | 23:bb57966cb776 | 64 | void Train::changeDirection(){ |
jasminealice | 23:bb57966cb776 | 65 | dirClockwise = !dirClockwise; |
jasminealice | 23:bb57966cb776 | 66 | } |
KwamsC | 24:418711ed8c52 | 67 | |
KwamsC | 24:418711ed8c52 | 68 | bool Train::checkStop(){ |
KwamsC | 24:418711ed8c52 | 69 | return isStopped; |
KwamsC | 24:418711ed8c52 | 70 | } |
jasminealice | 21:31647d80614f | 71 | |
jasminealice | 21:31647d80614f | 72 | bool Train::checkInterupt(int pos){ |
jasminealice | 21:31647d80614f | 73 | switch(pos){ |
jasminealice | 21:31647d80614f | 74 | case 0: |
KwamsC | 27:9f9cd0df9a79 | 75 | if(position == 13 || position == 0 || position == 12) |
jasminealice | 21:31647d80614f | 76 | return true; |
jasminealice | 21:31647d80614f | 77 | break; |
jasminealice | 21:31647d80614f | 78 | case 1: |
KwamsC | 27:9f9cd0df9a79 | 79 | if(position == 0 || position == 1 || position == 13) |
jasminealice | 21:31647d80614f | 80 | return true; |
jasminealice | 21:31647d80614f | 81 | break; |
jasminealice | 21:31647d80614f | 82 | case 2: |
KwamsC | 27:9f9cd0df9a79 | 83 | if(position == 15 || position == 2) |
jasminealice | 21:31647d80614f | 84 | return true; |
jasminealice | 21:31647d80614f | 85 | break; |
jasminealice | 21:31647d80614f | 86 | case 3: |
KwamsC | 27:9f9cd0df9a79 | 87 | if(position == 14 || position == 3 || position == 2) |
jasminealice | 21:31647d80614f | 88 | return true; |
jasminealice | 21:31647d80614f | 89 | break; |
jasminealice | 21:31647d80614f | 90 | case 4: |
KwamsC | 27:9f9cd0df9a79 | 91 | if(position == 14 || position == 4 || position == 2) |
jasminealice | 21:31647d80614f | 92 | return true; |
jasminealice | 21:31647d80614f | 93 | break; |
jasminealice | 21:31647d80614f | 94 | case 5: |
jasminealice | 25:90f7a34c253a | 95 | if(position == 11 || position == 6 || position == 5) |
jasminealice | 21:31647d80614f | 96 | return true; |
jasminealice | 21:31647d80614f | 97 | break; |
jasminealice | 21:31647d80614f | 98 | case 6: |
jasminealice | 28:1430685f4d12 | 99 | if(position == 7 || position == 4 || position == 5 || position == 6 || position == 8) |
jasminealice | 21:31647d80614f | 100 | return true; |
jasminealice | 21:31647d80614f | 101 | break; |
jasminealice | 21:31647d80614f | 102 | case 7: |
jasminealice | 31:9d973398554f | 103 | if(position == 8 || position == 6 || position == 7 || position == 9) |
jasminealice | 21:31647d80614f | 104 | return true; |
jasminealice | 21:31647d80614f | 105 | break; |
jasminealice | 21:31647d80614f | 106 | case 8: |
KwamsC | 27:9f9cd0df9a79 | 107 | if(position == 7 || position == 9 || position == 8 || position == 6) |
jasminealice | 21:31647d80614f | 108 | return true; |
jasminealice | 21:31647d80614f | 109 | break; |
jasminealice | 21:31647d80614f | 110 | case 9: |
KwamsC | 27:9f9cd0df9a79 | 111 | if(position == 3 || position == 9 || position == 14) |
jasminealice | 21:31647d80614f | 112 | return true; |
jasminealice | 21:31647d80614f | 113 | break; |
jasminealice | 21:31647d80614f | 114 | case 10: |
KwamsC | 27:9f9cd0df9a79 | 115 | if(position == 8 || position == 10 || position == 7) |
jasminealice | 21:31647d80614f | 116 | return true; |
jasminealice | 21:31647d80614f | 117 | break; |
jasminealice | 21:31647d80614f | 118 | case 11: |
KwamsC | 27:9f9cd0df9a79 | 119 | if(position == 5 || position == 11) |
jasminealice | 21:31647d80614f | 120 | return true; |
jasminealice | 21:31647d80614f | 121 | break; |
jasminealice | 21:31647d80614f | 122 | case 12: |
KwamsC | 27:9f9cd0df9a79 | 123 | if(position == 11 || position == 10 || position == 12) |
jasminealice | 21:31647d80614f | 124 | return true; |
jasminealice | 21:31647d80614f | 125 | break; |
jasminealice | 21:31647d80614f | 126 | case 13: |
KwamsC | 27:9f9cd0df9a79 | 127 | if(position == 12 || position == 13) |
jasminealice | 21:31647d80614f | 128 | return true; |
jasminealice | 21:31647d80614f | 129 | break; |
KwamsC | 24:418711ed8c52 | 130 | case 14: |
KwamsC | 27:9f9cd0df9a79 | 131 | if(position == 2 || position == 14 || position == 15) |
jasminealice | 25:90f7a34c253a | 132 | return true; |
KwamsC | 24:418711ed8c52 | 133 | break; |
KwamsC | 24:418711ed8c52 | 134 | case 15: |
KwamsC | 27:9f9cd0df9a79 | 135 | if(position == 1 || position == 15) |
jasminealice | 25:90f7a34c253a | 136 | return true; |
KwamsC | 24:418711ed8c52 | 137 | break; |
jasminealice | 21:31647d80614f | 138 | default: |
jasminealice | 21:31647d80614f | 139 | lcd.cls(); |
jasminealice | 21:31647d80614f | 140 | lcd.printf("Train not right one"); |
jasminealice | 21:31647d80614f | 141 | break; |
jasminealice | 21:31647d80614f | 142 | } |
jasminealice | 21:31647d80614f | 143 | return false; |
jasminealice | 20:32ba0a5f2d02 | 144 | } |