add support for turnouts
This commit is contained in:
@ -8,12 +8,14 @@ ItemStore::ItemStore(QObject *parent): QObject(parent)
|
||||
void ItemStore::addItem(std::shared_ptr<Item> item)
|
||||
{
|
||||
bool mached = false;
|
||||
for(unsigned i = 0; i < items_.size(); i++ ) if(*items_[i] == *item) mached = true;
|
||||
for(unsigned i = 0; i < items_.size(); i++ )
|
||||
if(*items_[i] == *item) mached = true;
|
||||
if(!mached)
|
||||
{
|
||||
items_.push_back(std::shared_ptr<Item>(item));
|
||||
itemAdded(std::weak_ptr<Item>(items_.back()));
|
||||
}
|
||||
qDebug()<<"Got item: "<<item->id()<<" matched: "<<mached;
|
||||
}
|
||||
|
||||
void ItemStore::addItems(const std::vector<std::shared_ptr<Item>>& itemIn)
|
||||
|
@ -14,19 +14,19 @@ void Train::setFunction(uint8_t funciton, bool value)
|
||||
{
|
||||
Item::setFunction(funciton, value);
|
||||
if(micro)
|
||||
micro->itemSetFunction(train_id_, funciton, value);
|
||||
micro->trainSetFunction(train_id_, funciton, value);
|
||||
}
|
||||
|
||||
void Train::setValue(uint8_t value)
|
||||
{
|
||||
Item::setValue(value);
|
||||
if(micro)
|
||||
micro->itemSetSpeed(train_id_, value);
|
||||
micro->trainSetSpeed(train_id_, value);
|
||||
}
|
||||
|
||||
void Train::reverse()
|
||||
{
|
||||
if(micro)
|
||||
micro->itemReverse(train_id_);
|
||||
micro->trainReverse(train_id_);
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ public slots:
|
||||
void reverse();
|
||||
virtual void setFunction(uint8_t function, bool on);
|
||||
virtual void setValue(uint8_t value);
|
||||
uint8_t getTrainId(){return train_id_;}
|
||||
};
|
||||
|
||||
#endif // TRAIN_H
|
||||
|
17
src/items/turnout.cpp
Normal file
17
src/items/turnout.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
#include "turnout.h"
|
||||
|
||||
Microcontroller *Turnout::micro = nullptr;
|
||||
|
||||
Turnout::Turnout(uint8_t id, uint8_t address, uint8_t subaddress)
|
||||
: subaddress_(subaddress), turnoutId_(id)
|
||||
{
|
||||
itemId_ = address | (subaddress << 8);
|
||||
name_ = QString("Turnout ")+QString::number(id);
|
||||
}
|
||||
|
||||
void Turnout::setValue(uint8_t value)
|
||||
{
|
||||
Item::setValue(value);
|
||||
if(micro)
|
||||
micro->tunoutSetDirection(turnoutId_, value);
|
||||
}
|
19
src/items/turnout.h
Normal file
19
src/items/turnout.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef TURNOUT_H
|
||||
#define TURNOUT_H
|
||||
|
||||
#include "item.h"
|
||||
#include "../microcontroller.h"
|
||||
|
||||
class Turnout : public Item
|
||||
{
|
||||
uint8_t subaddress_;
|
||||
uint8_t turnoutId_;
|
||||
public:
|
||||
static Microcontroller *micro;
|
||||
|
||||
explicit Turnout(uint8_t id = 0, uint8_t address = 0, uint8_t subaddress = 0);
|
||||
virtual void setValue(uint8_t value);
|
||||
uint8_t getTurnoutId(){return turnoutId_;}
|
||||
};
|
||||
|
||||
#endif // TURNOUT_H
|
Reference in New Issue
Block a user