add bounds check to slot address
This commit is contained in:
parent
b5e4c05922
commit
88c7787f41
|
@ -25,7 +25,6 @@
|
||||||
#include "universe.h"
|
#include "universe.h"
|
||||||
|
|
||||||
namespace DMX {
|
namespace DMX {
|
||||||
using std::copy;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
|
@ -33,6 +32,19 @@ Universe::Universe() {
|
||||||
null_start_data_.fill(0);
|
null_start_data_.fill(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get value of a slot.
|
||||||
|
|
||||||
|
@param uint16_t address of the requested slot.
|
||||||
|
@return const uint8_t value of the slot.
|
||||||
|
*/
|
||||||
|
const uint8_t Universe::slot (uint16_t address) const
|
||||||
|
{
|
||||||
|
if (address > 512) return 0;
|
||||||
|
return null_start_data_[address];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
accept new data from receiver
|
accept new data from receiver
|
||||||
|
|
||||||
|
@ -42,7 +54,7 @@ void Universe::set(vector<uint8_t> vect) {
|
||||||
switch (vect.front()) { // start code
|
switch (vect.front()) { // start code
|
||||||
case E111_NULL_START:
|
case E111_NULL_START:
|
||||||
vect.resize(null_start_data_.size(), 0); // pad shorter, truncate larger
|
vect.resize(null_start_data_.size(), 0); // pad shorter, truncate larger
|
||||||
copy(vect.begin(), vect.end(), null_start_data_.begin());
|
std::copy(vect.begin(), vect.end(), null_start_data_.begin());
|
||||||
for (const auto &cb : callbacks_)
|
for (const auto &cb : callbacks_)
|
||||||
cb(this);
|
cb(this);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -59,10 +59,11 @@ class Universe {
|
||||||
public:
|
public:
|
||||||
Universe ();
|
Universe ();
|
||||||
|
|
||||||
DimmerData * data() { return &null_start_data_; }
|
const DimmerData * data() const { return &null_start_data_; }
|
||||||
void onData (const DataHandler callback);
|
const uint8_t slot (uint16_t address) const;
|
||||||
|
|
||||||
void set (vector<uint8_t>);
|
void set (vector<uint8_t>);
|
||||||
uint8_t slot (uint16_t address) { return null_start_data_[address]; }
|
void onData (const DataHandler);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DimmerData null_start_data_;
|
DimmerData null_start_data_;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user