void Tracker::SendRequest() { m_clock.CurrentTime(&m_send_time); if (FLAGS_send_dmx) { m_wrapper.GetClient()->SendDmx( FLAGS_universe, m_buffer, NewSingleCallback(this, &Tracker::SendComplete)); } else { m_wrapper.GetClient()->FetchDmx( FLAGS_universe, NewSingleCallback(this, &Tracker::GotDmx)); } }
/* * Setup the monitoring console */ bool DmxMonitor::Init() { /* set up ola connection */ if (!m_client.Setup()) { printf("error: %s", strerror(errno)); return false; } OlaCallbackClient *client = m_client.GetClient(); client->SetDmxCallback(ola::NewCallback(this, &DmxMonitor::NewDmx)); client->RegisterUniverse( m_universe, ola::REGISTER, ola::NewSingleCallback(this, &DmxMonitor::RegisterComplete)); /* init curses */ m_window = initscr(); if (!m_window) { printf("unable to open main-screen\n"); return false; } savetty(); start_color(); noecho(); raw(); keypad(m_window, TRUE); m_client.GetSelectServer()->AddReadDescriptor(&m_stdin_descriptor); m_stdin_descriptor.SetOnData( ola::NewCallback(this, &DmxMonitor::StdinReady)); m_client.GetSelectServer()->RegisterRepeatingTimeout( 500, ola::NewCallback(this, &DmxMonitor::CheckDataLoss)); CalcScreenGeometry(); ChangePalette(m_palette_number); m_buffer.Blackout(); timerclear(&m_last_data); DrawScreen(); return true; }