Files
MarklinController/signal.h
uvos ab2767af18 add support for signals
split main into more files
2022-02-12 00:39:26 +01:00

33 lines
823 B
C++

#pragma once
#include "item.h"
#include <stdint.h>
class Signal: public Item
{
public:
static constexpr uint8_t GO = 0;
static constexpr uint8_t STOP = 1;
static constexpr uint8_t SLOW = 2;
static constexpr uint8_t EXPECT_GO = 0;
static constexpr uint8_t EXPECT_STOP = 1 << 3;
static constexpr uint8_t RIGHT = 2 << 3;
static constexpr uint8_t TYPE_NORMAL = 0;
static constexpr uint8_t TYPE_RELAY = 1;
static constexpr uint8_t TYPE_HAS_SLOW = 1 << 1;
static constexpr uint8_t TYPE_HAS_EXPECT = 1 << 2;
private:
uint8_t _state = GO;
uint8_t _subaddress;
uint8_t _type;
public:
Signal(uint8_t address, uint8_t subaddress, uint8_t type = TYPE_NORMAL | TYPE_HAS_SLOW);
void setState(uint8_t state);
uint8_t getState();
uint8_t getSubaddress();
uint16_t getPacket();
void sendData();
uint8_t getType();
};