Unify duplicated code regarding sending command to server 70/223470/8
authorhj kim <backto.kim@samsung.com>
Thu, 30 Jan 2020 04:55:20 +0000 (13:55 +0900)
committerhj kim <backto.kim@samsung.com>
Fri, 31 Jan 2020 01:39:27 +0000 (10:39 +0900)
Change-Id: I49fe79c1dbed385b715d88331ffc615d290427a8

include/scmirroring_private.h
src/scmirroring_primary_sink.c
src/scmirroring_src.c
src/scmirroring_util.c

index 85731fb43271771f45c968dff4aac46c46001569..af9f8b5806b129397d19a340c382b84534bd9ca2 100644 (file)
@@ -292,6 +292,15 @@ int _scmirroring_sink_get_negotiated_audio_channel(MMHandleType handle, int *cha
 int _scmirroring_sink_get_negotiated_audio_sample_rate(MMHandleType handle, int *sample_rate);
 int _scmirroring_sink_get_negotiated_audio_bitwidth(MMHandleType handle, int *bitwidth);
 int _scmirroring_sink_get_current_state(MMHandleType handle, scmirroring_sink_state_e *state);
+int _scmirroring_src_send_cmd_to_server(int sock, const char *cmd);
+int _scmirroring_src_send_set_cm(int sock, int connect_mode);
+int _scmirroring_src_send_set_ip(int sock, const char *ip, const char *port);
+int _scmirroring_src_send_set_reso(int sock, int resolution);
+int _scmirroring_src_send_set_multisink(int sock, scmirroring_multisink_e multisink);
+int _scmirroring_src_send_set_coupling_mode(int sock, scmirroring_coupling_mode_e coupling_mode);
+int _scmirroring_src_send_set_direct_streaming(int sock, scmirroring_direct_streaming_e direct_streaming, const char *filesrc);
+int _scmirroring_src_send_switch_transport(int sock, scmirroring_av_transport_e av_transport);
+
 
 #ifdef __cplusplus
 }
index a70992873c7427a599312104c94a95633b1a6420..5b0f3fec7b7d9f1004d92c5099388d9e80340b3f 100644 (file)
@@ -430,36 +430,6 @@ static gboolean __scmirroring_primary_src_callback_call(gpointer data)
        return FALSE;
 }
 
