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
}
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;
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);
_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();
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();
_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();
_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();
__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();
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);
{
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,
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();
_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();
_scmirroring->av_transport = transport;
- ret = __scmirroring_primary_src_send_switch_transport(_scmirroring);
+ ret = _scmirroring_src_send_switch_transport(_scmirroring->sock, transport);
scmirroring_debug_fleave();
{
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)
-
/*
* Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
*
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;
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);
_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();
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();
_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();
_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();
_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();
__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();
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);
{
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,
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);
_scmirroring->av_transport = transport;
- ret = __scmirroring_src_send_switch_transport(_scmirroring);
+ ret = _scmirroring_src_send_switch_transport(_scmirroring->sock, transport);
scmirroring_debug_fleave();
{
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)
*/
#include <stdio.h>
+#include <unistd.h>
#include <scmirroring_private.h>
scmirroring_error_e _scmirroring_error_convert(const char *func, int error)
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;
+}