TrainControllerUi/src/common/items/train.h

63 lines
1.2 KiB
C++

#ifndef TRAIN_H
#define TRAIN_H
#include <vector>
#include "item.h"
#include "../microcontroller.h"
#include "../nfcuid.h"
class Train : public Item
{
Q_OBJECT
uint8_t functionMask_;
uint8_t train_id_;
int lastReader_ = -1;
int8_t suspendedSpeed_;
bool suspended_ = false;
public:
static constexpr int FORWARD = 1;
static constexpr int REVERSE = -1;
static constexpr int TAG_FRONT = 0;
static constexpr int TAG_BACK = 1;
static constexpr int TAG_CENTER = 2;
static constexpr int TAG_NONE = -1;
static Microcontroller *micro;
std::vector<NfcUid> tags;
Train(uint8_t id = 0, uint8_t address = 0, uint8_t functionMask = 0, int8_t initalValue = 0);
uint8_t getFunctionMask()
{
return functionMask_;
}
public slots:
void reverse();
virtual void setFunction(uint8_t function, bool on);
virtual void setValue(int8_t value);
virtual void informValue(int8_t value);
bool suspend();
bool resume();
bool suspendend();
int getDirection();
int ownsTag(NfcUid uid);
bool hasBackTag();
bool passedReader(const NfcUid &uid)
{
if(lastReader_ == uid.reader)
return false;
lastReader_ = uid.reader;
return true;
}
uint8_t getTrainId()
{
return train_id_;
}
signals:
void unsuspended(uint32_t id, int direction);
};
#endif // TRAIN_H