Implement RGBController_Network packet sending for current set of RGBController commands

This commit is contained in:
Adam Honse 2020-04-24 18:45:01 -05:00
parent e2dfcd5b0f
commit 0270c745ce
6 changed files with 148 additions and 22 deletions

View file

@ -1,5 +1,5 @@
#include "NetworkClient.h"
#include "RGBController_Dummy.h"
#include "RGBController_Network.h"
#include <cstring>
#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));
}

View file

@ -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<RGBController *>& controllers;

View file

@ -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;

View file

@ -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 \

View file

@ -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);
}

View file

@ -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;
};