diff --git a/NetworkClient.cpp b/NetworkClient.cpp index 61dcd4c8..8dab3529 100644 --- a/NetworkClient.cpp +++ b/NetworkClient.cpp @@ -1,5 +1,5 @@ #include "NetworkClient.h" -#include "RGBController_Dummy.h" +#include "RGBController_Network.h" #include #ifdef WIN32 @@ -211,7 +211,7 @@ void NetworkClient::ListenThread() case NET_PACKET_ID_REQUEST_CONTROLLER_DATA: printf( "Client: NET_PACKET_ID_REQUEST_CONTROLLER_DATA\r\n"); - ProcessReply_ControllerData(header.pkt_size, data); + ProcessReply_ControllerData(header.pkt_size, data, header.pkt_dev_idx); break; } } @@ -225,9 +225,9 @@ void NetworkClient::ProcessReply_ControllerCount(unsigned int data_size, char * } } -void NetworkClient::ProcessReply_ControllerData(unsigned int data_size, char * data) +void NetworkClient::ProcessReply_ControllerData(unsigned int data_size, char * data, unsigned int dev_idx) { - RGBController_Dummy * new_controller = new RGBController_Dummy(); + RGBController_Network * new_controller = new RGBController_Network(this, dev_idx); new_controller->ReadDeviceDescription((unsigned char *)data); @@ -252,19 +252,127 @@ void NetworkClient::SendRequest_ControllerCount() port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); } -void NetworkClient::SendRequest_ControllerData(unsigned int idx) +void NetworkClient::SendRequest_ControllerData(unsigned int dev_idx) { NetPacketHeader reply_hdr; - unsigned int reply_data; reply_hdr.pkt_magic[0] = 'O'; reply_hdr.pkt_magic[1] = 'R'; reply_hdr.pkt_magic[2] = 'G'; reply_hdr.pkt_magic[3] = 'B'; - reply_hdr.pkt_dev_idx = idx; + reply_hdr.pkt_dev_idx = dev_idx; reply_hdr.pkt_id = NET_PACKET_ID_REQUEST_CONTROLLER_DATA; reply_hdr.pkt_size = 0; + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); +} + +void NetworkClient::SendRequest_RGBController_ResizeZone(unsigned int dev_idx, int zone, int new_size) +{ + NetPacketHeader reply_hdr; + int reply_data[2]; + + reply_hdr.pkt_magic[0] = 'O'; + reply_hdr.pkt_magic[1] = 'R'; + reply_hdr.pkt_magic[2] = 'G'; + reply_hdr.pkt_magic[3] = 'B'; + + reply_hdr.pkt_dev_idx = dev_idx; + reply_hdr.pkt_id = NET_PACKET_ID_RGBCONTROLLER_RESIZEZONE; + reply_hdr.pkt_size = sizeof(reply_data); + + reply_data[0] = zone; + reply_data[1] = new_size; + + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); + port.tcp_client_write((char *)&reply_data, sizeof(reply_data)); +} + +void NetworkClient::SendRequest_RGBController_UpdateLEDs(unsigned int dev_idx) +{ + NetPacketHeader reply_hdr; + + reply_hdr.pkt_magic[0] = 'O'; + reply_hdr.pkt_magic[1] = 'R'; + reply_hdr.pkt_magic[2] = 'G'; + reply_hdr.pkt_magic[3] = 'B'; + + reply_hdr.pkt_dev_idx = dev_idx; + reply_hdr.pkt_id = NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS; + reply_hdr.pkt_size = 0; + + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); +} + +void NetworkClient::SendRequest_RGBController_UpdateZoneLEDs(unsigned int dev_idx, int zone) +{ + NetPacketHeader reply_hdr; + int reply_data[1]; + + reply_hdr.pkt_magic[0] = 'O'; + reply_hdr.pkt_magic[1] = 'R'; + reply_hdr.pkt_magic[2] = 'G'; + reply_hdr.pkt_magic[3] = 'B'; + + reply_hdr.pkt_dev_idx = dev_idx; + reply_hdr.pkt_id = NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS; + reply_hdr.pkt_size = sizeof(reply_data); + + reply_data[0] = zone; + + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); + port.tcp_client_write((char *)&reply_data, sizeof(reply_data)); +} + +void NetworkClient::SendRequest_RGBController_UpdateSingleLED(unsigned int dev_idx, int led) +{ + NetPacketHeader reply_hdr; + int reply_data[1]; + + reply_hdr.pkt_magic[0] = 'O'; + reply_hdr.pkt_magic[1] = 'R'; + reply_hdr.pkt_magic[2] = 'G'; + reply_hdr.pkt_magic[3] = 'B'; + + reply_hdr.pkt_dev_idx = dev_idx; + reply_hdr.pkt_id = NET_PACKET_ID_RGBCONTROLLER_UPDATESINGLELED; + reply_hdr.pkt_size = sizeof(reply_data); + + reply_data[0] = led; + + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); + port.tcp_client_write((char *)&reply_data, sizeof(reply_data)); +} + +void NetworkClient::SendRequest_RGBController_SetCustomMode(unsigned int dev_idx) +{ + NetPacketHeader reply_hdr; + + reply_hdr.pkt_magic[0] = 'O'; + reply_hdr.pkt_magic[1] = 'R'; + reply_hdr.pkt_magic[2] = 'G'; + reply_hdr.pkt_magic[3] = 'B'; + + reply_hdr.pkt_dev_idx = dev_idx; + reply_hdr.pkt_id = NET_PACKET_ID_RGBCONTROLLER_SETCUSTOMMODE; + reply_hdr.pkt_size = 0; + + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); +} + +void NetworkClient::SendRequest_RGBController_UpdateMode(unsigned int dev_idx) +{ + NetPacketHeader reply_hdr; + + reply_hdr.pkt_magic[0] = 'O'; + reply_hdr.pkt_magic[1] = 'R'; + reply_hdr.pkt_magic[2] = 'G'; + reply_hdr.pkt_magic[3] = 'B'; + + reply_hdr.pkt_dev_idx = dev_idx; + reply_hdr.pkt_id = NET_PACKET_ID_RGBCONTROLLER_UPDATEMODE; + reply_hdr.pkt_size = 0; + port.tcp_client_write((char *)&reply_hdr, sizeof(NetPacketHeader)); } \ No newline at end of file diff --git a/NetworkClient.h b/NetworkClient.h index 3b1f2e9f..e5938303 100644 --- a/NetworkClient.h +++ b/NetworkClient.h @@ -13,10 +13,20 @@ public: void ListenThread(); void ProcessReply_ControllerCount(unsigned int data_size, char * data); - void ProcessReply_ControllerData(unsigned int data_size, char * data); + void ProcessReply_ControllerData(unsigned int data_size, char * data, unsigned int dev_idx); void SendRequest_ControllerCount(); - void SendRequest_ControllerData(unsigned int idx); + void SendRequest_ControllerData(unsigned int dev_idx); + + void SendRequest_RGBController_ResizeZone(unsigned int dev_idx, int zone, int new_size); + + void SendRequest_RGBController_UpdateLEDs(unsigned int dev_idx); + void SendRequest_RGBController_UpdateZoneLEDs(unsigned int dev_idx, int zone); + void SendRequest_RGBController_UpdateSingleLED(unsigned int dev_idx, int led); + + void SendRequest_RGBController_SetCustomMode(unsigned int dev_idx); + + void SendRequest_RGBController_UpdateMode(unsigned int dev_idx); protected: std::vector& controllers; diff --git a/NetworkServer.cpp b/NetworkServer.cpp index 6b533476..240d3c43 100644 --- a/NetworkServer.cpp +++ b/NetworkServer.cpp @@ -288,7 +288,7 @@ void NetworkServer::SendReply_ControllerData(SOCKET * client_sock, unsigned int reply_hdr.pkt_magic[2] = 'G'; reply_hdr.pkt_magic[3] = 'B'; - reply_hdr.pkt_dev_idx = 0; + reply_hdr.pkt_dev_idx = dev_idx; reply_hdr.pkt_id = NET_PACKET_ID_REQUEST_CONTROLLER_DATA; reply_hdr.pkt_size = reply_size; diff --git a/OpenRGB.pro b/OpenRGB.pro index 74e5591e..21367f54 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -166,6 +166,7 @@ SOURCES += \ RGBController/RGBController_MSI3Zone.cpp \ RGBController/RGBController_MSIMysticLight.cpp \ RGBController/RGBController_MSIRGB.cpp \ + RGBController/RGBController_Network.cpp \ RGBController/RGBController_NZXTKraken.cpp \ RGBController/RGBController_PatriotViper.cpp \ RGBController/RGBController_Polychrome.cpp \ @@ -247,6 +248,7 @@ HEADERS += \ RGBController/RGBController_MSI3Zone.h \ RGBController/RGBController_MSIMysticLight.h \ RGBController/RGBController_MSIRGB.h \ + RGBController/RGBController_Network.h \ RGBController/RGBController_PatriotViper.h \ RGBController/RGBController_Polychrome.h \ RGBController/RGBController_PoseidonZRGB.h \ diff --git a/RGBController/RGBController_Network.cpp b/RGBController/RGBController_Network.cpp index bac9e502..b3ec8c10 100644 --- a/RGBController/RGBController_Network.cpp +++ b/RGBController/RGBController_Network.cpp @@ -8,9 +8,10 @@ #include "RGBController_Network.h" -RGBController_Network::RGBController_Network() +RGBController_Network::RGBController_Network(NetworkClient * client_ptr, unsigned int dev_idx_val) { - //Don't need to set up anything, this class should be initialized by network manager + client = client_ptr; + dev_idx = dev_idx_val; } void RGBController_Network::SetupZones() @@ -18,32 +19,32 @@ void RGBController_Network::SetupZones() //Don't send anything, this function should only process on host } -void RGBController_Network::ResizeZone(int /*zone*/, int /*new_size*/) +void RGBController_Network::ResizeZone(int zone, int new_size) { - //Send NET_PACKET_ID_RGBCONTROLLER_RESIZEZONE + client->SendRequest_RGBController_ResizeZone(dev_idx, zone, new_size); } void RGBController_Network::UpdateLEDs() { - //Send NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS + client->SendRequest_RGBController_UpdateLEDs(dev_idx); } -void RGBController_Network::UpdateZoneLEDs(int /*zone*/) +void RGBController_Network::UpdateZoneLEDs(int zone) { - //Send NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS + client->SendRequest_RGBController_UpdateZoneLEDs(dev_idx, zone); } -void RGBController_Network::UpdateSingleLED(int /*led*/) +void RGBController_Network::UpdateSingleLED(int led) { - //Send NET_PACKET_ID_RGBCONTROLLER_UPDATESINGLELED + client->SendRequest_RGBController_UpdateSingleLED(dev_idx, led); } void RGBController_Network::SetCustomMode() { - //Send NET_PACKET_ID_RGBCONTROLLER_SETCUSTOMMODE + client->SendRequest_RGBController_SetCustomMode(dev_idx); } void RGBController_Network::UpdateMode() { - //Send NET_PACKET_ID_RGBCONTROLLER_UPDATEMODE + client->SendRequest_RGBController_UpdateMode(dev_idx); } diff --git a/RGBController/RGBController_Network.h b/RGBController/RGBController_Network.h index 07f17a2b..07280493 100644 --- a/RGBController/RGBController_Network.h +++ b/RGBController/RGBController_Network.h @@ -9,11 +9,12 @@ #pragma once #include "RGBController.h" +#include "NetworkClient.h" class RGBController_Network : public RGBController { public: - RGBController_Network(); + RGBController_Network(NetworkClient * client_ptr, unsigned int dev_idx_val); void SetupZones(); @@ -25,4 +26,8 @@ public: void SetCustomMode(); void UpdateMode(); + +private: + NetworkClient * client; + unsigned int dev_idx; };