63 lines
1.2 KiB
C++
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
|