Initial network files
This commit is contained in:
parent
01e0808e41
commit
594f66ab23
8 changed files with 225 additions and 0 deletions
26
NetworkClient.cpp
Normal file
26
NetworkClient.cpp
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include "NetworkClient.h"
|
||||||
|
|
||||||
|
NetworkClient::NetworkClient(std::vector<RGBController *>& control) : controllers(control)
|
||||||
|
{
|
||||||
|
//Start the connection thread
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkClient::ConnectionThread()
|
||||||
|
{
|
||||||
|
//This thread manages the connection to the server
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
//Connect to server and reconnect if the connection is lost
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkClient::ListenThread()
|
||||||
|
{
|
||||||
|
//This thread handles messages received from the server
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
//Listen for request
|
||||||
|
|
||||||
|
//Request received, select functionality based on request ID
|
||||||
|
}
|
||||||
|
}
|
||||||
20
NetworkClient.h
Normal file
20
NetworkClient.h
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "RGBController.h"
|
||||||
|
#include "NetworkProtocol.h"
|
||||||
|
#include "net_port.h"
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class NetworkClient
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NetworkClient(std::vector<RGBController *>& control);
|
||||||
|
|
||||||
|
void ConnectionThread();
|
||||||
|
void ListenThread();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::vector<RGBController *>& controllers;
|
||||||
|
|
||||||
|
private:
|
||||||
|
net_port port;
|
||||||
|
};
|
||||||
20
NetworkProtocol.cpp
Normal file
20
NetworkProtocol.cpp
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "NetworkProtocol.h"
|
||||||
|
|
||||||
|
NetPacketHeader * InitNetPacketHeader
|
||||||
|
(
|
||||||
|
unsigned int pkt_dev_idx,
|
||||||
|
unsigned int pkt_id,
|
||||||
|
unsigned int pkt_size
|
||||||
|
)
|
||||||
|
{
|
||||||
|
NetPacketHeader * new_header = new NetPacketHeader;
|
||||||
|
|
||||||
|
new_header->pkt_magic[0] = 'O';
|
||||||
|
new_header->pkt_magic[1] = 'R';
|
||||||
|
new_header->pkt_magic[2] = 'G';
|
||||||
|
new_header->pkt_magic[3] = 'B';
|
||||||
|
|
||||||
|
new_header->pkt_dev_idx = pkt_dev_idx;
|
||||||
|
new_header->pkt_id = pkt_id;
|
||||||
|
new_header->pkt_size = pkt_size;
|
||||||
|
}
|
||||||
35
NetworkProtocol.h
Normal file
35
NetworkProtocol.h
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
typedef struct NetPacketHeader
|
||||||
|
{
|
||||||
|
unsigned char pkt_magic[4]; /* Magic value "ORGB" identifies beginning of packet */
|
||||||
|
unsigned int pkt_dev_idx; /* Device index */
|
||||||
|
unsigned int pkt_id; /* Packet ID */
|
||||||
|
unsigned int pkt_size; /* Packet size */
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
/*----------------------------------------------------------------------------------------------------------*\
|
||||||
|
| Network requests |
|
||||||
|
\*----------------------------------------------------------------------------------------------------------*/
|
||||||
|
NET_PACKET_ID_REQUEST_CONTROLLER_COUNT = 0, /* Request RGBController device count from server */
|
||||||
|
NET_PACKET_ID_REQUEST_CONTROLLER_DATA = 1, /* Request RGBController data block */
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------------------------------------*\
|
||||||
|
| RGBController class functions |
|
||||||
|
\*----------------------------------------------------------------------------------------------------------*/
|
||||||
|
NET_PACKET_ID_RGBCONTROLLER_RESIZEZONE = 1000, /* RGBController::ResizeZone() */
|
||||||
|
|
||||||
|
NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS = 1050, /* RGBController::UpdateLEDs() */
|
||||||
|
NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS = 1051, /* RGBController::UpdateZoneLEDs() */
|
||||||
|
NET_PACKET_ID_RGBCONTROLLER_UPDATESINGLELED = 1052, /* RGBController::UpdateSingleLED() */
|
||||||
|
|
||||||
|
NET_PACKET_ID_RGBCONTROLLER_SETCUSTOMMODE = 1100, /* RGBController::SetCustomMode() */
|
||||||
|
NET_PACKET_ID_RGBCONTROLLER_UPDATEMODE = 1101, /* RGBController::UpdateMode() */
|
||||||
|
};
|
||||||
|
|
||||||
|
NetPacketHeader * InitNetPacketHeader
|
||||||
|
(
|
||||||
|
unsigned int pkt_dev_idx,
|
||||||
|
unsigned int pkt_id,
|
||||||
|
unsigned int pkt_size
|
||||||
|
);
|
||||||
27
NetworkServer.cpp
Normal file
27
NetworkServer.cpp
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
#include "NetworkServer.h"
|
||||||
|
|
||||||
|
NetworkServer::NetworkServer(std::vector<RGBController *>& control) : controllers(control)
|
||||||
|
{
|
||||||
|
//Start a TCP server and launch threads
|
||||||
|
port.tcp_server("1337");
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkServer::ConnectionThread()
|
||||||
|
{
|
||||||
|
//This thread handles client connections
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
port.tcp_server_listen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkServer::ListenThread()
|
||||||
|
{
|
||||||
|
//This thread handles messages received from clients
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
//Listen for request
|
||||||
|
|
||||||
|
//Request received, select functionality based on request ID
|
||||||
|
}
|
||||||
|
}
|
||||||
20
NetworkServer.h
Normal file
20
NetworkServer.h
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "RGBController.h"
|
||||||
|
#include "NetworkProtocol.h"
|
||||||
|
#include "net_port.h"
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class NetworkServer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NetworkServer(std::vector<RGBController *>& control);
|
||||||
|
|
||||||
|
void ConnectionThread();
|
||||||
|
void ListenThread();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::vector<RGBController *>& controllers;
|
||||||
|
|
||||||
|
private:
|
||||||
|
net_port port;
|
||||||
|
};
|
||||||
49
RGBController/RGBController_Network.cpp
Normal file
49
RGBController/RGBController_Network.cpp
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*-----------------------------------------*\
|
||||||
|
| RGBController_Network.cpp |
|
||||||
|
| |
|
||||||
|
| Generic RGB Interface Network Class |
|
||||||
|
| |
|
||||||
|
| Adam Honse (CalcProgrammer1) 4/11/2020 |
|
||||||
|
\*-----------------------------------------*/
|
||||||
|
|
||||||
|
#include "RGBController_Network.h"
|
||||||
|
|
||||||
|
RGBController_Network::RGBController_Network()
|
||||||
|
{
|
||||||
|
//Don't need to set up anything, this class should be initialized by network manager
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::SetupZones()
|
||||||
|
{
|
||||||
|
//Don't send anything, this function should only process on host
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::ResizeZone(int /*zone*/, int /*new_size*/)
|
||||||
|
{
|
||||||
|
//Send NET_PACKET_ID_RGBCONTROLLER_RESIZEZONE
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::UpdateLEDs()
|
||||||
|
{
|
||||||
|
//Send NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::UpdateZoneLEDs(int /*zone*/)
|
||||||
|
{
|
||||||
|
//Send NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::UpdateSingleLED(int /*led*/)
|
||||||
|
{
|
||||||
|
//Send NET_PACKET_ID_RGBCONTROLLER_UPDATESINGLELED
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::SetCustomMode()
|
||||||
|
{
|
||||||
|
//Send NET_PACKET_ID_RGBCONTROLLER_SETCUSTOMMODE
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_Network::UpdateMode()
|
||||||
|
{
|
||||||
|
//Send NET_PACKET_ID_RGBCONTROLLER_UPDATEMODE
|
||||||
|
}
|
||||||
28
RGBController/RGBController_Network.h
Normal file
28
RGBController/RGBController_Network.h
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
/*-----------------------------------------*\
|
||||||
|
| RGBController_Network.h |
|
||||||
|
| |
|
||||||
|
| Generic RGB Interface Network Class |
|
||||||
|
| |
|
||||||
|
| Adam Honse (CalcProgrammer1) 4/11/2020 |
|
||||||
|
\*-----------------------------------------*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "RGBController.h"
|
||||||
|
|
||||||
|
class RGBController_Network : public RGBController
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RGBController_Network();
|
||||||
|
|
||||||
|
void SetupZones();
|
||||||
|
|
||||||
|
void ResizeZone(int zone, int new_size);
|
||||||
|
|
||||||
|
void UpdateLEDs();
|
||||||
|
void UpdateZoneLEDs(int zone);
|
||||||
|
void UpdateSingleLED(int led);
|
||||||
|
|
||||||
|
void SetCustomMode();
|
||||||
|
void UpdateMode();
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue