Proof of concept for IPC Socket Client

This commit is contained in:
2026-03-15 11:16:30 +10:00
parent 68e3a60fd8
commit 9ec03d11a0
2 changed files with 39 additions and 3 deletions
+34 -3
View File
@@ -17,6 +17,7 @@
#include <sys/un.h> #include <sys/un.h>
#include "external/cJSON.h" #include "external/cJSON.h"
#include "configHandler.h" #include "configHandler.h"
#include "player/player.h"
#include "libopensubsonic/utils.h" #include "libopensubsonic/utils.h"
#include "libopensubsonic/httpclient.h" #include "libopensubsonic/httpclient.h"
#include "libopensubsonic/endpoint_getStarred.h" #include "libopensubsonic/endpoint_getStarred.h"
@@ -35,7 +36,7 @@ bool isSocketHandlerLoopRunning = false;
void socketHandler_read(); void socketHandler_read();
void socketHandler_performAction(int id, char** retDataStr); void socketHandler_performAction(int id, char** retDataStr, cJSON** cliReqJson);
int SockSig_Length = 4; int SockSig_Length = 4;
@@ -124,7 +125,7 @@ int socketHandler_init() {
// Perform action // Perform action
char* retData = NULL; char* retData = NULL;
socketHandler_performAction(id, &retData); socketHandler_performAction(id, &retData, &cliReqJson);
int retDataSize = strlen(retData); int retDataSize = strlen(retData);
// Send size back to client // Send size back to client
@@ -149,7 +150,7 @@ void socketHandler_cleanup() {
unlink(configObj->client_socket_path); unlink(configObj->client_socket_path);
} }
void socketHandler_performAction(int id, char** retDataStr) { void socketHandler_performAction(int id, char** retDataStr, cJSON** cliReqJson) {
switch (id) { switch (id) {
case OSSP_SOCKET_ACTION_GETSTARREDSONGS: case OSSP_SOCKET_ACTION_GETSTARREDSONGS:
printf("[SocketHandler] Client requested Starred Songs.\n"); printf("[SocketHandler] Client requested Starred Songs.\n");
@@ -202,6 +203,36 @@ void socketHandler_performAction(int id, char** retDataStr) {
opensubsonic_getStarred_struct_free(&getStarredStruct); // Free Struct opensubsonic_getStarred_struct_free(&getStarredStruct); // Free Struct
break; break;
case OSSP_SOCKET_ACTION_OSSPP_PREV:
//
break;
case OSSP_SOCKET_ACTION_OSSPP_PLAYPAUSE:
OSSPlayer_GstECont_Playbin3_PlayPause();
*retDataStr = strdup("OK");
break;
case OSSP_SOCKET_ACTION_OSSPP_NEXT:
OSSPlayer_GstECont_Playbin3_Stop();
*retDataStr = strdup("OK");
break;
case OSSP_SOCKET_ACTION_OSSPP_OUTVOLUME:
printf("OUT VOL CHANGED!\n");
int vol = 0;
OSS_Pioj(&vol, *cliReqJson, "vol");
printf("New vol: %d\n", vol);
float f_vol = (float)vol / 100.0f;
printf("New f_vol: %f\n", f_vol);
OSSPlayer_GstECont_OutVolume_set(f_vol);
*retDataStr = strdup("OK");
break;
default: default:
printf("[SocketHandler] Unknown action.\n"); printf("[SocketHandler] Unknown action.\n");
break; break;
+5
View File
@@ -6,6 +6,11 @@
#define OSSP_SOCKET_ACTION_NOW_PLAYING 201 #define OSSP_SOCKET_ACTION_NOW_PLAYING 201
#define OSSP_SOCKET_ACTION_STATS 202 #define OSSP_SOCKET_ACTION_STATS 202
#define OSSP_SOCKET_ACTION_OSSPP_PREV 301 // (OSSPP -> OSSP Player)
#define OSSP_SOCKET_ACTION_OSSPP_PLAYPAUSE 302
#define OSSP_SOCKET_ACTION_OSSPP_NEXT 303
#define OSSP_SOCKET_ACTION_OSSPP_OUTVOLUME 304
typedef struct { typedef struct {
uint32_t signature; uint32_t signature;
uint32_t size; uint32_t size;