New project

Dependencies:   mbed TextLCD

Train.cpp

Committer:
jasminealice
Date:
2018-06-12
Revision:
21:31647d80614f
Parent:
20:32ba0a5f2d02
Child:
23:bb57966cb776

File content as of revision 21:31647d80614f:

#include "Train.h"

Train::Train(const unsigned int newaddress, const unsigned int newinst, int pos)
{
    //ctor
    address = newaddress;
    inst = newinst;
    position = pos;
    dirClockwise = false;
    nrPacket = 20;
}

Train::~Train()
{
    //dtor
}

int Train::getPosition(){

    return position;
}

void Train::goForward(){
    
    DCC_send_command(address, inst, nrPacket);
        
}

void Train::changeSpeed(unsigned int speed){
    inst = speed;    
}

void Train::Stop(){
        unsigned int stop = 0x40;
        DCC_send_command(address, stop, nrPacket);
}

unsigned int Train::getSpeed(){
    return inst;
}

void Train::setPosition(int pos){
    position = pos;    
}
    
bool Train::checkInterupt(int pos){
    switch(pos){
    case 0:
        if(position == 13 || position == 1)
            return true;
        break;
    case 1: 
        if(position == 0 || position == 2)
            return true;
        break;
    case 2: 
        if(position == 1 || position == 3 || position == 4)
            return true;
        break;
    case 3: 
        if(position == 9 || position == 2)
            return true;
        break;
    case 4: 
        if(position == 6 || position == 2)
            return true;
        break;
    case 5: 
        if(position == 11 || position == 6)
            return true;
        break;
    case 6: 
        if(position == 7 || position == 4 || position == 5)
            return true;
        break;
    case 7: 
        if(position == 8 || position == 6)
            return true;
        break;
    case 8: 
        if(position == 7 || position == 9 || position == 10)
            return true;
        break;
    case 9: 
        if(position == 3 || position == 8)
            return true;
        break;
    case 10: 
        if(position == 8 || position == 12)
            return true;
        break;
    case 11: 
        if(position == 5 || position == 12)
            return true;
        break;
    case 12: 
        if(position == 11 || position == 13 || position == 10)
            return true;
        break;
    case 13: 
        if(position == 0 || position == 12)
            return true;
        break;
    default: 
        lcd.cls();
        lcd.printf("Train not right one");
        break;
    }
    return false;
}