- Moved all settings to settings class. Singleton in settings class.
- New socketClosed function on OlaThread to handle olad closing - Added some doc
This commit is contained in:
parent
fc1eda5ae9
commit
1b7664edaf
11 changed files with 278 additions and 152 deletions
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "defines.h"
|
||||
#include "dmxPersonality.h"
|
||||
#include "settings.h"
|
||||
|
||||
class olaThread : public QThread
|
||||
{
|
||||
|
|
@ -31,7 +32,6 @@ public:
|
|||
*@param int channel the channel for the value wanted
|
||||
*@return int the value
|
||||
*/
|
||||
|
||||
inline int getValue(int layer, int channel) {
|
||||
return m_dmx[layer][channel];
|
||||
}
|
||||
|
|
@ -39,16 +39,8 @@ public:
|
|||
/**
|
||||
* @brief resendDMX emite todo el buffer DMX
|
||||
*/
|
||||
|
||||
void resendDmx();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QList<dmxSetting> settings() const;
|
||||
void setSettings(const QList<dmxSetting> &settings);
|
||||
|
||||
private:
|
||||
|
||||
void run ();
|
||||
|
|
@ -57,21 +49,16 @@ private:
|
|||
unsigned int m_counter;
|
||||
struct timeval m_last_data; // Last DMX frame received
|
||||
|
||||
// DMX Conf
|
||||
QList<int> *m_universe; // Registered universes.
|
||||
int m_layersNumber; // Number of layers in wich divide the dmx frame. Each layer, one source.
|
||||
int m_dmx[LAYERS_NUMBER][LAYER_CHANNELS]; // DMX Buffer. Habría que cambiarlo si queremos hacer las capas dinámicas
|
||||
QList<dmxSetting> m_settings;
|
||||
|
||||
inline void registerUniverse(int universe) {
|
||||
// void ola::client::OlaClient::RegisterUniverse(unsigned int universe,RegisterAction register_action,SetCallback * callback
|
||||
m_client->RegisterUniverse(universe, ola::client::REGISTER,ola::NewSingleCallback(this, &olaThread::RegisterComplete));
|
||||
}
|
||||
|
||||
/**
|
||||
* Control de errores en el registro de Universos en OLA
|
||||
* @brief Callback from ola. Control de errores en el registro de Universos en OLA
|
||||
* typedef SingleUseCallback1<void, const Result&> ola::client::SetCallback
|
||||
* @param ola::client::Result &error
|
||||
* @return void
|
||||
*
|
||||
*
|
||||
*/
|
||||
// typedef SingleUseCallback1<void, const Result&> ola::client::SetCallback
|
||||
inline void RegisterComplete(const ola::client::Result &error) {
|
||||
if (error.Success()) {
|
||||
// qDebug("Register Universe success");
|
||||
|
|
@ -82,18 +69,58 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if the dmx info is arriving each 4 seconds
|
||||
* @return bool
|
||||
*/
|
||||
bool CheckDataLoss();
|
||||
|
||||
// typedef Callback2<void, const DMXMetadata&, const DmxBuffer&> ola::client::RepeatableDMXCallback
|
||||
void NewDmx(const ola::client::DMXMetadata &dmx_meta, const ola::DmxBuffer &buffer); // Callback from OlaCLient when there is new dmx info
|
||||
/**
|
||||
* @brief RepeteableDMXCallBack from ola called when arrives a new dmx frame
|
||||
* typedef Callback2<void, const DMXMetadata&, const DmxBuffer&> ola::client::RepeatableDMXCallback
|
||||
* This is called one for second if there is not updated in the DMX frame. We need emit only the channels that
|
||||
* has changed to save resources.
|
||||
*
|
||||
*
|
||||
*/
|
||||
void NewDmx(const ola::client::DMXMetadata &dmx_meta, const ola::DmxBuffer &buffer); //
|
||||
|
||||
/**
|
||||
* @brief Sometimes the ola server closes the connection. This is a callback to handle this event an reconect to ola
|
||||
*
|
||||
*
|
||||
*/
|
||||
void socketClosed();
|
||||
void init();
|
||||
|
||||
/**
|
||||
* @brief Open the connection with olad and start processing data.
|
||||
*
|
||||
*
|
||||
*/
|
||||
void init();
|
||||
|
||||
public slots:
|
||||
|
||||
void stop(); // Close the connection with olad.
|
||||
void setLayersNumber(int layersNumber);
|
||||
void setDMXConf(dmxSetting set);
|
||||
|
||||
/**
|
||||
* @brief register one Universe
|
||||
* void ola::client::OlaClient::RegisterUniverse(unsigned int universe,RegisterAction register_action,SetCallback * callback
|
||||
* @param universe
|
||||
*/
|
||||
inline void registerUniverse(int universe) {
|
||||
m_client->RegisterUniverse(universe, ola::client::REGISTER,ola::NewSingleCallback(this, &olaThread::RegisterComplete));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Register all the universes again
|
||||
*
|
||||
*/
|
||||
inline void registerUniverse() {
|
||||
for (int universe = 0; universe < Settings::getInstance()->getUniverseNumber(); universe++) {
|
||||
registerUniverse(universe);
|
||||
}
|
||||
}
|
||||
|
||||
protected slots:
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue