Jasmine Karlsson
/
train_rail
New project
Train.cpp@23:bb57966cb776, 2018-06-13 (annotated)
- Committer:
- jasminealice
- Date:
- Wed Jun 13 20:50:26 2018 +0000
- Revision:
- 23:bb57966cb776
- Parent:
- 21:31647d80614f
- Child:
- 24:418711ed8c52
Last changes 13/6
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 | 21:31647d80614f | 3 | Train::Train(const unsigned int newaddress, const unsigned int newinst, int pos) |
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; |
jasminealice | 18:f5824ba95892 | 11 | } |
jasminealice | 18:f5824ba95892 | 12 | |
jasminealice | 18:f5824ba95892 | 13 | Train::~Train() |
jasminealice | 18:f5824ba95892 | 14 | { |
jasminealice | 18:f5824ba95892 | 15 | //dtor |
jasminealice | 18:f5824ba95892 | 16 | } |
jasminealice | 18:f5824ba95892 | 17 | |
jasminealice | 18:f5824ba95892 | 18 | int Train::getPosition(){ |
jasminealice | 18:f5824ba95892 | 19 | |
jasminealice | 18:f5824ba95892 | 20 | return position; |
jasminealice | 18:f5824ba95892 | 21 | } |
jasminealice | 20:32ba0a5f2d02 | 22 | |
jasminealice | 23:bb57966cb776 | 23 | void Train::sendCommand(){ |
jasminealice | 23:bb57966cb776 | 24 | //lcd.cls(); |
jasminealice | 23:bb57966cb776 | 25 | //lcd.printf("Send command"); |
jasminealice | 23:bb57966cb776 | 26 | //lcd.printf("%d", inst); |
jasminealice | 20:32ba0a5f2d02 | 27 | DCC_send_command(address, inst, nrPacket); |
jasminealice | 20:32ba0a5f2d02 | 28 | |
jasminealice | 20:32ba0a5f2d02 | 29 | } |
jasminealice | 20:32ba0a5f2d02 | 30 | |
jasminealice | 21:31647d80614f | 31 | void Train::changeSpeed(unsigned int speed){ |
jasminealice | 21:31647d80614f | 32 | inst = speed; |
jasminealice | 21:31647d80614f | 33 | } |
jasminealice | 21:31647d80614f | 34 | |
jasminealice | 21:31647d80614f | 35 | void Train::Stop(){ |
jasminealice | 23:bb57966cb776 | 36 | inst = 0x40; |
jasminealice | 23:bb57966cb776 | 37 | DCC_send_command(address, inst, nrPacket); |
jasminealice | 21:31647d80614f | 38 | } |
jasminealice | 21:31647d80614f | 39 | |
jasminealice | 21:31647d80614f | 40 | unsigned int Train::getSpeed(){ |
jasminealice | 21:31647d80614f | 41 | return inst; |
jasminealice | 21:31647d80614f | 42 | } |
jasminealice | 21:31647d80614f | 43 | |
jasminealice | 21:31647d80614f | 44 | void Train::setPosition(int pos){ |
jasminealice | 21:31647d80614f | 45 | position = pos; |
jasminealice | 21:31647d80614f | 46 | } |
jasminealice | 23:bb57966cb776 | 47 | |
jasminealice | 23:bb57966cb776 | 48 | bool Train::isClockwise(){ |
jasminealice | 23:bb57966cb776 | 49 | return dirClockwise; |
jasminealice | 23:bb57966cb776 | 50 | } |
jasminealice | 23:bb57966cb776 | 51 | |
jasminealice | 23:bb57966cb776 | 52 | void Train::changeDirection(){ |
jasminealice | 23:bb57966cb776 | 53 | dirClockwise = !dirClockwise; |
jasminealice | 23:bb57966cb776 | 54 | } |
jasminealice | 21:31647d80614f | 55 | |
jasminealice | 21:31647d80614f | 56 | bool Train::checkInterupt(int pos){ |
jasminealice | 21:31647d80614f | 57 | switch(pos){ |
jasminealice | 21:31647d80614f | 58 | case 0: |
jasminealice | 21:31647d80614f | 59 | if(position == 13 || position == 1) |
jasminealice | 21:31647d80614f | 60 | return true; |
jasminealice | 21:31647d80614f | 61 | break; |
jasminealice | 21:31647d80614f | 62 | case 1: |
jasminealice | 21:31647d80614f | 63 | if(position == 0 || position == 2) |
jasminealice | 21:31647d80614f | 64 | return true; |
jasminealice | 21:31647d80614f | 65 | break; |
jasminealice | 21:31647d80614f | 66 | case 2: |
jasminealice | 21:31647d80614f | 67 | if(position == 1 || position == 3 || position == 4) |
jasminealice | 21:31647d80614f | 68 | return true; |
jasminealice | 21:31647d80614f | 69 | break; |
jasminealice | 21:31647d80614f | 70 | case 3: |
jasminealice | 21:31647d80614f | 71 | if(position == 9 || position == 2) |
jasminealice | 21:31647d80614f | 72 | return true; |
jasminealice | 21:31647d80614f | 73 | break; |
jasminealice | 21:31647d80614f | 74 | case 4: |
jasminealice | 21:31647d80614f | 75 | if(position == 6 || position == 2) |
jasminealice | 21:31647d80614f | 76 | return true; |
jasminealice | 21:31647d80614f | 77 | break; |
jasminealice | 21:31647d80614f | 78 | case 5: |
jasminealice | 21:31647d80614f | 79 | if(position == 11 || position == 6) |
jasminealice | 21:31647d80614f | 80 | return true; |
jasminealice | 21:31647d80614f | 81 | break; |
jasminealice | 21:31647d80614f | 82 | case 6: |
jasminealice | 21:31647d80614f | 83 | if(position == 7 || position == 4 || position == 5) |
jasminealice | 21:31647d80614f | 84 | return true; |
jasminealice | 21:31647d80614f | 85 | break; |
jasminealice | 21:31647d80614f | 86 | case 7: |
jasminealice | 21:31647d80614f | 87 | if(position == 8 || position == 6) |
jasminealice | 21:31647d80614f | 88 | return true; |
jasminealice | 21:31647d80614f | 89 | break; |
jasminealice | 21:31647d80614f | 90 | case 8: |
jasminealice | 21:31647d80614f | 91 | if(position == 7 || position == 9 || position == 10) |
jasminealice | 21:31647d80614f | 92 | return true; |
jasminealice | 21:31647d80614f | 93 | break; |
jasminealice | 21:31647d80614f | 94 | case 9: |
jasminealice | 21:31647d80614f | 95 | if(position == 3 || position == 8) |
jasminealice | 21:31647d80614f | 96 | return true; |
jasminealice | 21:31647d80614f | 97 | break; |
jasminealice | 21:31647d80614f | 98 | case 10: |
jasminealice | 21:31647d80614f | 99 | if(position == 8 || position == 12) |
jasminealice | 21:31647d80614f | 100 | return true; |
jasminealice | 21:31647d80614f | 101 | break; |
jasminealice | 21:31647d80614f | 102 | case 11: |
jasminealice | 21:31647d80614f | 103 | if(position == 5 || position == 12) |
jasminealice | 21:31647d80614f | 104 | return true; |
jasminealice | 21:31647d80614f | 105 | break; |
jasminealice | 21:31647d80614f | 106 | case 12: |
jasminealice | 21:31647d80614f | 107 | if(position == 11 || position == 13 || position == 10) |
jasminealice | 21:31647d80614f | 108 | return true; |
jasminealice | 21:31647d80614f | 109 | break; |
jasminealice | 21:31647d80614f | 110 | case 13: |
jasminealice | 21:31647d80614f | 111 | if(position == 0 || position == 12) |
jasminealice | 21:31647d80614f | 112 | return true; |
jasminealice | 21:31647d80614f | 113 | break; |
jasminealice | 21:31647d80614f | 114 | default: |
jasminealice | 21:31647d80614f | 115 | lcd.cls(); |
jasminealice | 21:31647d80614f | 116 | lcd.printf("Train not right one"); |
jasminealice | 21:31647d80614f | 117 | break; |
jasminealice | 21:31647d80614f | 118 | } |
jasminealice | 21:31647d80614f | 119 | return false; |
jasminealice | 20:32ba0a5f2d02 | 120 | } |