mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-05-30 01:27:58 -04:00
Add SetHidden SDK packet
This commit is contained in:
@@ -876,6 +876,23 @@ void NetworkClient::SendRequest_RGBController_ResizeZone(unsigned int dev_idx, i
|
||||
send_in_progress.unlock();
|
||||
}
|
||||
|
||||
void NetworkClient::SendRequest_RGBController_SetHidden(unsigned int dev_idx, bool hidden)
|
||||
{
|
||||
if(change_in_progress)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NetPacketHeader request_hdr;
|
||||
|
||||
InitNetPacketHeader(&request_hdr, dev_idx, NET_PACKET_ID_RGBCONTROLLER_SETHIDDEN, sizeof(hidden));
|
||||
|
||||
send_in_progress.lock();
|
||||
send(client_sock, (char *)&request_hdr, sizeof(NetPacketHeader), MSG_NOSIGNAL);
|
||||
send(client_sock, (char *)&hidden, sizeof(hidden), MSG_NOSIGNAL);
|
||||
send_in_progress.unlock();
|
||||
}
|
||||
|
||||
void NetworkClient::SendRequest_RGBController_UpdateLEDs(unsigned int dev_idx, unsigned char* data_ptr, unsigned int data_size)
|
||||
{
|
||||
if(change_in_progress)
|
||||
@@ -889,7 +906,7 @@ void NetworkClient::SendRequest_RGBController_UpdateLEDs(unsigned int dev_idx, u
|
||||
|
||||
send_in_progress.lock();
|
||||
send(client_sock, (char *)&request_hdr, sizeof(NetPacketHeader), MSG_NOSIGNAL);
|
||||
send(client_sock, (char *)data_ptr, data_size, 0);
|
||||
send(client_sock, (char *)data_ptr, data_size, MSG_NOSIGNAL);
|
||||
send_in_progress.unlock();
|
||||
}
|
||||
|
||||
@@ -1900,6 +1917,12 @@ void NetworkClient::ProcessRequest_RGBController_SignalUpdate(unsigned int data_
|
||||
case RGBCONTROLLER_UPDATE_REASON_SETDEVICESPECIFICZONECONFIGURATION:
|
||||
default:
|
||||
RGBController::SetDeviceDescription(data_ptr, data_size - (data_ptr - data_start), controller, GetProtocolVersion());
|
||||
|
||||
/*---------------------------------------------*\
|
||||
| Mark this controller as remote owned |
|
||||
\*---------------------------------------------*/
|
||||
controller->flags &= ~CONTROLLER_FLAG_LOCAL;
|
||||
controller->flags |= CONTROLLER_FLAG_REMOTE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -155,6 +155,7 @@ public:
|
||||
void SendRequest_RGBController_AddSegment(unsigned int dev_idx, unsigned char* data_ptr, unsigned int data_size);
|
||||
void SendRequest_RGBController_ConfigureZone(unsigned int dev_idx, unsigned char* data_ptr, unsigned int data_size);
|
||||
void SendRequest_RGBController_ResizeZone(unsigned int dev_idx, int zone, int new_size);
|
||||
void SendRequest_RGBController_SetHidden(unsigned int dev_idx, bool hidden);
|
||||
|
||||
void SendRequest_RGBController_UpdateLEDs(unsigned int dev_idx, unsigned char* data_ptr, unsigned int data_size);
|
||||
void SendRequest_RGBController_UpdateZoneLEDs(unsigned int dev_idx, unsigned char* data_ptr, unsigned int data_size);
|
||||
|
||||
@@ -173,6 +173,7 @@ enum
|
||||
NET_PACKET_ID_RGBCONTROLLER_CLEARSEGMENTS = 1001, /* RGBController::ClearSegments() */
|
||||
NET_PACKET_ID_RGBCONTROLLER_ADDSEGMENT = 1002, /* RGBController::AddSegment() */
|
||||
NET_PACKET_ID_RGBCONTROLLER_CONFIGUREZONE = 1003, /* RGBController::ConfigureZone() */
|
||||
NET_PACKET_ID_RGBCONTROLLER_SETHIDDEN = 1004, /* RGBController::SetHidden() */
|
||||
|
||||
NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS = 1050, /* RGBController::UpdateLEDs() */
|
||||
NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS = 1051, /* RGBController::UpdateZoneLEDs() */
|
||||
|
||||
@@ -1469,6 +1469,10 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo* client_info)
|
||||
status = ProcessRequest_RGBController_ConfigureZone(client_info, header.pkt_size, data, header.pkt_dev_id);
|
||||
break;
|
||||
|
||||
case NET_PACKET_ID_RGBCONTROLLER_SETHIDDEN:
|
||||
status = ProcessRequest_RGBController_SetHidden(client_info, header.pkt_size, data, header.pkt_dev_id);
|
||||
break;
|
||||
|
||||
case NET_PACKET_ID_RGBCONTROLLER_SETDEVICESPECIFICCONFIGURATION:
|
||||
status = ProcessRequest_RGBController_SetDeviceSpecificConfiguration(client_info, header.pkt_size, data, header.pkt_dev_id);
|
||||
break;
|
||||
@@ -2536,6 +2540,43 @@ NetPacketStatus NetworkServer::ProcessRequest_RGBController_SetDeviceSpecificZon
|
||||
return(NET_PACKET_STATUS_OK);
|
||||
}
|
||||
|
||||
NetPacketStatus NetworkServer::ProcessRequest_RGBController_SetHidden(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id)
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
| Convert ID to index |
|
||||
\*-----------------------------------------------------*/
|
||||
bool controller_idx_valid;
|
||||
unsigned int controller_idx = index_from_id(controller_id, client_info->client_protocol_version, &controller_idx_valid);
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| If data pointer is null, return |
|
||||
\*-----------------------------------------------------*/
|
||||
if(data_ptr == NULL)
|
||||
{
|
||||
return(NET_PACKET_STATUS_ERROR_INVALID_DATA);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| If data size is invalid, return |
|
||||
\*-----------------------------------------------------*/
|
||||
if(data_size < sizeof(bool))
|
||||
{
|
||||
return(NET_PACKET_STATUS_ERROR_INVALID_DATA);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| If controller ID is invalid, return |
|
||||
\*-----------------------------------------------------*/
|
||||
if(!controller_idx_valid)
|
||||
{
|
||||
return(NET_PACKET_STATUS_ERROR_INVALID_ID);
|
||||
}
|
||||
|
||||
controllers[controller_idx]->SetHidden((bool*)data_ptr);
|
||||
|
||||
return(NET_PACKET_STATUS_OK);
|
||||
}
|
||||
|
||||
NetPacketStatus NetworkServer::ProcessRequest_RGBController_UpdateLEDs(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id)
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
|
||||
@@ -259,6 +259,7 @@ private:
|
||||
NetPacketStatus ProcessRequest_RGBController_SetCustomMode(NetworkClientInfo* client_info, unsigned int controller_id);
|
||||
NetPacketStatus ProcessRequest_RGBController_SetDeviceSpecificConfiguration(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id);
|
||||
NetPacketStatus ProcessRequest_RGBController_SetDeviceSpecificZoneConfiguration(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id);
|
||||
NetPacketStatus ProcessRequest_RGBController_SetHidden(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id);
|
||||
NetPacketStatus ProcessRequest_RGBController_UpdateLEDs(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id);
|
||||
NetPacketStatus ProcessRequest_RGBController_UpdateSaveMode(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id, bool save_mode);
|
||||
NetPacketStatus ProcessRequest_RGBController_UpdateSingleLED(NetworkClientInfo* client_info, unsigned int data_size, unsigned char* data_ptr, unsigned int controller_id);
|
||||
|
||||
@@ -154,7 +154,13 @@ device_type RGBController::GetDeviceType()
|
||||
|
||||
unsigned int RGBController::GetFlags()
|
||||
{
|
||||
return(flags);
|
||||
unsigned int controller_flags;
|
||||
|
||||
AccessMutex.lock_shared();
|
||||
controller_flags = flags;
|
||||
AccessMutex.unlock_shared();
|
||||
|
||||
return(controller_flags);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
@@ -162,19 +168,31 @@ unsigned int RGBController::GetFlags()
|
||||
\*---------------------------------------------------------*/
|
||||
bool RGBController::GetHidden()
|
||||
{
|
||||
return(flags & CONTROLLER_FLAG_HIDDEN);
|
||||
bool hidden;
|
||||
|
||||
AccessMutex.lock_shared();
|
||||
hidden = flags & CONTROLLER_FLAG_HIDDEN;
|
||||
AccessMutex.unlock_shared();
|
||||
|
||||
return(hidden);
|
||||
}
|
||||
|
||||
void RGBController::SetHidden(bool hidden)
|
||||
{
|
||||
if(hidden)
|
||||
{
|
||||
AccessMutex.lock();
|
||||
flags |= CONTROLLER_FLAG_HIDDEN;
|
||||
AccessMutex.unlock();
|
||||
|
||||
SignalUpdate(RGBCONTROLLER_UPDATE_REASON_HIDDEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
AccessMutex.lock();
|
||||
flags &= ~CONTROLLER_FLAG_HIDDEN;
|
||||
AccessMutex.unlock();
|
||||
|
||||
SignalUpdate(RGBCONTROLLER_UPDATE_REASON_UNHIDDEN);
|
||||
}
|
||||
}
|
||||
@@ -256,20 +274,20 @@ std::size_t RGBController::GetZoneCount()
|
||||
|
||||
unsigned int RGBController::GetZoneFlags(unsigned int zone)
|
||||
{
|
||||
unsigned int flags;
|
||||
unsigned int zone_flags;
|
||||
|
||||
AccessMutex.lock_shared();
|
||||
if(zone < zones.size())
|
||||
{
|
||||
flags = zones[zone].flags;
|
||||
zone_flags = zones[zone].flags;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = 0;
|
||||
zone_flags = 0;
|
||||
}
|
||||
AccessMutex.unlock_shared();
|
||||
|
||||
return(flags);
|
||||
return(zone_flags);
|
||||
}
|
||||
|
||||
unsigned int RGBController::GetZoneLEDsCount(unsigned int zone)
|
||||
@@ -581,20 +599,20 @@ unsigned int RGBController::GetZoneModeDirection(unsigned int zone, unsigned int
|
||||
|
||||
unsigned int RGBController::GetZoneModeFlags(unsigned int zone, unsigned int mode)
|
||||
{
|
||||
unsigned int flags;
|
||||
unsigned int mode_flags;
|
||||
|
||||
AccessMutex.lock_shared();
|
||||
if((zone < zones.size()) && (mode < zones[zone].modes.size()))
|
||||
{
|
||||
flags = zones[zone].modes[mode].flags;
|
||||
mode_flags = zones[zone].modes[mode].flags;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = 0;
|
||||
mode_flags = 0;
|
||||
}
|
||||
AccessMutex.unlock_shared();
|
||||
|
||||
return(flags);
|
||||
return(mode_flags);
|
||||
}
|
||||
|
||||
std::string RGBController::GetZoneModeName(unsigned int zone, unsigned int mode)
|
||||
@@ -725,20 +743,20 @@ std::size_t RGBController::GetZoneSegmentCount(unsigned int zone)
|
||||
|
||||
unsigned int RGBController::GetZoneSegmentFlags(unsigned int zone, unsigned int segment)
|
||||
{
|
||||
unsigned int flags;
|
||||
unsigned int segment_flags;
|
||||
|
||||
AccessMutex.lock_shared();
|
||||
if((zone < zones.size()) && (segment < zones[zone].segments.size()))
|
||||
{
|
||||
flags = zones[zone].segments[segment].flags;
|
||||
segment_flags = zones[zone].segments[segment].flags;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = 0;
|
||||
segment_flags = 0;
|
||||
}
|
||||
AccessMutex.unlock_shared();
|
||||
|
||||
return(flags);
|
||||
return(segment_flags);
|
||||
}
|
||||
|
||||
unsigned int RGBController::GetZoneSegmentLEDsCount(unsigned int zone, unsigned int segment)
|
||||
@@ -1242,20 +1260,20 @@ unsigned int RGBController::GetModeDirection(unsigned int mode)
|
||||
|
||||
unsigned int RGBController::GetModeFlags(unsigned int mode)
|
||||
{
|
||||
unsigned int flags;
|
||||
unsigned int mode_flags;
|
||||
|
||||
AccessMutex.lock_shared();
|
||||
if(mode < modes.size())
|
||||
{
|
||||
flags = modes[mode].flags;
|
||||
mode_flags = modes[mode].flags;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = 0;
|
||||
mode_flags = 0;
|
||||
}
|
||||
AccessMutex.unlock_shared();
|
||||
|
||||
return(flags);
|
||||
return(mode_flags);
|
||||
}
|
||||
|
||||
std::string RGBController::GetModeName(unsigned int mode)
|
||||
|
||||
@@ -30,6 +30,11 @@ unsigned int RGBController_Network::GetID()
|
||||
return(dev_id);
|
||||
}
|
||||
|
||||
void RGBController_Network::SetHidden(bool hidden)
|
||||
{
|
||||
client->SendRequest_RGBController_SetHidden(dev_id, hidden);
|
||||
}
|
||||
|
||||
void RGBController_Network::ClearSegments(int zone)
|
||||
{
|
||||
client->SendRequest_RGBController_ClearSegments(dev_id, zone);
|
||||
|
||||
@@ -23,6 +23,8 @@ public:
|
||||
|
||||
unsigned int GetID();
|
||||
|
||||
void SetHidden(bool hidden);
|
||||
|
||||
void ClearSegments(int zone);
|
||||
void AddSegment(int zone, segment new_segment);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user