mirror of
https://github.com/sudoxnym/open-hyperion.git
synced 2026-04-14 19:46:39 +00:00
Add buttons to start and stop receiver, add online status and received packet count (not yet implemented)
This commit is contained in:
parent
b7fbb150fb
commit
14f7657ddf
3 changed files with 120 additions and 9 deletions
|
|
@ -38,6 +38,11 @@ OpenRGBE131ReceiverDialog::OpenRGBE131ReceiverDialog(ResourceManager* manager, Q
|
|||
\*-------------------------------------------------*/
|
||||
resource_manager->RegisterDeviceListChangeCallback(DeviceListChanged_Callback, this);
|
||||
resource_manager->RegisterDetectionProgressCallback(DeviceListChanged_Callback, this);
|
||||
|
||||
online = false;
|
||||
received_count = 0;
|
||||
|
||||
UpdateOnlineStatus();
|
||||
}
|
||||
|
||||
OpenRGBE131ReceiverDialog::~OpenRGBE131ReceiverDialog()
|
||||
|
|
@ -119,9 +124,6 @@ void OpenRGBE131ReceiverDialog::DeviceListChanged()
|
|||
}
|
||||
|
||||
ui->E131TreeView->expandAll();
|
||||
|
||||
// Start the receiver thread
|
||||
E131ReceiverThread = new std::thread(&OpenRGBE131ReceiverDialog::E131ReceiverThreadFunction, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -132,6 +134,11 @@ void OpenRGBE131ReceiverDialog::E131ReceiverThreadFunction()
|
|||
e131_error_t error;
|
||||
uint8_t last_seq = 0x00;
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Clear online status |
|
||||
\*-----------------------------------------------------*/
|
||||
online = false;
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Create a socket for E1.31 |
|
||||
\*-----------------------------------------------------*/
|
||||
|
|
@ -164,15 +171,23 @@ void OpenRGBE131ReceiverDialog::E131ReceiverThreadFunction()
|
|||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Set online status |
|
||||
\*-----------------------------------------------------*/
|
||||
online = true;
|
||||
|
||||
UpdateOnlineStatus();
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Loop to receive E1.31 packets |
|
||||
\*-----------------------------------------------------*/
|
||||
while(1)
|
||||
while(online)
|
||||
{
|
||||
if(e131_recv(sockfd, &packet) < 0)
|
||||
{
|
||||
printf("Receive error\r\n");
|
||||
return;
|
||||
|
||||
online = false;
|
||||
}
|
||||
|
||||
if((error = e131_pkt_validate(&packet)) != E131_ERR_NONE)
|
||||
|
|
@ -188,6 +203,8 @@ void OpenRGBE131ReceiverDialog::E131ReceiverThreadFunction()
|
|||
// continue;
|
||||
// }
|
||||
|
||||
received_count++;
|
||||
|
||||
last_seq = packet.frame.seq_number;
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
|
|
@ -233,4 +250,46 @@ void OpenRGBE131ReceiverDialog::E131ReceiverThreadFunction()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
closesocket(sockfd);
|
||||
|
||||
UpdateOnlineStatus();
|
||||
}
|
||||
|
||||
void OpenRGBE131ReceiverDialog::UpdateOnlineStatus()
|
||||
{
|
||||
if(online)
|
||||
{
|
||||
ui->ReceiverStatusValue->setText("Online");
|
||||
|
||||
ui->ButtonStartReceiver->setEnabled(false);
|
||||
ui->ButtonStopReceiver->setEnabled(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->ReceiverStatusValue->setText("Offline");
|
||||
|
||||
received_count = 0;
|
||||
|
||||
ui->PacketsReceivedValue->setText(QString::number(received_count));
|
||||
|
||||
ui->ButtonStartReceiver->setEnabled(true);
|
||||
ui->ButtonStopReceiver->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void OpenRGBE131ReceiverDialog::on_ButtonStartReceiver_clicked()
|
||||
{
|
||||
if(!online)
|
||||
{
|
||||
// Start the receiver thread
|
||||
E131ReceiverThread = new std::thread(&OpenRGBE131ReceiverDialog::E131ReceiverThreadFunction, this);
|
||||
}
|
||||
}
|
||||
|
||||
void OpenRGBE131ReceiverDialog::on_ButtonStopReceiver_clicked()
|
||||
{
|
||||
online = false;
|
||||
|
||||
UpdateOnlineStatus();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,11 +20,21 @@ public:
|
|||
void DeviceListChanged();
|
||||
void E131ReceiverThreadFunction();
|
||||
|
||||
private:
|
||||
ResourceManager* resource_manager;
|
||||
Ui::OpenRGBE131ReceiverDialog *ui;
|
||||
private slots:
|
||||
void on_ButtonStartReceiver_clicked();
|
||||
|
||||
std::thread* E131ReceiverThread;
|
||||
void on_ButtonStopReceiver_clicked();
|
||||
|
||||
private:
|
||||
ResourceManager* resource_manager;
|
||||
Ui::OpenRGBE131ReceiverDialog *ui;
|
||||
|
||||
bool online;
|
||||
unsigned long received_count;
|
||||
|
||||
std::thread* E131ReceiverThread;
|
||||
|
||||
void UpdateOnlineStatus();
|
||||
};
|
||||
|
||||
#endif // OPENRGBE131RECEIVERDIALOG_H
|
||||
|
|
|
|||
|
|
@ -20,7 +20,35 @@
|
|||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="ReceiverStatusValue">
|
||||
<property name="text">
|
||||
<string>Offline</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QPushButton" name="ButtonStartReceiver">
|
||||
<property name="text">
|
||||
<string>Start Receiver</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QPushButton" name="ButtonStopReceiver">
|
||||
<property name="text">
|
||||
<string>Stop Receiver</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="ReceiverStatusLabel">
|
||||
<property name="text">
|
||||
<string>Receiver Status:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="4">
|
||||
<widget class="QTreeWidget" name="E131TreeView">
|
||||
<column>
|
||||
<property name="text">
|
||||
|
|
@ -29,6 +57,20 @@
|
|||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="PacketsReceivedLabel">
|
||||
<property name="text">
|
||||
<string>Packets Received:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="PacketsReceivedValue">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue