display dependencies
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
#include <output/items/Display.h>
|
||||
|
||||
namespace flippR_driver
|
||||
{
|
||||
@@ -18,13 +19,14 @@ namespace output
|
||||
namespace items
|
||||
{
|
||||
|
||||
class OutputDisplay
|
||||
class OutputDisplay : Display
|
||||
{
|
||||
|
||||
public:
|
||||
virtual ~OutputDisplay() = default;
|
||||
|
||||
virtual uint8_t get_address() const = 0;
|
||||
virtual uint8_t get_id() const = 0;
|
||||
virtual std::vector<uint8_t> get_content() const = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -28,20 +28,23 @@ public:
|
||||
Display(uint8_t address, uint8_t id);
|
||||
virtual ~Display() = default;
|
||||
|
||||
virtual void write_score(int score);
|
||||
virtual void write_content(std::array<uint8_t, DigitCount> content);
|
||||
virtual void write_score(uint score);
|
||||
virtual void write_content(std::array<char, DigitCount> content);
|
||||
|
||||
std::vector<uint8_t> get_content() const override;
|
||||
uint8_t get_address() const override;
|
||||
uint8_t get_id() const override;
|
||||
|
||||
private:
|
||||
std::string fit_string(std::string &score_string);
|
||||
|
||||
public:
|
||||
std::array<uint8_t, DigitCount> content;
|
||||
std::array<char, DigitCount> content;
|
||||
|
||||
private:
|
||||
const uint8_t id;
|
||||
const uint8_t address;
|
||||
|
||||
std::string fit_string(std::string &score_string);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -24,19 +24,17 @@ Display<DigitCount>::Display(uint8_t address, uint8_t id) :
|
||||
}
|
||||
|
||||
template<int DigitCount>
|
||||
int Display<DigitCount>::getID()
|
||||
uint8_t Display<DigitCount>::get_id() const
|
||||
{
|
||||
return this->id;
|
||||
}
|
||||
|
||||
template<int DigitCount>
|
||||
void Display<DigitCount>::write_score(int score)
|
||||
void Display<DigitCount>::write_score(uint score)
|
||||
{
|
||||
auto score_string = std::to_string(score);
|
||||
|
||||
auto score_c_string = this->fit_string(score_string).c_str();
|
||||
|
||||
std::copy(std::begin(score_c_string), std::end(score_c_string), std::begin(this->content));
|
||||
std::copy(score_string.begin(), score_string.end(), std::begin(this->content));
|
||||
}
|
||||
|
||||
template<int DigitCount>
|
||||
@@ -57,16 +55,16 @@ std::string Display<DigitCount>::fit_string(std::string& score_string)
|
||||
}
|
||||
|
||||
template<int DigitCount>
|
||||
void Display<DigitCount>::write_content( std::array<uint8_t, DigitCount> content)
|
||||
void Display<DigitCount>::write_content( std::array<char, DigitCount> content)
|
||||
{
|
||||
this->content = content;
|
||||
}
|
||||
|
||||
<int DigitCount>
|
||||
std::vector<uint8_t> Display<DigitCount>::get_content()
|
||||
template <int DigitCount>
|
||||
std::vector<uint8_t> Display<DigitCount>::get_content() const
|
||||
{
|
||||
// todo: expensive?
|
||||
return std::vector<uint8_t>(content, content + DigitCount);
|
||||
return std::vector<uint8_t>(content.begin(), content.end());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,17 @@ public:
|
||||
EightDigitDisplay(uint8_t address, uint8_t id) :
|
||||
Display<8>(address, id) {}
|
||||
|
||||
void write_score(uint score) override
|
||||
{
|
||||
Display<8>::write_score(score);
|
||||
}
|
||||
|
||||
void write_content(std::array<char, 8> content) override
|
||||
{
|
||||
Display<8>::write_content(content);
|
||||
}
|
||||
|
||||
|
||||
~EightDigitDisplay() override = default;
|
||||
|
||||
};
|
||||
|
||||
@@ -24,6 +24,16 @@ public:
|
||||
SevenDigitDisplay(uint8_t address, uint8_t id) :
|
||||
Display<7>(address, id) {}
|
||||
|
||||
void write_score(uint score) override
|
||||
{
|
||||
Display<7>::write_score(score);
|
||||
}
|
||||
|
||||
void write_content(std::array<char, 7> content) override
|
||||
{
|
||||
Display<7>::write_content(content);
|
||||
}
|
||||
|
||||
~SevenDigitDisplay() override = default;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user