本文整理汇总了C++中DmxBuffer::Set方法的典型用法代码示例。如果您正苦于以下问题:C++ DmxBuffer::Set方法的具体用法?C++ DmxBuffer::Set怎么用?C++ DmxBuffer::Set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DmxBuffer
的用法示例。
在下文中一共展示了DmxBuffer::Set方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testStringGetSet
/*
* Check that the string set/get methods work
*/
void DmxBufferTest::testStringGetSet() {
const string data = "abcdefg";
DmxBuffer buffer;
uint8_t *result = new uint8_t[data.length()];
unsigned int size = data.length();
// Check that setting works
OLA_ASSERT_TRUE(buffer.Set(data));
OLA_ASSERT_EQ(data.length(), (size_t) buffer.Size());
OLA_ASSERT_EQ(data, buffer.Get());
buffer.Get(result, &size);
OLA_ASSERT_EQ(data.length(), (size_t) size);
OLA_ASSERT_EQ(0, memcmp(data.data(), result, size));
// Check the string constructor
DmxBuffer string_buffer(data);
OLA_ASSERT_TRUE(buffer == string_buffer);
// Set with an empty string
string data2;
size = data.length();
OLA_ASSERT_TRUE(buffer.Set(data2));
OLA_ASSERT_EQ(data2.length(), (size_t) buffer.Size());
OLA_ASSERT_EQ(data2, buffer.Get());
buffer.Get(result, &size);
OLA_ASSERT_EQ(data2.length(), (size_t) size);
OLA_ASSERT_EQ(0, memcmp(data2.data(), result, size));
delete[] result;
}
示例2: while
/*
* Run this thread
*/
void *VellemanOutputPort::Run() {
DmxBuffer buffer;
if (!m_usb_handle)
return NULL;
while (1) {
{
ola::thread::MutexLocker locker(&m_term_mutex);
if (m_term)
break;
}
{
ola::thread::MutexLocker locker(&m_data_mutex);
buffer.Set(m_buffer);
}
if (buffer.Size()) {
if (!SendDMX(buffer)) {
OLA_WARN << "Send failed, stopping thread...";
break;
}
} else {
// sleep for a bit
usleep(40000);
}
}
libusb_release_interface(m_usb_handle, 0);
libusb_close(m_usb_handle);
return NULL;
}
示例3: testSetChannel
/*
* Check that SetChannel works
*/
void DmxBufferTest::testSetChannel() {
DmxBuffer buffer;
buffer.SetChannel(1, 10);
buffer.SetChannel(10, 50);
uint8_t expected[DMX_UNIVERSE_SIZE];
memset(expected, 0, DMX_UNIVERSE_SIZE);
expected[1] = 10;
expected[10] = 50;
OLA_ASSERT_EQ((unsigned int) DMX_UNIVERSE_SIZE, buffer.Size());
OLA_ASSERT_EQ(0, memcmp(expected, buffer.GetRaw(), buffer.Size()));
// Check we can't set values greater than the buffer size
buffer.SetChannel(999, 50);
OLA_ASSERT_EQ((unsigned int) DMX_UNIVERSE_SIZE, buffer.Size());
OLA_ASSERT_EQ(0, memcmp(expected, buffer.GetRaw(), buffer.Size()));
// Check we can't set values outside the current valida data range
unsigned int slice_size = 20;
buffer.Set(expected, slice_size);
buffer.SetChannel(30, 90);
buffer.SetChannel(200, 10);
OLA_ASSERT_EQ(slice_size, buffer.Size());
OLA_ASSERT_EQ(0, memcmp(expected, buffer.GetRaw(), buffer.Size()));
}
示例4: NewDmx
/*
* Called when there is new DMX data
*/
void DmxMonitor::NewDmx(unsigned int universe,
const DmxBuffer &buffer,
const string &error) {
m_buffer.Set(buffer);
if (m_data_loss_window) {
// delete the window
wborder(m_data_loss_window, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
wrefresh(m_data_loss_window);
delwin(m_data_loss_window);
m_data_loss_window = NULL;
Mask();
}
move(0, COLS - 1);
switch (m_counter % 4) {
case 0:
printw("/");
break;
case 1:
printw("-");
break;
case 2:
printw("\\");
break;
default:
printw("|");
break;
}
m_counter++;
gettimeofday(&m_last_data, NULL);
Values();
refresh();
(void) universe;
(void) error;
}
示例5: StreamDmxData
/*
* Handle a streaming DMX update, we don't send responses for this
*/
void OlaServerServiceImpl::StreamDmxData(
RpcController*,
const ola::proto::DmxData* request,
ola::proto::STREAMING_NO_RESPONSE*,
ola::rpc::RpcService::CompletionCallback*,
Client *client) {
Universe *universe = m_universe_store->GetUniverse(request->universe());
if (!universe)
return;
if (client) {
DmxBuffer buffer;
buffer.Set(request->data());
uint8_t priority = ola::dmx::SOURCE_PRIORITY_DEFAULT;
if (request->has_priority()) {
priority = request->priority();
priority = std::max(static_cast<uint8_t>(ola::dmx::SOURCE_PRIORITY_MIN),
priority);
priority = std::min(static_cast<uint8_t>(ola::dmx::SOURCE_PRIORITY_MAX),
priority);
}
DmxSource source(buffer, *m_wake_up_time, priority);
client->DMXReceived(request->universe(), source);
universe->SourceClientDataChanged(client);
}
}
示例6: while
/*
* Run this thread
*/
void *SunliteOutputPort::Run() {
DmxBuffer buffer;
bool new_data;
if (!m_usb_handle)
return NULL;
while (true) {
{
ola::thread::MutexLocker locker(&m_term_mutex);
if (m_term)
break;
}
{
ola::thread::MutexLocker locker(&m_data_mutex);
buffer.Set(m_buffer);
new_data = m_new_data;
m_new_data = false;
}
if (new_data) {
if (!SendDMX(buffer)) {
OLA_WARN << "Send failed, stopping thread...";
break;
}
} else {
// sleep for a bit
usleep(40000);
}
}
libusb_release_interface(m_usb_handle, 0);
libusb_close(m_usb_handle);
return NULL;
}
示例7: StreamDmxData
/*
* Handle a streaming DMX update, we don't send responses for this
*/
void OlaServerServiceImpl::StreamDmxData(
RpcController*,
const ::ola::proto::DmxData* request,
::ola::proto::STREAMING_NO_RESPONSE*,
::google::protobuf::Closure*,
Client *client) {
Universe *universe = m_universe_store->GetUniverse(request->universe());
if (!universe)
return;
if (client) {
DmxBuffer buffer;
buffer.Set(request->data());
uint8_t priority = DmxSource::PRIORITY_DEFAULT;
if (request->has_priority()) {
priority = request->priority();
priority = std::max(DmxSource::PRIORITY_MIN, priority);
priority = std::min(DmxSource::PRIORITY_MAX, priority);
}
DmxSource source(buffer, *m_wake_up_time, priority);
client->DMXRecieved(request->universe(), source);
universe->SourceClientDataChanged(client);
}
}
示例8: UpdateDmxData
/*
* Update the DMX values for a particular universe
*/
void OlaServerServiceImpl::UpdateDmxData(
RpcController* controller,
const DmxData* request,
Ack*,
ola::rpc::RpcService::CompletionCallback* done,
Client *client) {
ClosureRunner runner(done);
Universe *universe = m_universe_store->GetUniverse(request->universe());
if (!universe)
return MissingUniverseError(controller);
if (client) {
DmxBuffer buffer;
buffer.Set(request->data());
uint8_t priority = ola::dmx::SOURCE_PRIORITY_DEFAULT;
if (request->has_priority()) {
priority = request->priority();
priority = std::max(static_cast<uint8_t>(ola::dmx::SOURCE_PRIORITY_MIN),
priority);
priority = std::min(static_cast<uint8_t>(ola::dmx::SOURCE_PRIORITY_MAX),
priority);
}
DmxSource source(buffer, *m_wake_up_time, priority);
client->DMXReceived(request->universe(), source);
universe->SourceClientDataChanged(client);
}
}
示例9: UpdateDmxData
/*
* Update the DMX values for a particular universe
*/
void OlaServerServiceImpl::UpdateDmxData(
RpcController* controller,
const DmxData* request,
Ack*,
google::protobuf::Closure* done,
Client *client) {
ClosureRunner runner(done);
Universe *universe = m_universe_store->GetUniverse(request->universe());
if (!universe)
return MissingUniverseError(controller);
if (client) {
DmxBuffer buffer;
buffer.Set(request->data());
uint8_t priority = DmxSource::PRIORITY_DEFAULT;
if (request->has_priority()) {
priority = request->priority();
priority = std::max(DmxSource::PRIORITY_MIN, priority);
priority = std::min(DmxSource::PRIORITY_MAX, priority);
}
DmxSource source(buffer, *m_wake_up_time, priority);
client->DMXRecieved(request->universe(), source);
universe->SourceClientDataChanged(client);
}
}
示例10: NewDmx
/*
* Called when there is new DMX data
*/
void DmxMonitor::NewDmx(OLA_UNUSED const ola::client::DMXMetadata &meta,
const DmxBuffer &buffer) {
m_buffer.Set(buffer);
if (m_data_loss_window) {
// delete the window
wborder(m_data_loss_window, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
wrefresh(m_data_loss_window);
delwin(m_data_loss_window);
m_data_loss_window = NULL;
Mask();
}
move(0, COLS - 1); // NOLINT(build/include_what_you_use) This is ncurses.h's
switch (m_counter % 4) {
case 0:
printw("/");
break;
case 1:
printw("-");
break;
case 2:
printw("\\");
break;
default:
printw("|");
break;
}
m_counter++;
Clock clock;
clock.CurrentTime(&m_last_data);
Values();
refresh();
}
示例11: testGetSet
/*
* Check that Get/Set works correctly
*/
void DmxBufferTest::testGetSet() {
unsigned int fudge_factor = 10;
unsigned int result_length = sizeof(TEST_DATA2) + fudge_factor;
uint8_t *result = new uint8_t[result_length];
unsigned int size = result_length;
DmxBuffer buffer;
string str_result;
OLA_ASSERT_EQ((uint8_t) 0, buffer.Get(0));
OLA_ASSERT_EQ((uint8_t) 0, buffer.Get(1));
OLA_ASSERT_FALSE(buffer.Set(NULL, sizeof(TEST_DATA)));
OLA_ASSERT_TRUE(buffer.Set(TEST_DATA, sizeof(TEST_DATA)));
OLA_ASSERT_EQ((uint8_t) 1, buffer.Get(0));
OLA_ASSERT_EQ((uint8_t) 2, buffer.Get(1));
OLA_ASSERT_EQ((unsigned int) sizeof(TEST_DATA), buffer.Size());
buffer.Get(result, &size);
OLA_ASSERT_EQ((unsigned int) sizeof(TEST_DATA), size);
OLA_ASSERT_EQ(0, memcmp(TEST_DATA, result, size));
str_result = buffer.Get();
OLA_ASSERT_EQ((size_t) sizeof(TEST_DATA), str_result.length());
OLA_ASSERT_EQ(0, memcmp(TEST_DATA, str_result.data(), str_result.length()));
size = result_length;
OLA_ASSERT_TRUE(buffer.Set(TEST_DATA2, sizeof(TEST_DATA2)));
OLA_ASSERT_EQ((unsigned int) sizeof(TEST_DATA2), buffer.Size());
buffer.Get(result, &size);
OLA_ASSERT_EQ((unsigned int) sizeof(TEST_DATA2), size);
OLA_ASSERT_EQ(0, memcmp(TEST_DATA2, result, size));
str_result = buffer.Get();
OLA_ASSERT_EQ((size_t) sizeof(TEST_DATA2), str_result.length());
OLA_ASSERT_EQ(0, memcmp(TEST_DATA2, str_result.data(), str_result.length()));
// now check that Set() with another buffer works
DmxBuffer buffer2;
buffer2.Set(buffer);
str_result = buffer2.Get();
OLA_ASSERT_EQ((size_t) sizeof(TEST_DATA2), str_result.length());
OLA_ASSERT_EQ(0, memcmp(TEST_DATA2, str_result.data(), str_result.length()));
delete[] result;
}
示例12: CheckTimeGranularity
/**
* The method called by the thread
*/
void *UartDmxThread::Run() {
TimeStamp ts1, ts2;
Clock clock;
CheckTimeGranularity();
DmxBuffer buffer;
// Setup the widget
if (!m_widget->IsOpen())
m_widget->SetupOutput();
while (1) {
{
ola::thread::MutexLocker locker(&m_term_mutex);
if (m_term)
break;
}
{
ola::thread::MutexLocker locker(&m_buffer_mutex);
buffer.Set(m_buffer);
}
if (!m_widget->SetBreak(true))
goto framesleep;
if (m_granularity == GOOD)
usleep(m_breakt);
if (!m_widget->SetBreak(false))
goto framesleep;
if (m_granularity == GOOD)
usleep(DMX_MAB);
if (!m_widget->Write(buffer))
goto framesleep;
framesleep:
// Sleep for the remainder of the DMX frame time
usleep(m_malft);
}
return NULL;
}
示例13: CaptureData
void CaptureData(uint8_t command, const uint8_t *data, unsigned int length) {
m_received_data.Set(data, length);
m_command = command;
m_ss.Terminate();
}
示例14: setUp
void UniverseTest::setUp() {
ola::InitLogging(ola::OLA_LOG_INFO, ola::OLA_LOG_STDERR);
m_preferences = new ola::MemoryPreferences("foo");
m_store = new ola::UniverseStore(m_preferences, NULL);
m_buffer.Set(TEST_DATA);
}