-static int __scmirroring_primary_src_send_cmd_to_server(scmirroring_primary_sink_s *scmirroring, const char *cmd)
-{
-       int ret = SCMIRRORING_ERROR_NONE;
-       char *_cmd = NULL;
-       int _cmdLen = 0;
-
-       scmirroring_retvm_if(scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is NULL");
-       scmirroring_retvm_if(cmd == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "cmd is NULL");
-
-       _cmd = g_strdup(cmd);
-       if (_cmd == NULL) {
-               scmirroring_error("Out of memory for command buffer");
-               return SCMIRRORING_ERROR_OUT_OF_MEMORY;
-       }
-
-       _cmdLen = strlen(_cmd) + 1;
-       if (write(scmirroring->sock, _cmd, _cmdLen) != _cmdLen) {
-               char buf[255] = {0, };
-               strerror_r(errno, buf, sizeof(buf));
-               scmirroring_error("sendto failed [%s]", buf);
-               ret = SCMIRRORING_ERROR_INVALID_OPERATION;
-       } else {
-               scmirroring_debug("Sent message [%s] successfully", _cmd);
-       }
-
-       SCMIRRORING_SAFE_G_FREE(_cmd);
-
-       return ret;
-}
-
 static int __miracast_server_launch(scmirroring_primary_sink_s *scmirroring)
 {
        int ret = SCMIRRORING_ERROR_NONE;
@@ -669,149 +639,6 @@ gboolean __scmirroring_primary_src_read_cb(GIOChannel *src, GIOCondition conditi
        return TRUE;
 }
 
-static int __scmirroring_primary_src_send_set_cm(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set connection mode to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET CM %d", _scmirroring->connect_mode);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_primary_src_send_set_ip(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set IP and Port to server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET IP %s:%s", _scmirroring->ip, _scmirroring->port);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_primary_src_send_set_reso(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set resolution to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET RESO %d", _scmirroring->resolution);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_primary_src_send_set_multisink(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set resolution to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET MULTISINK %d", _scmirroring->multisink);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_primary_src_send_set_direct_streaming(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set resolution to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-
-       scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       cmd = g_strdup_printf("SET STREAMING %d %s", _scmirroring->direct_streaming, _scmirroring->filesrc);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_FREE(cmd);
-               scmirroring_error("Failed to enable direct streaming [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_primary_src_send_set_coupling_mode(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set coupling mode to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET COUPLING_MODE %d", _scmirroring->coupling_mode);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_primary_src_send_switch_transport(scmirroring_primary_sink_h scmirroring)
-{
-       /* Set tranport protocol to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
-       const char *tr = _scmirroring->av_transport == SCMIRRORING_AV_TRANSPORT_UDP ? "UDP" : "TCP";
-
-       cmd = g_strdup_printf("SWITCH %s", tr);
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
 int scmirroring_primary_src_create(scmirroring_primary_sink_h *scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
@@ -871,7 +698,7 @@ int scmirroring_primary_src_set_connection_mode(scmirroring_primary_sink_h scmir
        _scmirroring->connect_mode = connect_mode;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_primary_src_send_set_cm(_scmirroring);
+               ret = _scmirroring_src_send_set_cm(_scmirroring->sock, _scmirroring->connect_mode);
 
        scmirroring_debug_fleave();
 
@@ -953,7 +780,7 @@ int scmirroring_primary_src_set_ip_and_port(scmirroring_primary_sink_h scmirrori
        scmirroring_retvm_if(_scmirroring->port == NULL, SCMIRRORING_ERROR_OUT_OF_MEMORY, "Out of memory for PORT");
 
        if (_scmirroring->connected)
-               ret = __scmirroring_primary_src_send_set_ip(_scmirroring);
+               ret = _scmirroring_src_send_set_ip(_scmirroring->sock, _scmirroring->ip, _scmirroring->port);
 
        scmirroring_debug_fleave();
 
@@ -980,7 +807,7 @@ int scmirroring_primary_src_set_resolution(scmirroring_primary_sink_h scmirrorin
        _scmirroring->resolution = resolution;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_primary_src_send_set_reso(_scmirroring);
+               ret = _scmirroring_src_send_set_reso(_scmirroring->sock, _scmirroring->resolution);
 
        scmirroring_debug_fleave();
 
@@ -1028,7 +855,7 @@ int scmirroring_primary_src_set_multisink_ability(scmirroring_primary_sink_h scm
        _scmirroring->multisink = multisink;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_primary_src_send_set_multisink(_scmirroring);
+               ret = _scmirroring_src_send_set_multisink(_scmirroring->sock, _scmirroring->multisink);
 
        scmirroring_debug_fleave();
 
@@ -1137,13 +964,13 @@ try:
        __scmirroring_primary_src_set_callback_info(_scmirroring, SCMIRRORING_ERROR_NONE, SCMIRRORING_STATE_READY);
 
        if ((_scmirroring->ip != NULL) || (_scmirroring->port != NULL)) {
-               ret = __scmirroring_primary_src_send_set_ip(_scmirroring);
-               ret = __scmirroring_primary_src_send_set_cm(_scmirroring);
-               ret = __scmirroring_primary_src_send_set_reso(_scmirroring);
+               ret = _scmirroring_src_send_set_ip(_scmirroring->sock, _scmirroring->ip, _scmirroring->port);
+               ret = _scmirroring_src_send_set_cm(_scmirroring->sock, _scmirroring->connect_mode);
+               ret = _scmirroring_src_send_set_reso(_scmirroring->sock, _scmirroring->resolution);
        }
 
        if (_scmirroring->multisink == SCMIRRORING_MULTISINK_ENABLE)
-               ret = __scmirroring_primary_src_send_set_multisink(_scmirroring);
+               ret = _scmirroring_src_send_set_multisink(_scmirroring->sock, _scmirroring->multisink);
 
        scmirroring_debug_fleave();
 
@@ -1163,7 +990,7 @@ int scmirroring_primary_src_disconnect(scmirroring_primary_sink_h scmirroring)
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
        scmirroring_retvm_if(_scmirroring->connected == NOT_CONNECTED_TO_SERVER, SCMIRRORING_ERROR_NONE, "Already disconnected");
 
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_DESTROY);
+       ret = _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_DESTROY);
        if (ret != SCMIRRORING_ERROR_NONE)
                scmirroring_error("Failed to destroy miracast server [%d]", ret);
 
@@ -1190,60 +1017,33 @@ int scmirroring_primary_src_start(scmirroring_primary_sink_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_START);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to start [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_START);
 }
 
 int scmirroring_primary_src_pause(scmirroring_primary_sink_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_PAUSE);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to pause [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_PAUSE);
 }
 
 int scmirroring_primary_src_resume(scmirroring_primary_sink_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_RESUME);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to resume [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_RESUME);
 }
 
 int scmirroring_primary_src_set_direct_streaming(scmirroring_primary_sink_h scmirroring_primary_src,
@@ -1273,7 +1073,7 @@ int scmirroring_primary_src_set_direct_streaming(scmirroring_primary_sink_h scmi
                return SCMIRRORING_ERROR_OUT_OF_MEMORY;
        }
 
-       ret = __scmirroring_primary_src_send_set_direct_streaming(_scmirroring);
+       ret = _scmirroring_src_send_set_direct_streaming(_scmirroring->sock,  _scmirroring->direct_streaming, _scmirroring->filesrc);
 
        scmirroring_debug_fleave();
 
@@ -1301,7 +1101,7 @@ int scmirroring_primary_src_set_coupling_mode(scmirroring_primary_sink_h scmirro
        _scmirroring->coupling_mode = coupling_mode;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_primary_src_send_set_coupling_mode(_scmirroring);
+               ret = _scmirroring_src_send_set_coupling_mode(_scmirroring->sock, coupling_mode);
 
        scmirroring_debug_fleave();
 
@@ -1327,7 +1127,7 @@ int scmirroring_primary_src_AV_transport_switch(scmirroring_primary_sink_h scmir
 
        _scmirroring->av_transport = transport;
 
-       ret = __scmirroring_primary_src_send_switch_transport(_scmirroring);
+       ret = _scmirroring_src_send_switch_transport(_scmirroring->sock, transport);
 
        scmirroring_debug_fleave();
 
@@ -1338,20 +1138,11 @@ int scmirroring_primary_src_stop(scmirroring_primary_sink_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_primary_sink_s *_scmirroring = (scmirroring_primary_sink_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_primary_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_STOP);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to be stop [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_STOP);
 }
 
 int scmirroring_primary_src_destroy(scmirroring_primary_sink_h scmirroring)
index ab2a12eb289b60d500f2b71b5a40273250144582..dc3e5ffb0db84d05678d7af89524567818f2f2a3 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
 *
@@ -69,36 +68,6 @@ static gboolean __scmirroring_src_callback_call(gpointer data)
        return FALSE;
 }
 
-static int __scmirroring_src_send_cmd_to_server(scmirroring_src_s *scmirroring, const char *cmd)
-{
-       int ret = SCMIRRORING_ERROR_NONE;
-       char *_cmd = NULL;
-       int _cmdLen = 0;
-
-       scmirroring_retvm_if(scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is NULL");
-       scmirroring_retvm_if(cmd == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "cmd is NULL");
-
-       _cmd = g_strdup(cmd);
-       if (_cmd == NULL) {
-               scmirroring_error("Out of memory for command buffer");
-               return SCMIRRORING_ERROR_OUT_OF_MEMORY;
-       }
-
-       _cmdLen = strlen(_cmd) + 1;
-       if (write(scmirroring->sock, _cmd, _cmdLen) != _cmdLen) {
-               char buf[255] = {0, };
-               strerror_r(errno, buf, sizeof(buf));
-               scmirroring_error("sendto failed [%s]", buf);
-               ret = SCMIRRORING_ERROR_INVALID_OPERATION;
-       } else {
-               scmirroring_debug("Sent message [%s] successfully", _cmd);
-       }
-
-       SCMIRRORING_SAFE_G_FREE(_cmd);
-
-       return ret;
-}
-
 static int __miracast_server_launch(scmirroring_src_s *scmirroring)
 {
        int ret = SCMIRRORING_ERROR_NONE;
@@ -294,149 +263,6 @@ gboolean __scmirroring_src_read_cb(GIOChannel *src, GIOCondition condition, gpoi
        return TRUE;
 }
 
-static int __scmirroring_src_send_set_cm(scmirroring_src_h scmirroring)
-{
-       /* Set connection mode to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET CM %d", _scmirroring->connect_mode);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_src_send_set_ip(scmirroring_src_h scmirroring)
-{
-       /* Set IP and Port to server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET IP %s:%s", _scmirroring->ip, _scmirroring->port);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_src_send_set_reso(scmirroring_src_h scmirroring)
-{
-       /* Set resolution to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET RESO %d", _scmirroring->resolution);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_src_send_set_multisink(scmirroring_src_h scmirroring)
-{
-       /* Set resolution to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET MULTISINK %d", _scmirroring->multisink);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_src_send_set_coupling_mode(scmirroring_src_h scmirroring)
-{
-       /* Set coupling mode to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-
-       cmd = g_strdup_printf("SET COUPLING_MODE %d", _scmirroring->coupling_mode);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_src_send_set_direct_streaming(scmirroring_src_h scmirroring)
-{
-       /* Set resolution to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-
-       scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       cmd = g_strdup_printf("SET STREAMING %d %s", _scmirroring->direct_streaming, _scmirroring->filesrc);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_FREE(cmd);
-               scmirroring_error("Failed to enable direct streaming [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_FREE(cmd);
-
-       return ret;
-}
-
-static int __scmirroring_src_send_switch_transport(scmirroring_src_h scmirroring)
-{
-       /* Set tranport protocol to miracast server */
-       char *cmd = NULL;
-       int ret = SCMIRRORING_ERROR_NONE;
-       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
-       const char *tr = _scmirroring->av_transport == SCMIRRORING_AV_TRANSPORT_UDP ? "UDP" : "TCP";
-
-       cmd = g_strdup_printf("SWITCH %s", tr);
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, cmd);
-       if (ret != SCMIRRORING_ERROR_NONE) {
-               SCMIRRORING_SAFE_G_FREE(cmd);
-               scmirroring_error("Failed to be ready [%d]", ret);
-               return SCMIRRORING_ERROR_INVALID_OPERATION;
-       }
-
-       SCMIRRORING_SAFE_G_FREE(cmd);
-
-       return ret;
-}
-
 int scmirroring_src_create(scmirroring_src_h *scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
@@ -495,7 +321,7 @@ int scmirroring_src_set_connection_mode(scmirroring_src_h scmirroring, scmirrori
        _scmirroring->connect_mode = connect_mode;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_src_send_set_cm(_scmirroring);
+               ret = _scmirroring_src_send_set_cm(_scmirroring->sock, _scmirroring->connect_mode);
 
        scmirroring_debug_fleave();
 
@@ -577,7 +403,7 @@ int scmirroring_src_set_ip_and_port(scmirroring_src_h scmirroring, const char *i
        scmirroring_retvm_if(_scmirroring->port == NULL, SCMIRRORING_ERROR_OUT_OF_MEMORY, "Out of memory for PORT");
 
        if (_scmirroring->connected)
-               ret = __scmirroring_src_send_set_ip(_scmirroring);
+               ret = _scmirroring_src_send_set_ip(_scmirroring->sock, _scmirroring->ip, _scmirroring->port);
 
        scmirroring_debug_fleave();
 
@@ -604,7 +430,7 @@ int scmirroring_src_set_resolution(scmirroring_src_h scmirroring, scmirroring_re
        _scmirroring->resolution = resolution;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_src_send_set_reso(_scmirroring);
+               ret = _scmirroring_src_send_set_reso(_scmirroring->sock, _scmirroring->resolution);
 
        scmirroring_debug_fleave();
 
@@ -652,7 +478,7 @@ int scmirroring_src_set_multisink_ability(scmirroring_src_h scmirroring, scmirro
        _scmirroring->multisink = multisink;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_src_send_set_multisink(_scmirroring);
+               ret = _scmirroring_src_send_set_multisink(_scmirroring->sock, _scmirroring->multisink);
 
        scmirroring_debug_fleave();
 
@@ -678,7 +504,7 @@ int scmirroring_src_set_coupling_mode(scmirroring_src_h scmirroring, scmirroring
        _scmirroring->coupling_mode = coupling_mode;
 
        if (_scmirroring->connected)
-               ret = __scmirroring_src_send_set_coupling_mode(_scmirroring);
+               ret = _scmirroring_src_send_set_coupling_mode(_scmirroring->sock, coupling_mode);
 
        scmirroring_debug_fleave();
 
@@ -788,13 +614,13 @@ try:
        __scmirroring_src_set_callback_info(_scmirroring, SCMIRRORING_ERROR_NONE, SCMIRRORING_STATE_READY);
 
        if ((_scmirroring->ip != NULL) || (_scmirroring->port != NULL)) {
-               ret = __scmirroring_src_send_set_ip(_scmirroring);
-               ret = __scmirroring_src_send_set_cm(_scmirroring);
-               ret = __scmirroring_src_send_set_reso(_scmirroring);
+               ret = _scmirroring_src_send_set_ip(_scmirroring->sock, _scmirroring->ip, _scmirroring->port);
+               ret = _scmirroring_src_send_set_cm(_scmirroring->sock, _scmirroring->connect_mode);
+               ret = _scmirroring_src_send_set_reso(_scmirroring->sock, _scmirroring->resolution);
        }
 
        if (_scmirroring->multisink == SCMIRRORING_MULTISINK_ENABLE)
-               ret = __scmirroring_src_send_set_multisink(_scmirroring);
+               ret = _scmirroring_src_send_set_multisink(_scmirroring->sock, _scmirroring->multisink);
 
        scmirroring_debug_fleave();
 
@@ -814,7 +640,7 @@ int scmirroring_src_disconnect(scmirroring_src_h scmirroring)
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
        scmirroring_retvm_if(_scmirroring->connected == NOT_CONNECTED_TO_SERVER, SCMIRRORING_ERROR_NONE, "Already disconnected");
 
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_DESTROY);
+       ret = _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_DESTROY);
        if (ret != SCMIRRORING_ERROR_NONE)
                scmirroring_error("Failed to destroy miracast server [%d]", ret);
 
@@ -841,60 +667,33 @@ int scmirroring_src_start(scmirroring_src_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_START);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to start [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_START);
 }
 
 int scmirroring_src_pause(scmirroring_src_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_PAUSE);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to pause [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_PAUSE);
 }
 
 int scmirroring_src_resume(scmirroring_src_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_RESUME);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to resume [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_RESUME);
 }
 
 int scmirroring_src_set_direct_streaming(scmirroring_src_h scmirroring_src,
@@ -924,15 +723,14 @@ int scmirroring_src_set_direct_streaming(scmirroring_src_h scmirroring_src,
                return SCMIRRORING_ERROR_OUT_OF_MEMORY;
        }
 
-       ret = __scmirroring_src_send_set_direct_streaming(_scmirroring);
+       ret = _scmirroring_src_send_set_direct_streaming(_scmirroring->sock,  _scmirroring->direct_streaming, _scmirroring->filesrc);
 
        scmirroring_debug_fleave();
 
        return ret;
 }
 
-int scmirroring_src_AV_transport_switch(scmirroring_src_h scmirroring,
-               scmirroring_av_transport_e transport)
+int scmirroring_src_AV_transport_switch(scmirroring_src_h scmirroring, scmirroring_av_transport_e transport)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
@@ -950,7 +748,7 @@ int scmirroring_src_AV_transport_switch(scmirroring_src_h scmirroring,
 
        _scmirroring->av_transport = transport;
 
-       ret = __scmirroring_src_send_switch_transport(_scmirroring);
+       ret = _scmirroring_src_send_switch_transport(_scmirroring->sock, transport);
 
        scmirroring_debug_fleave();
 
@@ -961,20 +759,11 @@ int scmirroring_src_stop(scmirroring_src_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
 
-       int ret = SCMIRRORING_ERROR_NONE;
        scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
 
-       scmirroring_debug_fenter();
-
        scmirroring_retvm_if(!__is_valid_handle(_scmirroring), SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring is invalid");
 
-       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_STOP);
-       if (ret != SCMIRRORING_ERROR_NONE)
-               scmirroring_error("Failed to be stop [%d]", ret);
-
-       scmirroring_debug_fleave();
-
-       return ret;
+       return _scmirroring_src_send_cmd_to_server(_scmirroring->sock, SCMIRRORING_STATE_CMD_STOP);
 }
 
 int scmirroring_src_destroy(scmirroring_src_h scmirroring)
index 75f2a0f95c52d2377e3d88291478a932c15a57cb..91aa36f07697c3291443ce871bf61911db382290 100644 (file)
@@ -15,6 +15,7 @@
 */
 
 #include <stdio.h>
+#include <unistd.h>
 #include <scmirroring_private.h>
 
 scmirroring_error_e _scmirroring_error_convert(const char *func, int error)
@@ -387,3 +388,116 @@ int _scmirroring_sink_get_current_state(MMHandleType handle, scmirroring_sink_st
 
        return SCMIRRORING_ERROR_NONE;
 }
+
+int _scmirroring_src_send_cmd_to_server(int sock, const char *cmd)
+{
+       int cmd_len = 0;
+
+       scmirroring_retvm_if(!cmd, SCMIRRORING_ERROR_INVALID_PARAMETER, "cmd is NULL");
+
+       cmd_len = strlen(cmd) + 1;
+       if (write(sock, cmd, cmd_len) != cmd_len) {
+               char buf[255] = {0, };
+               strerror_r(errno, buf, sizeof(buf));
+               scmirroring_error("sendto failed [%s] [%s]", buf, cmd);
+               return SCMIRRORING_ERROR_INVALID_OPERATION;
+       }
+
+       scmirroring_debug("Sent message [%s] successfully", cmd);
+
+       return SCMIRRORING_ERROR_NONE;
+}
+
+int _scmirroring_src_send_set_cm(int sock, int connect_mode)
+{
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       cmd = g_strdup_printf("SET CM %d", connect_mode);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_G_FREE(cmd);
+
+       return ret;
+}
+
+int _scmirroring_src_send_set_ip(int sock, const char *ip, const char *port)
+{
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       cmd = g_strdup_printf("SET IP %s:%s", ip, port);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_G_FREE(cmd);
+
+       return ret;
+}
+
+int _scmirroring_src_send_set_reso(int sock, int resolution)
+{
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       cmd = g_strdup_printf("SET RESO %d", resolution);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_G_FREE(cmd);
+
+       return ret;
+}
+
+int _scmirroring_src_send_set_multisink(int sock, scmirroring_multisink_e multisink)
+{
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       cmd = g_strdup_printf("SET MULTISINK %d", multisink);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_G_FREE(cmd);
+
+       return ret;
+}
+
+int _scmirroring_src_send_set_coupling_mode(int sock, scmirroring_coupling_mode_e coupling_mode)
+{
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       cmd = g_strdup_printf("SET COUPLING_MODE %d", coupling_mode);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_G_FREE(cmd);
+
+       return ret;
+}
+
+int _scmirroring_src_send_set_direct_streaming(int sock, scmirroring_direct_streaming_e direct_streaming, const char *filesrc)
+{
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       cmd = g_strdup_printf("SET STREAMING %d %s", direct_streaming, filesrc);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_FREE(cmd);
+
+       return ret;
+}
+
+int _scmirroring_src_send_switch_transport(int sock, scmirroring_av_transport_e av_transport)
+{
+
+       char *cmd = NULL;
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       const char *tr = av_transport == SCMIRRORING_AV_TRANSPORT_UDP ? "UDP" : "TCP";
+
+       cmd = g_strdup_printf("SWITCH %s", tr);
+       ret = _scmirroring_src_send_cmd_to_server(sock, cmd);
+
+       SCMIRRORING_SAFE_G_FREE(cmd);
+
+       return ret;
+}