From: Sangkyu Park Date: Tue, 16 Jun 2015 07:07:41 +0000 (+0900) Subject: [sink/src] Update code by tizen coding convention. X-Git-Tag: submit/tizen/20150617.013118^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aece6b69865e36dbd0a14ac0aa091c49c7a0f2c8;p=platform%2Fcore%2Fapi%2Fscreen-mirroring.git [sink/src] Update code by tizen coding convention. [sink] Impelement pause/resume/set resolution API. [src] Fix prevent defects. Change-Id: Ib094ae32c4112da936f745c65b8515f76fef42dc Signed-off-by: Sangkyu Park --- diff --git a/include/scmirroring_private.h b/include/scmirroring_private.h index 824238d..3b00942 100755 --- a/include/scmirroring_private.h +++ b/include/scmirroring_private.h @@ -38,44 +38,53 @@ extern "C" { #endif #define LOG_TAG "CAPI_MEDIA_SCMIRRORING" +#define FONT_COLOR_RESET "\033[0m" +#define FONT_COLOR_RED "\033[31m" +#define FONT_COLOR_GREEN "\033[32m" +#define FONT_COLOR_YELLOW "\033[33m" +#define FONT_COLOR_BLUE "\033[34m" +#define FONT_COLOR_PURPLE "\033[35m" +#define FONT_COLOR_CYAN "\033[36m" +#define FONT_COLOR_GRAY "\033[37m" + #define scmirroring_debug(fmt, arg...) do { \ - LOGD(""fmt"", ##arg); \ - } while (0) + LOGD(FONT_COLOR_RESET""fmt"", ##arg); \ + } while (0) #define scmirroring_info(fmt, arg...) do { \ - LOGI(""fmt"", ##arg); \ - } while (0) + LOGI(FONT_COLOR_GREEN""fmt""FONT_COLOR_RESET, ##arg); \ + } while (0) #define scmirroring_error(fmt, arg...) do { \ - LOGE(""fmt"", ##arg); \ - } while (0) + LOGE(FONT_COLOR_RED""fmt""FONT_COLOR_RESET, ##arg); \ + } while (0) #define scmirroring_debug_fenter() do { \ - LOGD(""); \ - } while (0) + LOGD(FONT_COLOR_RESET""); \ + } while (0) #define scmirroring_debug_fleave() do { \ - LOGD(""); \ - } while (0) + LOGD(FONT_COLOR_RESET""); \ + } while (0) #define scmirroring_error_fenter() do { \ - LOGE("NO-ERROR : "); \ - } while (0) + LOGE(FONT_COLOR_RESET"NO-ERROR : "); \ + } while (0) #define scmirroring_error_fleave() do { \ - LOGE("NO-ERROR : "); \ - } while (0) + LOGE(FONT_COLOR_RESET"NO-ERROR : "); \ + } while (0) #define scmirroring_retvm_if(expr, val, fmt, arg...) do { \ if(expr) { \ - LOGE(""fmt"", ##arg); \ + LOGE(FONT_COLOR_RED""fmt""FONT_COLOR_RESET, ##arg); \ return (val); \ } \ } while (0) #define scmirroring_sucure_info(fmt, arg...) do { \ - SECURE_LOGI(""fmt"", ##arg); \ - } while (0) + SECURE_LOGI(FONT_COLOR_GREEN""fmt""FONT_COLOR_RESET, ##arg); \ + } while (0) #define SCMIRRORING_SAFE_FREE(src) { if(src) {free(src); src = NULL;}} #define STRING_VALID(str) ((str != NULL && strlen(str) > 0) ? TRUE : FALSE) @@ -86,24 +95,21 @@ extern "C" { #define SCMIRRORING_STATE_CMD_STOP "STOP" #define SCMIRRORING_STATE_CMD_DESTROY "DESTROY" -typedef struct -{ +typedef struct { int error_code; int src_state; void *user_data; scmirroring_state_cb state_cb; }scmirroring_state_cb_s; -typedef struct -{ +typedef struct { int error_code; int sink_state; void *user_data; scmirroring_sink_state_cb state_cb; }scmirroring_sink_state_cb_s; -typedef struct -{ +typedef struct { char *ip; char *port; bool use_hdcp; @@ -119,8 +125,7 @@ typedef struct scmirroring_state_cb_s *scmirroring_state_cb; } scmirroring_src_s; -typedef struct -{ +typedef struct { MMHandleType mm_handle; char *ip; char *port; diff --git a/include/scmirroring_sink.h b/include/scmirroring_sink.h index 38d7f30..4278368 100755 --- a/include/scmirroring_sink.h +++ b/include/scmirroring_sink.h @@ -108,14 +108,14 @@ int scmirroring_sink_set_state_changed_cb(scmirroring_sink_h scmirroring_sink, s int scmirroring_sink_set_ip_and_port(scmirroring_sink_h scmirroring_sink, const char *ip, const char *port); /** - * @brief Pass window handle created by application and surface type (x11/evas) + * @brief Pass window handle created by application and surface type(x11/evas) * @details This function will use handle created by the application to set the overlay & * display on the surface passed by the application * * @since_tizen 2.4 * * @param[in] scmirroring_sink The handle to the screen mirroring sink - * @param[in] type Surface type (x11/evas) + * @param[in] type Surface type(x11/evas) * @param[in] display_surface The display_surface created by application to force sink to display content over it * @return @c 0 on success, * otherwise a negative error value @@ -134,8 +134,11 @@ int scmirroring_sink_set_ip_and_port(scmirroring_sink_h scmirroring_sink, const int scmirroring_sink_set_display(scmirroring_sink_h scmirroring_sink, scmirroring_display_type_e type, void* display_surface); /** - * @brief Sets resolution of screen mirroring sink - * @details This function sets resolution of screen mirroring sink. + * @brief Sets resolutions of screen mirroring sink + * @details This function sets resolutions of screen mirroring sink using scmirroring_resolution_e as following. + * (ex. SCMIRRORING_RESOLUTION_1920x1080_P30 | SCMIRRORING_RESOLUTION_1280x720_P30) + * Use it only when you want to set specific resolutions but if sreen mirroring source dose not support the resolutions which you set, + * the screen mirroring sink will be disconnected. * * @since_tizen 2.4 * @@ -155,7 +158,7 @@ int scmirroring_sink_set_display(scmirroring_sink_h scmirroring_sink, scmirrorin * * @see scmirroring_sink_create() */ -int scmirroring_sink_set_resolution(scmirroring_sink_h scmirroring_sink, scmirroring_resolution_e resolution); +int scmirroring_sink_set_resolution(scmirroring_sink_h scmirroring_sink, int resolution); /** * @brief Prepares the screen mirroring sink handle and allocates specific resources. @@ -215,7 +218,7 @@ int scmirroring_sink_prepare(scmirroring_sink_h scmirroring_sink); int scmirroring_sink_connect(scmirroring_sink_h scmirroring_sink); /** - * @brief Start receiving data from the SCMIRRORING source and display it (mirror) + * @brief Start receiving data from the SCMIRRORING source and display it(mirror) * * @since_tizen 2.4 * @privlevel public diff --git a/include/scmirroring_src_ini.h b/include/scmirroring_src_ini.h index 8762dcf..d3be138 100755 --- a/include/scmirroring_src_ini.h +++ b/include/scmirroring_src_ini.h @@ -20,7 +20,7 @@ #include #ifdef __cplusplus - extern "C" { +extern "C" { #endif #define ERROR_NONE 0 @@ -33,32 +33,29 @@ #define SCMIRRORING_SRC_INI_MAX_STRLEN 80 -typedef enum __scmirroring_ini_videosink_element -{ - SCMIRRORING_INI_VSINK_V4l2SINK = 0, - SCMIRRORING_INI_VSINK_XIMAGESINK, - SCMIRRORING_INI_VSINK_XVIMAGESINK, - SCMIRRORING_INI_VSINK_FAKESINK, - SCMIRRORING_INI_VSINK_EVASIMAGESINK, - SCMIRRORING_INI_VSINK_GLIMAGESINK, - SCMIRRORING_INI_VSINK_NUM +typedef enum __scmirroring_ini_videosink_element { + SCMIRRORING_INI_VSINK_V4l2SINK = 0, + SCMIRRORING_INI_VSINK_XIMAGESINK, + SCMIRRORING_INI_VSINK_XVIMAGESINK, + SCMIRRORING_INI_VSINK_FAKESINK, + SCMIRRORING_INI_VSINK_EVASIMAGESINK, + SCMIRRORING_INI_VSINK_GLIMAGESINK, + SCMIRRORING_INI_VSINK_NUM }SCMIRRORING_INI_VSINK_ELEMENT; -typedef enum __scmirroring_ini_videosrc_element -{ - SCMIRRORING_INI_VSRC_XVIMAGESRC, - SCMIRRORING_INI_VSRC_FILESRC, - SCMIRRORING_INI_VSRC_CAMERASRC, - SCMIRRORING_INI_VSRC_VIDEOTESTSRC, - SCMIRRORING_INI_VSRC_NUM +typedef enum __scmirroring_ini_videosrc_element { + SCMIRRORING_INI_VSRC_XVIMAGESRC, + SCMIRRORING_INI_VSRC_FILESRC, + SCMIRRORING_INI_VSRC_CAMERASRC, + SCMIRRORING_INI_VSRC_VIDEOTESTSRC, + SCMIRRORING_INI_VSRC_NUM }SCMIRRORING_INI_VSRC_ELEMENT; -typedef enum __scmirroring_ini_session_mode -{ - SCMIRRORING_INI_AUDIO_VIDEO_MUXED, - SCMIRRORING_INI_VIDEO_ONLY, - SCMIRRORING_INI_AUDIO_ONLY, - SCMIRRORING_INI_AUDIO_VIDEO_SAPERATE +typedef enum __scmirroring_ini_session_mode { + SCMIRRORING_INI_AUDIO_VIDEO_MUXED, + SCMIRRORING_INI_VIDEO_ONLY, + SCMIRRORING_INI_AUDIO_ONLY, + SCMIRRORING_INI_AUDIO_VIDEO_SAPERATE }SCMIRRORING_INI_SESSION_MODE; @@ -71,32 +68,31 @@ typedef enum __scmirroring_ini_session_mode */ /* @ mark means the item has tested */ -typedef struct __scmirroring_src_ini -{ - /* general */ - SCMIRRORING_INI_VSRC_ELEMENT videosrc_element; - gint session_mode; - SCMIRRORING_INI_VSINK_ELEMENT videosink_element; // @ - gchar name_of_video_converter[SCMIRRORING_SRC_INI_MAX_STRLEN]; - gboolean skip_rescan; // @ - gboolean generate_dot; // @ - gboolean provide_clock; // @ - gint mtu_size; - - gchar name_of_audio_device[SCMIRRORING_SRC_INI_MAX_STRLEN]; - gint audio_latency_time; - gint audio_buffer_time; - gint audio_do_timestamp; - guint64 video_reso_supported; - guint decide_udp_bitrate[21]; - gint video_native_resolution; - gint hdcp_enabled; - guint8 uibc_gen_capability; - - gchar gst_param[SCMIRRORING_SRC_INI_GST_START_PARAMS_NUM][256]; // @ - gboolean disable_segtrap; - - gint dump_ts; +typedef struct __scmirroring_src_ini { + /* general */ + SCMIRRORING_INI_VSRC_ELEMENT videosrc_element; + gint session_mode; + SCMIRRORING_INI_VSINK_ELEMENT videosink_element; + gchar name_of_video_converter[SCMIRRORING_SRC_INI_MAX_STRLEN]; + gboolean skip_rescan; + gboolean generate_dot; + gboolean provide_clock; + gint mtu_size; + + gchar name_of_audio_device[SCMIRRORING_SRC_INI_MAX_STRLEN]; + gint audio_latency_time; + gint audio_buffer_time; + gint audio_do_timestamp; + guint64 video_reso_supported; + guint decide_udp_bitrate[21]; + gint video_native_resolution; + gint hdcp_enabled; + guint8 uibc_gen_capability; + + gchar gst_param[SCMIRRORING_SRC_INI_GST_START_PARAMS_NUM][256]; + gboolean disable_segtrap; + + gint dump_ts; } scmirroring_src_ini_t; @@ -173,7 +169,7 @@ scmirroring_src_ini_get_structure(void); #ifdef __cplusplus - } +} #endif #endif diff --git a/include/scmirroring_type.h b/include/scmirroring_type.h index 3123ae3..8adb37c 100755 --- a/include/scmirroring_type.h +++ b/include/scmirroring_type.h @@ -49,8 +49,7 @@ typedef void *scmirroring_sink_h; * @brief Enumeration for screen mirroring error. * @since_tizen 2.4 */ -typedef enum -{ +typedef enum { SCMIRRORING_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ SCMIRRORING_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ SCMIRRORING_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ @@ -65,8 +64,7 @@ typedef enum * @brief Enumeration for screen mirroring source state. * @since_tizen 2.4 */ -typedef enum -{ +typedef enum { SCMIRRORING_STATE_NULL = 0, /**< Screen mirroring is created, but not realized yet */ SCMIRRORING_STATE_READY, /**< Screen mirroring is ready to play media */ SCMIRRORING_STATE_CONNECTION_WAIT, /**< Screen mirroring is waiting for connection */ @@ -82,8 +80,7 @@ typedef enum * @brief Enumeration for screen mirroring sink state. * @since_tizen 2.4 */ -typedef enum -{ +typedef enum { SCMIRRORING_SINK_STATE_NONE = 0, /**< Screen mirroring is not created yet */ SCMIRRORING_SINK_STATE_NULL, /**< Screen mirroring is created, but not prepared yet */ SCMIRRORING_SINK_STATE_PREPARED, /**< Screen mirroring is prepared to play media */ @@ -98,24 +95,23 @@ typedef enum * @brief Enumeration for screen mirroring resolution. * @since_tizen 2.4 */ -typedef enum -{ - SCMIRRORING_RESOLUTION_1920x1080_P30 = 0, /**< W-1920, H-1080, 30 fps*/ - SCMIRRORING_RESOLUTION_1280x720_P30, /**< W-1280, H-720, 30 fps*/ - SCMIRRORING_RESOLUTION_960x540_P30, /**< W-960, H-540, 30 fps*/ - SCMIRRORING_RESOLUTION_864x480_P30, /**< W-864, H-480, 30 fps*/ - SCMIRRORING_RESOLUTION_720x480_P60, /**< W-720, H-480, 30 fps*/ - SCMIRRORING_RESOLUTION_640x480_P60, /**< W-640, H-480, 60 fps*/ - SCMIRRORING_RESOLUTION_640x360_P30, /**< W-640, H-360, 30 fps*/ - SCMIRRORING_RESOLUTION_MAX, /* Number of resolution set */ +typedef enum { + SCMIRRORING_RESOLUTION_UNKNOWN = 0, + SCMIRRORING_RESOLUTION_1920x1080_P30 =(1 << 0), /**< W-1920, H-1080, 30 fps*/ + SCMIRRORING_RESOLUTION_1280x720_P30 =(1 << 1), /**< W-1280, H-720, 30 fps*/ + SCMIRRORING_RESOLUTION_960x540_P30 = (1 << 2), /**< W-960, H-540, 30 fps*/ + SCMIRRORING_RESOLUTION_864x480_P30 = (1 << 3), /**< W-864, H-480, 30 fps*/ + SCMIRRORING_RESOLUTION_720x480_P60 = (1 << 4), /**< W-720, H-480, 30 fps*/ + SCMIRRORING_RESOLUTION_640x480_P60 = (1 << 5), /**< W-640, H-480, 60 fps*/ + SCMIRRORING_RESOLUTION_640x360_P30 = (1 << 6), /**< W-640, H-360, 30 fps*/ + SCMIRRORING_RESOLUTION_MAX = 128, } scmirroring_resolution_e; /** * @brief Enumeration for screen mirroring connection mode. * @since_tizen 2.4 */ -typedef enum -{ +typedef enum { SCMIRRORING_CONNECTION_WIFI_DIRECT = 0, /**< Wi-Fi Direct*/ SCMIRRORING_CONNECTION_MAX, /* Number of Connection mode */ } scmirroring_connection_mode_e; @@ -124,8 +120,7 @@ typedef enum * @brief Enumeration for screen mirroring display surface type * @since_tizen 2.4 */ -typedef enum -{ +typedef enum { SCMIRRORING_DISPLAY_TYPE_OVERLAY = 0, /**< Use overlay surface to display streaming multimedia data */ SCMIRRORING_DISPLAY_TYPE_EVAS, /**< Use Evas pixmap surface to display streaming multimedia data */ SCMIRRORING_DISPLAY_TYPE_MAX @@ -145,7 +140,7 @@ typedef enum * * @see scmirroring_src_create() */ -typedef void (*scmirroring_state_cb)(scmirroring_error_e error, scmirroring_state_e state, void *user_data); +typedef void(*scmirroring_state_cb)(scmirroring_error_e error, scmirroring_state_e state, void *user_data); /** * @brief Called when each status is changed @@ -161,7 +156,7 @@ typedef void (*scmirroring_state_cb)(scmirroring_error_e error, scmirroring_stat * * @see scmirroring_sink_create() */ -typedef void (*scmirroring_sink_state_cb)(scmirroring_error_e error, scmirroring_sink_state_e state, void *user_data); +typedef void(*scmirroring_sink_state_cb)(scmirroring_error_e error, scmirroring_sink_state_e state, void *user_data); #ifdef __cplusplus } diff --git a/miracast_server/miracast_server.c b/miracast_server/miracast_server.c index fa7e8a8..e2638c7 100755 --- a/miracast_server/miracast_server.c +++ b/miracast_server/miracast_server.c @@ -50,18 +50,16 @@ GObject *g_server_object = NULL; static gint g_server_status = MIRACAST_WFD_SOURCE_OFF; static int __miracast_server_emit_status_signal(int status); -static const GDBusMethodInfo scmirroring_server_method_info_method = -{ +static const GDBusMethodInfo scmirroring_server_method_info_method = { -1, "launch_method", NULL, NULL, NULL }; -static const GDBusMethodInfo * const scmirroring_server_method_info_pointers[] = {&scmirroring_server_method_info_method, NULL}; +static const GDBusMethodInfo *const scmirroring_server_method_info_pointers[] = {&scmirroring_server_method_info_method, NULL}; -static const GDBusInterfaceInfo scmirroring_server_interface_info = -{ +static const GDBusInterfaceInfo scmirroring_server_interface_info = { -1, PROC_DBUS_INTERFACE, (GDBusMethodInfo **) &scmirroring_server_method_info_pointers, @@ -74,83 +72,79 @@ static GDBusNodeInfo *introspection_data = NULL; /* Introspection data for the service we are exporting */ static const gchar introspection_xml[] = - "" - " " - " " - " " - " " - " " - " " - " " - ""; - - -static void -handle_method_call (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) + "" + " " + " " + " " + " " + " " + " " + " " + ""; + + +static void +handle_method_call(GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) { scmirroring_debug("handle_method_call is called\n"); - if(method_name != NULL) + if (method_name != NULL) scmirroring_debug("method_name is %s\n", method_name); - if (g_strcmp0 (method_name, "launch_method") == 0) - { - g_dbus_method_invocation_return_value (invocation, NULL); - } - else if(g_strcmp0 (method_name, "get_miracast_wfd_source_status") == 0) - { + if (g_strcmp0(method_name, "launch_method") == 0) { + g_dbus_method_invocation_return_value(invocation, NULL); + } else if (g_strcmp0(method_name, "get_miracast_wfd_source_status") == 0) { g_dbus_method_invocation_return_value(invocation, g_variant_new("(i)", g_server_status)); } } /* for now */ -static const GDBusInterfaceVTable interface_vtable = -{ +static const GDBusInterfaceVTable interface_vtable = { handle_method_call, NULL, - NULL + NULL }; -static void -on_bus_acquired (GDBusConnection *connection, - const gchar *name, - gpointer user_data) +static void +on_bus_acquired(GDBusConnection *connection, + const gchar *name, + gpointer user_data) { guint registration_id; - scmirroring_debug ("on_bus_acquired called\n"); - registration_id = g_dbus_connection_register_object (connection, - PROC_DBUS_OBJECT, - introspection_data->interfaces[0], - &interface_vtable, - NULL, - NULL, /* user_data_free_func */ - NULL); /* GError** */ - g_assert (registration_id > 0); + scmirroring_debug("on_bus_acquired called\n"); + registration_id = g_dbus_connection_register_object(connection, + PROC_DBUS_OBJECT, + introspection_data->interfaces[0], + &interface_vtable, + NULL, + NULL, /* user_data_free_func */ + NULL); /* GError** */ + g_assert(registration_id > 0); } -static void -on_name_acquired (GDBusConnection *connection, - const gchar *name, - gpointer user_data) +static void +on_name_acquired(GDBusConnection *connection, + const gchar *name, + gpointer user_data) { - scmirroring_debug ("on_name_acquired called\n"); + scmirroring_debug("on_name_acquired called\n"); } -static void -on_name_lost (GDBusConnection *connection, - const gchar *name, - gpointer user_data) +static void +on_name_lost(GDBusConnection *connection, + const gchar *name, + gpointer user_data) { - scmirroring_debug ("on_name_lost called\n"); + scmirroring_debug("on_name_lost called\n"); } typedef struct _MiracastServerObject MiracastServerObject; @@ -177,11 +171,11 @@ struct _MiracastServerObjectClass { #define MIRACAST_SERVER_TYPE_OBJECT (miracast_server_object_get_type()) #define MIRACAST_SERVER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST \ - ((object), MIRACAST_SERVER_TYPE_OBJECT, MiracastServerObject)) + ((object), MIRACAST_SERVER_TYPE_OBJECT, MiracastServerObject)) -G_DEFINE_TYPE(MiracastServerObject, miracast_server_object, G_TYPE_OBJECT) +G_DEFINE_TYPE(MiracastServerObject, miracast_server_object, G_TYPE_OBJECT); -static void miracast_server_object_init(MiracastServerObject * obj) +static void miracast_server_object_init(MiracastServerObject *obj) { scmirroring_debug("miracast_server_object_init\n"); @@ -194,7 +188,7 @@ static void miracast_server_object_init(MiracastServerObject * obj) obj->resolution = -1; } -static void miracast_server_object_class_init(MiracastServerObjectClass * klass) +static void miracast_server_object_class_init(MiracastServerObjectClass *klass) { scmirroring_debug("miracast_server_object_class_init\n"); } @@ -230,7 +224,7 @@ int __miracast_server_send_resp(MiracastServerObject *server, char *cmd) return ret; } -static void __miracast_server_quit_program(MiracastServerObject * server) +static void __miracast_server_quit_program(MiracastServerObject *server) { scmirroring_error("Quit program is called"); @@ -239,25 +233,24 @@ static void __miracast_server_quit_program(MiracastServerObject * server) int ret = 0; if (server->server == NULL) { - scmirroring_error ("server is already NULL"); + scmirroring_error("server is already NULL"); goto done; } ret = __miracast_server_emit_status_signal(MIRACAST_WFD_SOURCE_OFF); - if(ret != SCMIRRORING_ERROR_NONE ) - { + if (ret != SCMIRRORING_ERROR_NONE) { scmirroring_error("Failed to emit miracast server off signal"); } - pool = (void*)gst_rtsp_server_get_session_pool (server->server); - gst_rtsp_session_pool_cleanup (pool); - g_object_unref (pool); + pool = (void *)gst_rtsp_server_get_session_pool(server->server); + gst_rtsp_session_pool_cleanup(pool); + g_object_unref(pool); int serv_ref_cnt = GST_OBJECT_REFCOUNT_VALUE(server->server); - scmirroring_debug ("serv ref cnt:%d", serv_ref_cnt); + scmirroring_debug("serv ref cnt:%d", serv_ref_cnt); - for(i=0; i < serv_ref_cnt; i++) - g_object_unref (server->server); + for (i = 0; i < serv_ref_cnt; i++) + g_object_unref(server->server); done: __miracast_server_send_resp(server, "OK:DESTROY"); @@ -269,14 +262,12 @@ static void __miracast_server_signal_handler(int signo) scmirroring_error("__miracast_server_signal_handler call quit_program() %d", signo); int ret = 0; - switch(signo) - { + switch (signo) { case SIGINT: case SIGQUIT: case SIGTERM: ret = __miracast_server_emit_status_signal(MIRACAST_WFD_SOURCE_OFF); - if(ret != SCMIRRORING_ERROR_NONE ) - { + if (ret != SCMIRRORING_ERROR_NONE) { scmirroring_error("Failed to emit miracast server off signal"); } break; @@ -288,43 +279,43 @@ static void __miracast_server_signal_handler(int signo) static void __miracast_server_set_signal() { - /*SIGABRT A Process abort signal. - SIGALRM T Alarm clock. - SIGBUS A Access to an undefined portion of a memory object. - SIGCHLD I Child process terminated, stopped, - SIGCONT C Continue executing, if stopped. - SIGFPE A Erroneous arithmetic operation. - SIGHUP T Hangup. - SIGILL A Illegal instruction. - SIGINT T Terminal interrupt signal. - SIGKILL T Kill (cannot be caught or ignored). - SIGPIPE T Write on a pipe with no one to read it. - SIGQUIT A Terminal quit signal. - SIGSEGV A Invalid memory reference. - SIGSTOP S Stop executing (cannot be caught or ignored). - SIGTERM T Termination signal. - SIGTSTP S Terminal stop signal. - SIGTTIN S Background process attempting read. - SIGTTOU S Background process attempting write. - SIGUSR1 T User-defined signal 1. - SIGUSR2 T User-defined signal 2. - SIGPOLL T Pollable event. - SIGPROF T Profiling timer expired. - SIGSYS A Bad system call. - SIGTRAP A Trace/breakpoint trap. - SIGURG I High bandwidth data is available at a socket. - SIGVTALRM T Virtual timer expired. - SIGXCPU A CPU time limit exceeded. - SIGXFSZ A File size limit exceeded. - -The default actions are as follows: -T : Abnormal termination of the process. The process is terminated with all the consequences of _exit() -A : Abnormal termination of the process. -I : Ignore the signal. -S : Stop the process -*/ + /*SIGABRT A Process abort signal. + SIGALRM T Alarm clock. + SIGBUS A Access to an undefined portion of a memory object. + SIGCHLD I Child process terminated, stopped, + SIGCONT C Continue executing, if stopped. + SIGFPE A Erroneous arithmetic operation. + SIGHUP T Hangup. + SIGILL A Illegal instruction. + SIGINT T Terminal interrupt signal. + SIGKILL T Kill(cannot be caught or ignored). + SIGPIPE T Write on a pipe with no one to read it. + SIGQUIT A Terminal quit signal. + SIGSEGV A Invalid memory reference. + SIGSTOP S Stop executing(cannot be caught or ignored). + SIGTERM T Termination signal. + SIGTSTP S Terminal stop signal. + SIGTTIN S Background process attempting read. + SIGTTOU S Background process attempting write. + SIGUSR1 T User-defined signal 1. + SIGUSR2 T User-defined signal 2. + SIGPOLL T Pollable event. + SIGPROF T Profiling timer expired. + SIGSYS A Bad system call. + SIGTRAP A Trace/breakpoint trap. + SIGURG I High bandwidth data is available at a socket. + SIGVTALRM T Virtual timer expired. + SIGXCPU A CPU time limit exceeded. + SIGXFSZ A File size limit exceeded. + + The default actions are as follows: + T : Abnormal termination of the process. The process is terminated with all the consequences of _exit() + A : Abnormal termination of the process. + I : Ignore the signal. + S : Stop the process + */ struct sigaction act_new; - memset (&act_new, 0, sizeof (struct sigaction)); + memset(&act_new, 0, sizeof(struct sigaction)); act_new.sa_handler = __miracast_server_signal_handler; @@ -341,25 +332,25 @@ S : Stop the process static bool __miracast_server_setup() { - GObject *object = NULL; + GObject *object = NULL; scmirroring_debug("__miracast_server_setup start\n"); - introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); + introspection_data = g_dbus_node_info_new_for_xml(introspection_xml, NULL); if (introspection_data == NULL) { scmirroring_error("Introspection data is NULL"); return false; } - object = g_object_new (MIRACAST_SERVER_TYPE_OBJECT, NULL); + object = g_object_new(MIRACAST_SERVER_TYPE_OBJECT, NULL); - g_bus_own_name (G_BUS_TYPE_SYSTEM, - PROC_DBUS_INTERFACE, - G_BUS_NAME_OWNER_FLAGS_NONE, - on_bus_acquired, - on_name_acquired, - on_name_lost, - object, - NULL); + g_bus_own_name(G_BUS_TYPE_SYSTEM, + PROC_DBUS_INTERFACE, + G_BUS_NAME_OWNER_FLAGS_NONE, + on_bus_acquired, + on_name_acquired, + on_name_lost, + object, + NULL); g_server_object = object; @@ -386,10 +377,10 @@ static gboolean __miracast_server_ready_channel(int *sockfd) serv_addr.sun_family = AF_UNIX; unlink(MEDIA_IPC_PATH); - strncpy(serv_addr.sun_path, MEDIA_IPC_PATH, sizeof(serv_addr.sun_path)); + strncpy(serv_addr.sun_path, MEDIA_IPC_PATH, sizeof(serv_addr.sun_path)); /* Bind to the local address */ - for (i = 0; i < 20; i ++) { + for (i = 0; i < 20; i++) { if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) { bind_success = true; break; @@ -414,9 +405,9 @@ static gboolean __miracast_server_ready_channel(int *sockfd) /*change permission of sock file*/ if (chmod(MEDIA_IPC_PATH, 0770) < 0) - scmirroring_error ("chmod failed [%s]", strerror(errno)); + scmirroring_error("chmod failed [%s]", strerror(errno)); if (chown(MEDIA_IPC_PATH, 200, 5000) < 0) - scmirroring_error ("chown failed [%s]", strerror(errno)); + scmirroring_error("chown failed [%s]", strerror(errno)); scmirroring_debug("Listening..."); *sockfd = sock; @@ -426,24 +417,24 @@ static gboolean __miracast_server_ready_channel(int *sockfd) void __miracast_server_msg_cb(gboolean is_error, void *userdata) { - //MiracastServerObject *server = (MiracastServerObject *)userdata; + /*MiracastServerObject *server = (MiracastServerObject *)userdata; */ - if(is_error) { + if (is_error) { scmirroring_error("Error occured"); } } int __miracast_server_gst_init() { - gint* argc = NULL; - gchar** argv = NULL; + gint *argc = NULL; + gchar **argv = NULL; static const int max_argc = 50; GError *err = NULL; - int i = 0; + int i = 0; /* alloc */ - argc = calloc(1, sizeof(int) ); - argv = calloc(max_argc, sizeof(gchar*)); + argc = calloc(1, sizeof(int)); + argv = calloc(max_argc, sizeof(gchar *)); if (!argc || !argv) { scmirroring_error("Cannot allocate memory for scmirroringsink\n"); goto ERROR; @@ -454,13 +445,13 @@ int __miracast_server_gst_init() (*argc)++; /* check disable registry scan */ - if (scmirroring_src_ini_get_structure()->skip_rescan ) { + if (scmirroring_src_ini_get_structure()->skip_rescan) { argv[*argc] = g_strdup("--gst-disable-registry-update"); (*argc)++; } /* check disable segtrap */ - if (scmirroring_src_ini_get_structure()->disable_segtrap ) { + if (scmirroring_src_ini_get_structure()->disable_segtrap) { argv[*argc] = g_strdup("--gst-disable-segtrap"); (*argc)++; } @@ -468,88 +459,91 @@ int __miracast_server_gst_init() scmirroring_debug("initializing gstreamer with following parameter\n"); scmirroring_debug("argc : %d\n", *argc); - for (i = 0; i < SCMIRRORING_SRC_INI_GST_START_PARAMS_NUM; i++ ) { - if (g_strcmp0(scmirroring_src_ini_get_structure()->gst_param[i],"") != 0) { + for (i = 0; i < SCMIRRORING_SRC_INI_GST_START_PARAMS_NUM; i++) { + if (g_strcmp0(scmirroring_src_ini_get_structure()->gst_param[i], "") != 0) { argv[*argc] = g_strdup(scmirroring_src_ini_get_structure()->gst_param[i]); (*argc)++; } } - for ( i = 0; i < *argc; i++ ) { + for (i = 0; i < *argc; i++) { scmirroring_debug("argv[%d] : %s\n", i, argv[i]); } /* initializing gstreamer */ - if ( ! gst_init_check (argc, &argv, &err)) { + if (!gst_init_check(argc, &argv, &err)) { scmirroring_error("Could not initialize GStreamer: %s\n", err ? err->message : "unknown error occurred"); if (err) { - g_error_free (err); - } + g_error_free(err); + } goto ERROR; } /* release */ - for ( i = 0; i < *argc; i++ ) { - SCMIRRORING_SAFE_FREE( argv[i] ); + for (i = 0; i < *argc; i++) { + SCMIRRORING_SAFE_FREE(argv[i]); } + SCMIRRORING_SAFE_FREE(argc); return SCMIRRORING_ERROR_NONE; ERROR: - SCMIRRORING_SAFE_FREE(argv); + for (i = 0; i < *argc; i++) { + SCMIRRORING_SAFE_FREE(argv[i]); + } SCMIRRORING_SAFE_FREE(argc); return SCMIRRORING_ERROR_INVALID_OPERATION; } #define VIDEO_PIPELINE "ximagesrc ! videorate ! videoscale ! videoconvert ! " \ - "video/x-raw,width=1280,height=720,framerate=30/1 ! " \ - "x264enc aud=false byte-stream=true bitrate=512 ! video/x-h264,profile=baseline ! mpegtsmux wfd-mode=TRUE ! " \ - "rtpmp2tpay name=pay0 pt=33" + "video/x-raw, width=1280, height=720, framerate=30/1 ! " \ + "x264enc aud=false byte-stream=true bitrate=512 ! video/x-h264, profile=baseline ! mpegtsmux wfd-mode=TRUE ! " \ + "rtpmp2tpay name=pay0 pt=33" #define AUDIO_PIPELINE "pulsesrc device=alsa_output.0.analog-stereo.monitor ! audioconvert ! " \ - "faac ! mpegtsmux wfd-mode=TRUE ! " \ - "rtpmp2tpay name=pay0 pt=33" + "faac ! mpegtsmux wfd-mode=TRUE ! " \ + "rtpmp2tpay name=pay0 pt=33" #define SCMIRRORING_PIPELINE "ximagesrc ! videoscale ! videoconvert ! " \ - "video/x-raw,width=1280,height=720,framerate=60/1 ! " \ - "x264enc aud=false byte-stream=true bitrate=512 ! video/x-h264,profile=baseline ! mpegtsmux name=mux " \ - "pulsesrc device=alsa_output.0.analog-stereo.monitor ! audioconvert ! " \ - "faac ! mux. mux. ! " \ - "rtpmp2tpay name=pay0 pt=33" + "video/x-raw, width=1280, height=720, framerate=60/1 ! " \ + "x264enc aud=false byte-stream=true bitrate=512 ! video/x-h264, profile=baseline ! mpegtsmux name=mux " \ + "pulsesrc device=alsa_output.0.analog-stereo.monitor ! audioconvert ! " \ + "faac ! mux. mux. ! " \ + "rtpmp2tpay name=pay0 pt=33" #define TEST_MOUNT_POINT "/wfd1.0/streamid=0" static void -__client_closed (GstRTSPClient * client) +__client_closed(GstRTSPClient *client) { if (client == NULL) return; - scmirroring_debug ("client %p: connection closed", client); + scmirroring_debug("client %p: connection closed", client); return; } static void -__new_session (GstRTSPClient * client, GstRTSPSession *session) +__new_session(GstRTSPClient *client, GstRTSPSession *session) { if (client == NULL) return; - scmirroring_debug ("New session(%p) is made for client %p", session, client); + scmirroring_debug("New session(%p) is made for client %p", session, client); return; } static void -__teardown_req (GstRTSPClient * client, GstRTSPContext *ctx) +__teardown_req(GstRTSPClient *client, GstRTSPContext *ctx) { if (client == NULL) return; - scmirroring_debug ("Got TEARDOWN request for client %p", client); + scmirroring_debug("Got TEARDOWN request for client %p", client); return; } -static void -__miracast_server_client_connected_cb (GstRTSPServer * server, - GstRTSPClient * client, gpointer user_data) +static void +__miracast_server_client_connected_cb(GstRTSPServer *server, + GstRTSPClient *client, gpointer user_data) { MiracastServerObject *server_obj = (MiracastServerObject *)user_data; int ret = SCMIRRORING_ERROR_NONE; @@ -558,8 +552,7 @@ __miracast_server_client_connected_cb (GstRTSPServer * server, server_obj->client = (void *)client; ret = __miracast_server_emit_status_signal(MIRACAST_WFD_SOURCE_ON); - if(ret != SCMIRRORING_ERROR_NONE ) - { + if (ret != SCMIRRORING_ERROR_NONE) { scmirroring_error("Failed to emit miracast server on signal"); } @@ -571,14 +564,14 @@ __miracast_server_client_connected_cb (GstRTSPServer * server, __miracast_server_send_resp(server_obj, "OK:CONNECTED"); } -int __miracast_server_start(MiracastServerObject * server_obj) +int __miracast_server_start(MiracastServerObject *server_obj) { int ret = SCMIRRORING_ERROR_NONE; - if (scmirroring_src_ini_load() != ERROR_NONE) { + if (scmirroring_src_ini_load() != ERROR_NONE) { scmirroring_error("Error occurred during parsing config file"); return SCMIRRORING_ERROR_INVALID_OPERATION; - } + } ret = __miracast_server_gst_init(); if (ret < SCMIRRORING_ERROR_NONE) { @@ -591,26 +584,26 @@ int __miracast_server_start(MiracastServerObject * server_obj) GstRTSPMediaFactoryWFD *factory = NULL; GstRTSPMountPoints *mounts = NULL; - server = (void*)gst_rtsp_wfd_server_new(); + server = (void *)gst_rtsp_wfd_server_new(); if (NULL == server) { scmirroring_error("Failed to create server..."); return SCMIRRORING_ERROR_OUT_OF_MEMORY; } - gst_rtsp_server_set_address(GST_RTSP_SERVER(server), server_obj->ip); + gst_rtsp_server_set_address(GST_RTSP_SERVER(server), server_obj->ip); gst_rtsp_server_set_service(GST_RTSP_SERVER(server), server_obj->port); - mounts = gst_rtsp_server_get_mount_points (GST_RTSP_SERVER(server)); + mounts = gst_rtsp_server_get_mount_points(GST_RTSP_SERVER(server)); - factory = gst_rtsp_media_factory_wfd_new (); + factory = gst_rtsp_media_factory_wfd_new(); - gst_rtsp_media_factory_wfd_set (factory, - scmirroring_src_ini_get_structure()->videosrc_element, - scmirroring_src_ini_get_structure()->name_of_audio_device, - scmirroring_src_ini_get_structure()->audio_latency_time, - scmirroring_src_ini_get_structure()->audio_buffer_time, - scmirroring_src_ini_get_structure()->audio_do_timestamp, - scmirroring_src_ini_get_structure()->mtu_size - ); + gst_rtsp_media_factory_wfd_set(factory, + scmirroring_src_ini_get_structure()->videosrc_element, + scmirroring_src_ini_get_structure()->name_of_audio_device, + scmirroring_src_ini_get_structure()->audio_latency_time, + scmirroring_src_ini_get_structure()->audio_buffer_time, + scmirroring_src_ini_get_structure()->audio_do_timestamp, + scmirroring_src_ini_get_structure()->mtu_size + ); if (server_obj->resolution == SCMIRRORING_RESOLUTION_1920x1080_P30) { @@ -637,25 +630,25 @@ int __miracast_server_start(MiracastServerObject * server_obj) } else { gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_CEA_RESOLUTION); gst_rtsp_wfd_server_set_supported_reso(server, - scmirroring_src_ini_get_structure()->video_reso_supported); + scmirroring_src_ini_get_structure()->video_reso_supported); } - gst_rtsp_media_factory_wfd_set_dump_ts (factory, - scmirroring_src_ini_get_structure()->dump_ts); + gst_rtsp_media_factory_wfd_set_dump_ts(factory, + scmirroring_src_ini_get_structure()->dump_ts); - g_object_ref (factory); - gst_rtsp_mount_points_add_factory (mounts, TEST_MOUNT_POINT, GST_RTSP_MEDIA_FACTORY(factory)); - g_object_unref (mounts); + g_object_ref(factory); + gst_rtsp_mount_points_add_factory(mounts, TEST_MOUNT_POINT, GST_RTSP_MEDIA_FACTORY(factory)); + g_object_unref(mounts); /* attach the server to the default maincontext */ - if ((id = gst_rtsp_server_attach (GST_RTSP_SERVER_CAST(server), NULL)) == 0) + if ((id = gst_rtsp_server_attach(GST_RTSP_SERVER_CAST(server), NULL)) == 0) goto failed; - g_signal_connect (server, "client-connected", - G_CALLBACK (__miracast_server_client_connected_cb), server_obj); + g_signal_connect(server, "client-connected", + G_CALLBACK(__miracast_server_client_connected_cb), server_obj); - server_obj->server = (void*) server; - server_obj->factory = (void*) factory; + server_obj->server = (void *) server; + server_obj->factory = (void *) factory; return SCMIRRORING_ERROR_NONE; @@ -664,7 +657,7 @@ failed: return SCMIRRORING_ERROR_INVALID_OPERATION; } -void __miracast_server_interpret(MiracastServerObject * server, char *buf) +void __miracast_server_interpret(MiracastServerObject *server, char *buf) { int ret = SCMIRRORING_ERROR_NONE; @@ -721,20 +714,20 @@ void __miracast_server_interpret(MiracastServerObject * server, char *buf) __miracast_server_send_resp(server, "OK:SET"); } else if (g_strrstr(buf, SCMIRRORING_STATE_CMD_PAUSE)) { - gst_rtsp_wfd_server_trigger_request (GST_RTSP_SERVER(server->server), WFD_TRIGGER_PAUSE); + gst_rtsp_wfd_server_trigger_request(GST_RTSP_SERVER(server->server), WFD_TRIGGER_PAUSE); __miracast_server_send_resp(server, "OK:PAUSE"); } else if (g_strrstr(buf, SCMIRRORING_STATE_CMD_RESUME)) { - gst_rtsp_wfd_server_trigger_request (GST_RTSP_SERVER(server->server), WFD_TRIGGER_PLAY); + gst_rtsp_wfd_server_trigger_request(GST_RTSP_SERVER(server->server), WFD_TRIGGER_PLAY); __miracast_server_send_resp(server, "OK:RESUME"); } else if (g_strrstr(buf, SCMIRRORING_STATE_CMD_STOP)) { - gst_rtsp_wfd_server_trigger_request (GST_RTSP_SERVER(server->server), WFD_TRIGGER_TEARDOWN); + gst_rtsp_wfd_server_trigger_request(GST_RTSP_SERVER(server->server), WFD_TRIGGER_TEARDOWN); __miracast_server_send_resp(server, "OK:STOP"); } else if (g_strrstr(buf, SCMIRRORING_STATE_CMD_DESTROY)) { __miracast_server_quit_program(server); } } -int __miracast_server_accept(int serv_sock, int* client_sock) +int __miracast_server_accept(int serv_sock, int *client_sock) { int sockfd = -1; struct sockaddr_un client_addr; @@ -744,7 +737,7 @@ int __miracast_server_accept(int serv_sock, int* client_sock) return SCMIRRORING_ERROR_INVALID_PARAMETER; client_addr_len = sizeof(client_addr); - if ((sockfd = accept(serv_sock, (struct sockaddr*)&client_addr, &client_addr_len)) < 0) { + if ((sockfd = accept(serv_sock, (struct sockaddr *)&client_addr, &client_addr_len)) < 0) { scmirroring_error("accept failed : %s", strerror(errno)); *client_sock = -1; return SCMIRRORING_ERROR_INVALID_OPERATION; @@ -756,8 +749,8 @@ int __miracast_server_accept(int serv_sock, int* client_sock) } gboolean __miracast_server_client_read_cb(GIOChannel *src, - GIOCondition condition, - gpointer data) + GIOCondition condition, + gpointer data) { char buf[MAX_MSG_LEN + 1]; gsize read; @@ -785,7 +778,7 @@ gboolean __miracast_server_client_read_cb(GIOChannel *src, continue; } scmirroring_debug("Handling %s", str); - __miracast_server_interpret (server, str); + __miracast_server_interpret(server, str); if (idx >= read) break; } @@ -802,8 +795,8 @@ gboolean __miracast_server_client_read_cb(GIOChannel *src, gboolean __miracast_server_read_cb(GIOChannel *src, - GIOCondition condition, - gpointer data) + GIOCondition condition, + gpointer data) { MiracastServerObject *server = (MiracastServerObject *)data; @@ -829,12 +822,12 @@ gboolean __miracast_server_read_cb(GIOChannel *src, /* Create new channel to watch udp socket */ GSource *source = NULL; source = g_io_create_watch(channel, G_IO_IN | G_IO_HUP | G_IO_ERR); - //int source_id = -1; + /*int source_id = -1; */ /* To avoid blocking in g_io_channel_read_chars */ g_io_channel_set_encoding(channel, NULL, NULL); g_io_channel_set_buffered(channel, FALSE); - g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL); + g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL); server->client_channel = channel; @@ -853,47 +846,47 @@ static int __miracast_server_emit_status_signal(int status) gboolean ret; if (status != MIRACAST_WFD_SOURCE_ON && status != MIRACAST_WFD_SOURCE_OFF) { - scmirroring_error ("invalid arguments [%d]", status); + scmirroring_error("invalid arguments [%d]", status); return -1; } if (g_server_status == status) { - scmirroring_debug ("The server status is not changed, status [%d] ", status); + scmirroring_debug("The server status is not changed, status [%d] ", status); return 0; } conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err); if (!conn && err) { - scmirroring_error("g_bus_get_sync() error (%s) ", err->message); - g_error_free (err); + scmirroring_error("g_bus_get_sync() error(%s) ", err->message); + g_error_free(err); return -1; } - ret = g_dbus_connection_emit_signal (conn, - NULL, PROC_DBUS_OBJECT, PROC_DBUS_INTERFACE, PROC_DBUS_STATUS_CHANGE_SIGNAL, - g_variant_new ("(i)", status), &err); + ret = g_dbus_connection_emit_signal(conn, + NULL, PROC_DBUS_OBJECT, PROC_DBUS_INTERFACE, PROC_DBUS_STATUS_CHANGE_SIGNAL, + g_variant_new("(i)", status), &err); if (!ret && err) { - scmirroring_error("g_dbus_connection_emit_signal() error (%s) ", err->message); + scmirroring_error("g_dbus_connection_emit_signal() error(%s) ", err->message); goto error; } ret = g_dbus_connection_flush_sync(conn, NULL, &err); if (!ret && err) { - scmirroring_error("g_dbus_connection_flush_sync() error (%s) ", err->message); + scmirroring_error("g_dbus_connection_flush_sync() error(%s) ", err->message); goto error; } g_object_unref(conn); - scmirroring_debug ("sending miracast server status [%s] success", - (status == MIRACAST_WFD_SOURCE_ON) ? "On" : "Off"); + scmirroring_debug("sending miracast server status [%s] success", + (status == MIRACAST_WFD_SOURCE_ON) ? "On" : "Off"); g_server_status = status; return 0; error: - g_error_free (err); - g_object_unref(conn); + g_error_free(err); + if (conn) g_object_unref(conn); return -1; } @@ -905,12 +898,12 @@ int main(int argc, char *argv[]) GIOChannel *channel = NULL; GMainContext *context = NULL; -#if !GLIB_CHECK_VERSION(2,35,0) +#if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif g_mainloop = g_main_loop_new(NULL, FALSE); - if(NULL == g_mainloop) { + if (NULL == g_mainloop) { scmirroring_error("Unable to create gmain loop! Aborting rtsp server\n"); exit(-1); } diff --git a/packaging/capi-media-screen-mirroring.spec b/packaging/capi-media-screen-mirroring.spec index bb49f34..333b748 100755 --- a/packaging/capi-media-screen-mirroring.spec +++ b/packaging/capi-media-screen-mirroring.spec @@ -1,6 +1,6 @@ Name: capi-media-screen-mirroring Summary: A screen mirroring library in Tizen C API -Version: 0.1.30 +Version: 0.1.34 Release: 0 Group: Multimedia/API License: Apache License, Version 2.0 diff --git a/src/scmirroring_sink.c b/src/scmirroring_sink.c index a98a83b..21312ac 100755 --- a/src/scmirroring_sink.c +++ b/src/scmirroring_sink.c @@ -18,24 +18,23 @@ #include #include -static scmirroring_error_e __scmirroring_sink_error_convert(const char* func, int error) +static scmirroring_error_e __scmirroring_sink_error_convert(const char *func, int error) { int ret = SCMIRRORING_ERROR_NONE; const char *errorstr = NULL; - switch(error) - { + switch (error) { case MM_ERROR_NONE: ret = SCMIRRORING_ERROR_NONE; errorstr = "ERROR_NONE"; break; - case MM_ERROR_WFD_NOT_INITIALIZED : - case MM_ERROR_COMMON_INVALID_ATTRTYPE : - case MM_ERROR_COMMON_INVALID_PERMISSION : - case MM_ERROR_COMMON_OUT_OF_ARRAY : - case MM_ERROR_COMMON_OUT_OF_RANGE : - case MM_ERROR_COMMON_ATTR_NOT_EXIST : + case MM_ERROR_WFD_NOT_INITIALIZED: + case MM_ERROR_COMMON_INVALID_ATTRTYPE: + case MM_ERROR_COMMON_INVALID_PERMISSION: + case MM_ERROR_COMMON_OUT_OF_ARRAY: + case MM_ERROR_COMMON_OUT_OF_RANGE: + case MM_ERROR_COMMON_ATTR_NOT_EXIST: ret = SCMIRRORING_ERROR_INVALID_PARAMETER; errorstr = "INVALID_PARAMETER"; break; @@ -45,7 +44,7 @@ static scmirroring_error_e __scmirroring_sink_error_convert(const char* func, in errorstr = "INVALID_OPERATION"; } - if(ret != SCMIRRORING_ERROR_NONE) + if (ret != SCMIRRORING_ERROR_NONE) scmirroring_error("[%s] %s (0x%08x) : core frameworks error code(0x%08x)", func, errorstr, ret, error); else scmirroring_debug("[%s] %s", func, errorstr); @@ -57,8 +56,7 @@ static scmirroring_sink_state_e __scmirroring_sink_state_convert(MMWFDSinkStateT { scmirroring_sink_state_e state = SCMIRRORING_SINK_STATE_NONE; - switch( mm_state ) - { + switch (mm_state) { case MM_WFD_SINK_STATE_NONE: state = SCMIRRORING_SINK_STATE_NONE; break; @@ -92,7 +90,7 @@ void __mm_scmirroring_sink_set_message_cb(int error_type, MMWFDSinkStateType sta { scmirroring_error_e error = __scmirroring_sink_error_convert(__func__, error_type); scmirroring_sink_state_e state = __scmirroring_sink_state_convert(state_type); - scmirroring_sink_s *handle = (scmirroring_sink_s*)uData; + scmirroring_sink_s *handle = (scmirroring_sink_s *)uData; /* call application callback */ if (handle->scmirroring_sink_state_cb->state_cb) @@ -109,21 +107,20 @@ int scmirroring_sink_create(scmirroring_sink_h *scmirroring_sink) scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - scmirroring_sink_s *handle = (scmirroring_sink_s*)calloc(1, sizeof(scmirroring_sink_s)); + scmirroring_sink_s *handle = (scmirroring_sink_s *)calloc(1, sizeof(scmirroring_sink_s)); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); handle->mm_handle = 0; - handle->ip= NULL; + handle->ip = NULL; handle->port = NULL; handle->use_hdcp = TRUE; handle->scmirroring_sink_state_cb = NULL; ret = mm_wfd_sink_create(&handle->mm_handle); - if(ret != MM_ERROR_NONE) - { + if (ret != MM_ERROR_NONE) { SCMIRRORING_SAFE_FREE(handle); scmirroring_error("Fail to Create"); - return __scmirroring_sink_error_convert(__func__,ret); + return __scmirroring_sink_error_convert(__func__, ret); } *scmirroring_sink = (scmirroring_sink_h)handle; @@ -137,7 +134,7 @@ int scmirroring_sink_create(scmirroring_sink_h *scmirroring_sink) int scmirroring_sink_set_ip_and_port(scmirroring_sink_h scmirroring_sink, const char *ip, const char *port) { - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -159,7 +156,7 @@ int scmirroring_sink_prepare(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -177,23 +174,21 @@ int scmirroring_sink_prepare(scmirroring_sink_h scmirroring_sink) int scmirroring_sink_connect(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - char server_uri[255] = {0,}; + char server_uri[255] = {0, }; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if(handle->ip == NULL) - { - scmirroring_error("INVALID_IP(NULL) (0x%08x)",SCMIRRORING_ERROR_INVALID_PARAMETER); + if (handle->ip == NULL) { + scmirroring_error("INVALID_IP(NULL) (0x%08x)", SCMIRRORING_ERROR_INVALID_PARAMETER); return SCMIRRORING_ERROR_INVALID_PARAMETER; } - if(handle->port == NULL) - { - scmirroring_error("INVALID_PORT(NULL) (0x%08x)",SCMIRRORING_ERROR_INVALID_PARAMETER); + if (handle->port == NULL) { + scmirroring_error("INVALID_PORT(NULL) (0x%08x)", SCMIRRORING_ERROR_INVALID_PARAMETER); return SCMIRRORING_ERROR_INVALID_PARAMETER; } @@ -216,7 +211,7 @@ int scmirroring_sink_unprepare(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -235,7 +230,7 @@ int scmirroring_sink_destroy(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -260,7 +255,7 @@ int scmirroring_sink_start(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -279,7 +274,7 @@ int scmirroring_sink_disconnect(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -298,24 +293,20 @@ int scmirroring_sink_set_state_changed_cb(scmirroring_sink_h scmirroring_sink, s { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); scmirroring_retvm_if(callback == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "callback is NULL"); - if(handle->scmirroring_sink_state_cb == NULL) - { - handle->scmirroring_sink_state_cb = (scmirroring_sink_state_cb_s*)calloc(1, sizeof(scmirroring_sink_state_cb_s)); - if(handle->scmirroring_sink_state_cb == NULL) - { + if (handle->scmirroring_sink_state_cb == NULL) { + handle->scmirroring_sink_state_cb = (scmirroring_sink_state_cb_s *)calloc(1, sizeof(scmirroring_sink_state_cb_s)); + if (handle->scmirroring_sink_state_cb == NULL) { scmirroring_error("Error Set CB"); return SCMIRRORING_ERROR_OUT_OF_MEMORY; } - } - else - { + } else { memset(handle->scmirroring_sink_state_cb, 0, sizeof(scmirroring_sink_state_cb_s)); } @@ -335,7 +326,7 @@ int scmirroring_sink_unset_state_changed_cb(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); @@ -352,37 +343,34 @@ int scmirroring_sink_unset_state_changed_cb(scmirroring_sink_h scmirroring_sink) return ret; } -int scmirroring_sink_set_display(scmirroring_sink_h scmirroring_sink, scmirroring_display_type_e type, void * display_surface) +int scmirroring_sink_set_display(scmirroring_sink_h scmirroring_sink, scmirroring_display_type_e type, void *display_surface) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); scmirroring_retvm_if(display_surface == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "display_surface is NULL"); - if((type != SCMIRRORING_DISPLAY_TYPE_OVERLAY) && (type != SCMIRRORING_DISPLAY_TYPE_EVAS)) - { + if ((type != SCMIRRORING_DISPLAY_TYPE_OVERLAY) && (type != SCMIRRORING_DISPLAY_TYPE_EVAS)) { scmirroring_error("Invalid display type [%d]", type); return SCMIRRORING_ERROR_INVALID_PARAMETER; } - scmirroring_debug("display type (%d)", type); + scmirroring_debug("display type(%d)", type); ret = mm_wfd_sink_set_attribute(handle->mm_handle, NULL, "display_surface_type", type, NULL); - if(ret != MM_ERROR_NONE) - { + if (ret != MM_ERROR_NONE) { scmirroring_error("Fail to Set Display Type"); - return __scmirroring_sink_error_convert(__func__,ret); + return __scmirroring_sink_error_convert(__func__, ret); } - ret = mm_wfd_sink_set_attribute(handle->mm_handle, NULL, "display_overlay", display_surface, sizeof(display_surface), NULL); - if(ret != MM_ERROR_NONE) - { + ret = mm_wfd_sink_set_attribute(handle->mm_handle, NULL, "display_overlay", display_surface, sizeof(void *), NULL); + if (ret != MM_ERROR_NONE) { scmirroring_error("Fail to Set Display Overlay"); - return __scmirroring_sink_error_convert(__func__,ret); + return __scmirroring_sink_error_convert(__func__, ret); } ret = __scmirroring_sink_error_convert(__func__, ret); @@ -392,21 +380,29 @@ int scmirroring_sink_set_display(scmirroring_sink_h scmirroring_sink, scmirrorin return ret; } -int scmirroring_sink_set_resolution(scmirroring_sink_h scmirroring_sink, scmirroring_resolution_e resolution) +int scmirroring_sink_set_resolution(scmirroring_sink_h scmirroring_sink, int resolution) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if((resolution < SCMIRRORING_RESOLUTION_1920x1080_P30) ||(resolution >= SCMIRRORING_RESOLUTION_MAX)) - { + if ((resolution < SCMIRRORING_RESOLUTION_1920x1080_P30) || (resolution >= SCMIRRORING_RESOLUTION_MAX)) { scmirroring_error("INVALID resolution : %d", resolution); return SCMIRRORING_ERROR_INVALID_PARAMETER; } + scmirroring_debug("resolution(%d)", resolution); + ret = mm_wfd_sink_set_resolution(handle->mm_handle, resolution); + if (ret != MM_ERROR_NONE) { + scmirroring_error("Fail to Set resolution"); + return __scmirroring_sink_error_convert(__func__, ret); + } + + ret = __scmirroring_sink_error_convert(__func__, ret); + scmirroring_error_fleave(); return ret; @@ -416,12 +412,16 @@ int scmirroring_sink_pause(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); + ret = mm_wfd_sink_pause(handle->mm_handle); + + ret = __scmirroring_sink_error_convert(__func__, ret); + scmirroring_error_fleave(); return ret; @@ -431,12 +431,16 @@ int scmirroring_sink_resume(scmirroring_sink_h scmirroring_sink) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_sink_s *handle = (scmirroring_sink_s*)scmirroring_sink; + scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink; scmirroring_error_fenter(); scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); + ret = mm_wfd_sink_resume(handle->mm_handle); + + ret = __scmirroring_sink_error_convert(__func__, ret); + scmirroring_error_fleave(); return ret; diff --git a/src/scmirroring_src.c b/src/scmirroring_src.c index 37eb0e1..b63795e 100755 --- a/src/scmirroring_src.c +++ b/src/scmirroring_src.c @@ -34,18 +34,18 @@ static gboolean __scmirroring_src_callback_call(gpointer data) scmirroring_src_s *scmirroring = (scmirroring_src_s *) data; if (scmirroring == NULL) { - scmirroring_error ("SCMIRRORING is NULL"); + scmirroring_error("SCMIRRORING is NULL"); return FALSE; } scmirroring_state_cb_s *cb_info = scmirroring->scmirroring_state_cb; - if((cb_info != NULL) && (cb_info->state_cb != NULL)) { - scmirroring_debug("Calling user callback (error: %d, status: %d)", cb_info->error_code, cb_info->src_state); + if ((cb_info != NULL) && (cb_info->state_cb != NULL)) { + scmirroring_debug("Calling user callback(error: %d, status: %d)", cb_info->error_code, cb_info->src_state); cb_info->state_cb(cb_info->error_code, cb_info->src_state, cb_info->user_data); } - if (cb_info->src_state == SCMIRRORING_STATE_NULL) { + if (cb_info != NULL && cb_info->src_state == SCMIRRORING_STATE_NULL) { SCMIRRORING_SAFE_FREE(scmirroring->ip); SCMIRRORING_SAFE_FREE(scmirroring->port); SCMIRRORING_SAFE_FREE(scmirroring->scmirroring_state_cb); @@ -90,11 +90,11 @@ static int __miracast_server_launch(scmirroring_src_s *scmirroring) GDBusConnection *conn = NULL; GError *error = NULL; -#if !GLIB_CHECK_VERSION(2,35,0) +#if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif - scmirroring_debug("----------- socket connect failed it means server is not yet started ------------"); + scmirroring_debug("-----------socket connect failed it means server is not yet started------------"); scmirroring_debug("going to start miracast server"); conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); @@ -105,20 +105,20 @@ static int __miracast_server_launch(scmirroring_src_s *scmirroring) } proxy = g_dbus_proxy_new_sync(conn, - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS, - NULL, - "org.tizen.scmirroring.server", - "/org/tizen/scmirroring/server", - "org.tizen.scmirroring.server", - NULL, - &error); + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS, + NULL, + "org.tizen.scmirroring.server", + "/org/tizen/scmirroring/server", + "org.tizen.scmirroring.server", + NULL, + &error); if (error) { scmirroring_error("g_dbus_proxy_new_sync failed : %s", error->message); g_error_free(error); return SCMIRRORING_ERROR_INVALID_OPERATION; } - g_dbus_proxy_call_sync (proxy, "launch_method", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); + g_dbus_proxy_call_sync(proxy, "launch_method", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error) { scmirroring_error("g_dbus_proxy_call_sync failed : %s", error->message); g_error_free(error); @@ -176,7 +176,7 @@ static int __scmirroring_src_get_status(gchar *str) return SCMIRRORING_STATE_NONE; } -static void __scmirroring_src_set_callback_info (scmirroring_src_s *scmirroring, int error_code, int state) +static void __scmirroring_src_set_callback_info(scmirroring_src_s *scmirroring, int error_code, int state) { scmirroring_state_cb_s *cb_info = scmirroring->scmirroring_state_cb; if (cb_info) { @@ -184,7 +184,7 @@ static void __scmirroring_src_set_callback_info (scmirroring_src_s *scmirroring, cb_info->src_state = state; GSource *src_user_cb = NULL; - src_user_cb = g_idle_source_new (); + src_user_cb = g_idle_source_new(); g_source_set_callback(src_user_cb, (GSourceFunc)__scmirroring_src_callback_call, scmirroring, NULL); g_source_attach(src_user_cb, g_main_context_get_thread_default()); } else { @@ -201,7 +201,7 @@ static void __scmirroring_src_interpret(scmirroring_src_s *scmirroring, char *bu int error_code = SCMIRRORING_ERROR_INVALID_OPERATION; int src_state = SCMIRRORING_STATE_NONE; gchar **response; - response = g_strsplit(buf, ":", 0); + response = g_strsplit(buf, ":", 0); scmirroring_debug("error: %s, status: %s", response[0], response[1]); @@ -211,7 +211,7 @@ static void __scmirroring_src_interpret(scmirroring_src_s *scmirroring, char *bu if (scmirroring->current_state != src_state) { scmirroring->current_state = src_state; - __scmirroring_src_set_callback_info (scmirroring, error_code, src_state); + __scmirroring_src_set_callback_info(scmirroring, error_code, src_state); } else { scmirroring_debug("Current state is already %d", src_state); } @@ -223,7 +223,7 @@ gboolean __scmirroring_src_read_cb(GIOChannel *src, GIOCondition condition, gpoi { char buf[MAX_MSG_LEN + 1]; gsize read; - + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)data; if (condition & G_IO_IN) { @@ -248,7 +248,7 @@ gboolean __scmirroring_src_read_cb(GIOChannel *src, GIOCondition condition, gpoi continue; } scmirroring_debug("Handling %s", str); - __scmirroring_src_interpret (_scmirroring, str); + __scmirroring_src_interpret(_scmirroring, str); if (idx >= read) break; } } else if (condition & G_IO_ERR) { @@ -262,17 +262,16 @@ gboolean __scmirroring_src_read_cb(GIOChannel *src, GIOCondition condition, gpoi return TRUE; } -static int __scmirroring_src_send_set_cm (scmirroring_src_h scmirroring) +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; + 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) - { + if (ret != SCMIRRORING_ERROR_NONE) { SCMIRRORING_SAFE_FREE(cmd); scmirroring_error("Failed to be ready [%d]", ret); return SCMIRRORING_ERROR_INVALID_OPERATION; @@ -288,12 +287,11 @@ 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; + 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) - { + if (ret != SCMIRRORING_ERROR_NONE) { SCMIRRORING_SAFE_FREE(cmd); scmirroring_error("Failed to be ready [%d]", ret); return SCMIRRORING_ERROR_INVALID_OPERATION; @@ -304,17 +302,16 @@ static int __scmirroring_src_send_set_ip(scmirroring_src_h scmirroring) return ret; } -static int __scmirroring_src_send_set_reso (scmirroring_src_h scmirroring) +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; + 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) - { + if (ret != SCMIRRORING_ERROR_NONE) { SCMIRRORING_SAFE_FREE(cmd); scmirroring_error("Failed to be ready [%d]", ret); return SCMIRRORING_ERROR_INVALID_OPERATION; @@ -334,10 +331,10 @@ int scmirroring_src_create(scmirroring_src_h *scmirroring) scmirroring_retvm_if(scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - _scmirroring = (scmirroring_src_s*)calloc(1,sizeof(scmirroring_src_s)); + _scmirroring = (scmirroring_src_s *)calloc(1, sizeof(scmirroring_src_s)); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY"); - _scmirroring->ip= NULL; + _scmirroring->ip = NULL; _scmirroring->port = NULL; _scmirroring->connected = NOT_CONNECTED_TO_SERVER; _scmirroring->use_hdcp = TRUE; @@ -360,23 +357,21 @@ int scmirroring_src_set_connection_mode(scmirroring_src_h scmirroring, scmirrori { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if((connect_mode < SCMIRRORING_CONNECTION_WIFI_DIRECT) ||(connect_mode >= SCMIRRORING_CONNECTION_MAX)) - { + if ((connect_mode < SCMIRRORING_CONNECTION_WIFI_DIRECT) || (connect_mode >= SCMIRRORING_CONNECTION_MAX)) { scmirroring_error("INVALID Connection mode : %d", connect_mode); return SCMIRRORING_ERROR_INVALID_PARAMETER; } _scmirroring->connect_mode = connect_mode; - if(_scmirroring->connected) - { - ret = __scmirroring_src_send_set_cm (_scmirroring); + if (_scmirroring->connected) { + ret = __scmirroring_src_send_set_cm(_scmirroring); } scmirroring_debug_fleave(); @@ -388,20 +383,17 @@ int scmirroring_src_set_state_changed_cb(scmirroring_src_h scmirroring, scmirror { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); scmirroring_retvm_if(callback == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "callback is NULL"); - if(_scmirroring->scmirroring_state_cb == NULL) - { - _scmirroring->scmirroring_state_cb = (scmirroring_state_cb_s*)calloc(1, sizeof(scmirroring_state_cb_s)); + if (_scmirroring->scmirroring_state_cb == NULL) { + _scmirroring->scmirroring_state_cb = (scmirroring_state_cb_s *)calloc(1, sizeof(scmirroring_state_cb_s)); scmirroring_retvm_if(_scmirroring->scmirroring_state_cb == NULL, SCMIRRORING_ERROR_OUT_OF_MEMORY, "Error Set CB"); - } - else - { + } else { memset(_scmirroring->scmirroring_state_cb, 0, sizeof(scmirroring_state_cb_s)); } @@ -417,14 +409,13 @@ int scmirroring_src_unset_state_changed_cb(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if(_scmirroring->scmirroring_state_cb != NULL) - { + if (_scmirroring->scmirroring_state_cb != NULL) { _scmirroring->scmirroring_state_cb->user_data = NULL; _scmirroring->scmirroring_state_cb->state_cb = NULL; } @@ -440,7 +431,7 @@ int scmirroring_src_set_ip_and_port(scmirroring_src_h scmirroring, const char *i { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); @@ -451,15 +442,13 @@ int scmirroring_src_set_ip_and_port(scmirroring_src_h scmirroring, const char *i _scmirroring->ip = strdup(ip); _scmirroring->port = strdup(port); - if((_scmirroring->ip == NULL) || (_scmirroring->port == NULL)) - { + if ((_scmirroring->ip == NULL) || (_scmirroring->port == NULL)) { scmirroring_error("OUT_OF_MEMORY"); return SCMIRRORING_ERROR_OUT_OF_MEMORY; } - if(_scmirroring->connected) - { - ret = __scmirroring_src_send_set_ip (_scmirroring); + if (_scmirroring->connected) { + ret = __scmirroring_src_send_set_ip(_scmirroring); } scmirroring_debug_fleave(); @@ -471,23 +460,21 @@ int scmirroring_src_set_resolution(scmirroring_src_h scmirroring, scmirroring_re { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if((resolution < SCMIRRORING_RESOLUTION_1920x1080_P30) ||(resolution >= SCMIRRORING_RESOLUTION_MAX)) - { + if ((resolution < SCMIRRORING_RESOLUTION_1920x1080_P30) || (resolution >= SCMIRRORING_RESOLUTION_MAX)) { scmirroring_error("INVALID resolution : %d", resolution); return SCMIRRORING_ERROR_INVALID_PARAMETER; } _scmirroring->resolution = resolution; - if(_scmirroring->connected) - { - ret = __scmirroring_src_send_set_reso (_scmirroring); + if (_scmirroring->connected) { + ret = __scmirroring_src_send_set_reso(_scmirroring); } scmirroring_debug_fleave(); @@ -504,13 +491,13 @@ int scmirroring_src_connect(scmirroring_src_h scmirroring) GIOChannel *channel = NULL; struct timeval tv_timeout = { TIMEOUT_SEC, 0 }; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); scmirroring_retvm_if(_scmirroring->connected == CONNECTED_TO_SERVER, SCMIRRORING_ERROR_INVALID_OPERATION, - "INVALID OPERATION, already connected to server."); + "INVALID OPERATION, already connected to server."); /*Create TCP Socket*/ if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) { @@ -529,7 +516,7 @@ int scmirroring_src_connect(scmirroring_src_h scmirroring) scmirroring_error("g_io_channel_unix_new failed: %s", strerror(errno)); } - g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL); + g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL); _scmirroring->sock = sock; _scmirroring->channel = channel; @@ -538,11 +525,11 @@ int scmirroring_src_connect(scmirroring_src_h scmirroring) /* Connecting to the miracast server */ memset(&serv_addr, 0, sizeof(struct sockaddr_un)); serv_addr.sun_family = AF_UNIX; - strcpy(serv_addr.sun_path, _scmirroring->sock_path); + strncpy(serv_addr.sun_path, _scmirroring->sock_path, sizeof(serv_addr.sun_path)); try: scmirroring_debug("Trying to connect to the miracast server"); - if (connect(_scmirroring->sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { + if (connect(_scmirroring->sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { /* Once failed to connect, try to launch miracast server */ if (retry == 0) { ret = __miracast_server_launch(_scmirroring); @@ -584,13 +571,12 @@ try: _scmirroring->connected = CONNECTED_TO_SERVER; _scmirroring->current_state = SCMIRRORING_STATE_READY; - __scmirroring_src_set_callback_info (_scmirroring, SCMIRRORING_ERROR_NONE, SCMIRRORING_STATE_READY); + __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); + 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); } scmirroring_debug_fleave(); @@ -602,22 +588,20 @@ int scmirroring_src_disconnect(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if(_scmirroring->channel != NULL) - { - g_io_channel_shutdown (_scmirroring->channel, FALSE, NULL); + if (_scmirroring->channel != NULL) { + g_io_channel_shutdown(_scmirroring->channel, FALSE, NULL); g_io_channel_unref(_scmirroring->channel); _scmirroring->channel = NULL; } - if(_scmirroring->sock != -1) - { - close (_scmirroring->sock); + if (_scmirroring->sock != -1) { + close(_scmirroring->sock); _scmirroring->sock = -1; } @@ -632,14 +616,14 @@ int scmirroring_src_disconnect(scmirroring_src_h scmirroring) int scmirroring_src_start(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_START); - if(ret != SCMIRRORING_ERROR_NONE) + if (ret != SCMIRRORING_ERROR_NONE) scmirroring_error("Failed to start [%d]", ret); scmirroring_debug_fleave(); @@ -650,14 +634,14 @@ int scmirroring_src_start(scmirroring_src_h scmirroring) int scmirroring_src_pause(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_PAUSE); - if(ret != SCMIRRORING_ERROR_NONE) + if (ret != SCMIRRORING_ERROR_NONE) scmirroring_error("Failed to pause [%d]", ret); scmirroring_debug_fleave(); @@ -668,14 +652,14 @@ int scmirroring_src_pause(scmirroring_src_h scmirroring) int scmirroring_src_resume(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_RESUME); - if(ret != SCMIRRORING_ERROR_NONE) + if (ret != SCMIRRORING_ERROR_NONE) scmirroring_error("Failed to resume [%d]", ret); scmirroring_debug_fleave(); @@ -686,14 +670,14 @@ int scmirroring_src_resume(scmirroring_src_h scmirroring) int scmirroring_src_stop(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_STOP); - if(ret != SCMIRRORING_ERROR_NONE) + if (ret != SCMIRRORING_ERROR_NONE) scmirroring_error("Failed to be stop [%d]", ret); scmirroring_debug_fleave(); @@ -704,20 +688,17 @@ int scmirroring_src_stop(scmirroring_src_h scmirroring) int scmirroring_src_destroy(scmirroring_src_h scmirroring) { int ret = SCMIRRORING_ERROR_NONE; - scmirroring_src_s *_scmirroring = (scmirroring_src_s*)scmirroring; + scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring; scmirroring_debug_fenter(); scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL"); - if(_scmirroring->connected == CONNECTED_TO_SERVER) - { + if (_scmirroring->connected == CONNECTED_TO_SERVER) { ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_DESTROY); - if(ret != SCMIRRORING_ERROR_NONE) + if (ret != SCMIRRORING_ERROR_NONE) scmirroring_error("Failed to destroy [%d]", ret); - } - else - { + } else { SCMIRRORING_SAFE_FREE(_scmirroring->ip); SCMIRRORING_SAFE_FREE(_scmirroring->port); SCMIRRORING_SAFE_FREE(_scmirroring->scmirroring_state_cb); diff --git a/src/scmirroring_src_ini.c b/src/scmirroring_src_ini.c index 6faf232..1ed0953 100755 --- a/src/scmirroring_src_ini.c +++ b/src/scmirroring_src_ini.c @@ -28,269 +28,256 @@ static void __scmirroring_ini_check_ini_status(void); /* static void __get_string_list(gchar** out_list, gchar* str); */ /* macro */ -#define SCMIRRORING_INI_GET_STRING( x_item, x_ini, x_default ) \ -do \ -{ \ - gchar* str = iniparser_getstring(dict, x_ini, x_default); \ - \ - if ( str && \ - ( strlen( str ) > 1 ) && \ - ( strlen( str ) < SCMIRRORING_SRC_INI_MAX_STRLEN ) ) \ - { \ - strcpy ( x_item, str ); \ - } \ - else \ - { \ - strcpy ( x_item, x_default ); \ - } \ -}while(0) +#define SCMIRRORING_INI_GET_STRING(x_item, x_ini, x_default) \ + do { \ + gchar *str = iniparser_getstring(dict, x_ini, x_default); \ + \ + if (str && \ + (strlen(str) > 1) && \ + (strlen(str) < SCMIRRORING_SRC_INI_MAX_STRLEN)) { \ + strcpy(x_item, str); \ + } \ + else { \ + strcpy(x_item, x_default); \ + } \ + } while (0); + int scmirroring_src_ini_load(void) { - static gboolean loaded = FALSE; - dictionary * dict = NULL; - gint idx = 0; + static gboolean loaded = FALSE; + dictionary *dict = NULL; + gint idx = 0; - if ( loaded ) - return ERROR_NONE; + if (loaded) + return ERROR_NONE; - dict = NULL; + dict = NULL; - /* disabling ini parsing for launching */ - #if 1 //debianize - /* get scmirroring ini status because system will be crashed - * if ini file is corrupted. - */ - /* FIXIT : the api actually deleting illregular ini. but the function name said it's just checking. */ - __scmirroring_ini_check_ini_status(); + /* disabling ini parsing for launching */ +#if 1 /*debianize */ + /* get scmirroring ini status because system will be crashed + * if ini file is corrupted. + */ + /* FIXIT : the api actually deleting illregular ini. but the function name said it's just checking. */ + __scmirroring_ini_check_ini_status(); - /* first, try to load existing ini file */ - dict = iniparser_load(SCMIRRORING_SRC_INI_DEFAULT_PATH); + /* first, try to load existing ini file */ + dict = iniparser_load(SCMIRRORING_SRC_INI_DEFAULT_PATH); - /* if no file exists. create one with set of default values */ - if ( !dict ) - { + /* if no file exists. create one with set of default values */ + if (!dict) { #if 0 - scmirroring_debug("No inifile found. scmirroring will create default inifile.\n"); - if ( FALSE == __generate_default_ini() ) - { - scmirroring_debug("Creating default inifile failed. Player will use default values.\n"); - } - else - { - /* load default ini */ - dict = iniparser_load(SCMIRRORING_SRC_INI_DEFAULT_PATH); - } + scmirroring_debug("No inifile found. scmirroring will create default inifile.\n"); + if (FALSE == __generate_default_ini()) { + scmirroring_debug("Creating default inifile failed. Player will use default values.\n"); + } else { + /* load default ini */ + dict = iniparser_load(SCMIRRORING_SRC_INI_DEFAULT_PATH); + } #else - scmirroring_debug("No inifile found. \n"); + scmirroring_debug("No inifile found. \n"); - return ERROR_FILE_NOT_FOUND; + return ERROR_FILE_NOT_FOUND; #endif - } + } #endif - /* get ini values */ - memset( &g_scmirroring_src_ini, 0, sizeof(scmirroring_src_ini_t) ); - - if ( dict ) /* if dict is available */ - { - /* general */ - gchar temp[SCMIRRORING_SRC_INI_MAX_STRLEN]; - g_scmirroring_src_ini.videosrc_element = iniparser_getint(dict, "general:videosrc element", DEFAULT_VIDEOSRC); - g_scmirroring_src_ini.session_mode = iniparser_getint(dict, "general:session_mode", DEFAULT_SESSION_MODE); - g_scmirroring_src_ini.videosink_element = iniparser_getint(dict, "general:videosink element", DEFAULT_VIDEOSINK); - g_scmirroring_src_ini.disable_segtrap = iniparser_getboolean(dict, "general:disable segtrap", DEFAULT_DISABLE_SEGTRAP); - g_scmirroring_src_ini.skip_rescan = iniparser_getboolean(dict, "general:skip rescan", DEFAULT_SKIP_RESCAN); - g_scmirroring_src_ini.videosink_element = iniparser_getint(dict, "general:videosink element", DEFAULT_VIDEOSINK); - g_scmirroring_src_ini.mtu_size = iniparser_getint(dict, "general:mtu_size value", DEFAULT_MTU_SIZE); - g_scmirroring_src_ini.generate_dot = iniparser_getboolean(dict, "general:generate dot", DEFAULT_GENERATE_DOT); - g_scmirroring_src_ini.provide_clock= iniparser_getboolean(dict, "general:provide clock", DEFAULT_PROVIDE_CLOCK); + /* get ini values */ + memset(&g_scmirroring_src_ini, 0, sizeof(scmirroring_src_ini_t)); + + if (dict) { /* if dict is available */ + /* general */ + gchar temp[SCMIRRORING_SRC_INI_MAX_STRLEN]; + g_scmirroring_src_ini.videosrc_element = iniparser_getint(dict, "general:videosrc element", DEFAULT_VIDEOSRC); + g_scmirroring_src_ini.session_mode = iniparser_getint(dict, "general:session_mode", DEFAULT_SESSION_MODE); + g_scmirroring_src_ini.videosink_element = iniparser_getint(dict, "general:videosink element", DEFAULT_VIDEOSINK); + g_scmirroring_src_ini.disable_segtrap = iniparser_getboolean(dict, "general:disable segtrap", DEFAULT_DISABLE_SEGTRAP); + g_scmirroring_src_ini.skip_rescan = iniparser_getboolean(dict, "general:skip rescan", DEFAULT_SKIP_RESCAN); + g_scmirroring_src_ini.videosink_element = iniparser_getint(dict, "general:videosink element", DEFAULT_VIDEOSINK); + g_scmirroring_src_ini.mtu_size = iniparser_getint(dict, "general:mtu_size value", DEFAULT_MTU_SIZE); + g_scmirroring_src_ini.generate_dot = iniparser_getboolean(dict, "general:generate dot", DEFAULT_GENERATE_DOT); + g_scmirroring_src_ini.provide_clock = iniparser_getboolean(dict, "general:provide clock", DEFAULT_PROVIDE_CLOCK); #ifndef ENABLE_QC_SPECIFIC - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.name_of_audio_device, "general:exynosaudio device name", DEFAULT_AUDIO_DEVICE_NAME ); - g_scmirroring_src_ini.audio_buffer_time = iniparser_getint(dict, "general:exynosaudio buffer_time",DEFAULT_AUDIO_BUFFER_TIME); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.name_of_audio_device, "general:exynosaudio device name", DEFAULT_AUDIO_DEVICE_NAME); + g_scmirroring_src_ini.audio_buffer_time = iniparser_getint(dict, "general:exynosaudio buffer_time", DEFAULT_AUDIO_BUFFER_TIME); #else - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.name_of_audio_device, "general:qcmsmaudio device name", DEFAULT_AUDIO_DEVICE_NAME ); - g_scmirroring_src_ini.audio_buffer_time = iniparser_getint(dict, "general:qcmsmaudio buffer_time",DEFAULT_AUDIO_BUFFER_TIME); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.name_of_audio_device, "general:qcmsmaudio device name", DEFAULT_AUDIO_DEVICE_NAME); + g_scmirroring_src_ini.audio_buffer_time = iniparser_getint(dict, "general:qcmsmaudio buffer_time", DEFAULT_AUDIO_BUFFER_TIME); #endif - g_scmirroring_src_ini.audio_latency_time = iniparser_getint(dict, "general:audio latency_time",DEFAULT_AUDIO_LATENCY_TIME); - g_scmirroring_src_ini.audio_do_timestamp = iniparser_getint(dict, "general:audio do_timestamp",DEFAULT_AUDIO_DO_TIMESTAMP); - SCMIRRORING_INI_GET_STRING(temp, "general:video resolution_supported", ""); - if (strlen(temp) > 0) g_scmirroring_src_ini.video_reso_supported = strtoull(temp, NULL, 16); - else g_scmirroring_src_ini.video_reso_supported = DEFAULT_VIDEO_RESOLUTION_SUPPORTED; - g_scmirroring_src_ini.decide_udp_bitrate[0] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_1",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[1] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_1",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[2] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_1",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[3] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_2",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[4] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_2",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[5] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_2",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[6] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_3",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[7] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_3",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[8] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_3",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[9] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_4",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[10] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_4",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[11] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_4",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[12] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_5",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[13] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_5",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[14] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_5",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[15] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_6",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[16] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_6",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[17] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_6",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[18] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_7",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[19] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_7",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.decide_udp_bitrate[20] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_7",DEFAULT_VIDEO_BITRATE); - g_scmirroring_src_ini.video_native_resolution = iniparser_getint(dict, "general:video native_resolution",DEFAULT_NATIVE_VIDEO_RESOLUTION); - g_scmirroring_src_ini.hdcp_enabled = iniparser_getint(dict, "general:encryption HDCP_enabled",DEFAULT_HDCP_ENABLED); - g_scmirroring_src_ini.uibc_gen_capability = iniparser_getint(dict, "general:uibc UIBC_GEN_capability",DEFAULT_UIBC_GEN_CAPABILITY); - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.name_of_video_converter, "general:video converter element", DEFAULT_VIDEO_CONVERTER ); - - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.gst_param[0], "general:gstparam1", DEFAULT_GST_PARAM ); - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.gst_param[1], "general:gstparam2", DEFAULT_GST_PARAM ); - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.gst_param[2], "general:gstparam3", DEFAULT_GST_PARAM ); - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.gst_param[3], "general:gstparam4", DEFAULT_GST_PARAM ); - SCMIRRORING_INI_GET_STRING( g_scmirroring_src_ini.gst_param[4], "general:gstparam5", DEFAULT_GST_PARAM ); - - g_scmirroring_src_ini.dump_ts = iniparser_getint(dict, "general:dump ts", DEFAULT_DUMP_TS); - - } - else /* if dict is not available just fill the structure with default value */ - { - scmirroring_debug("failed to load ini. using hardcoded default\n"); - - /* general */ - g_scmirroring_src_ini.videosrc_element = DEFAULT_VIDEOSRC; - g_scmirroring_src_ini.session_mode = DEFAULT_SESSION_MODE; - g_scmirroring_src_ini.disable_segtrap = DEFAULT_DISABLE_SEGTRAP; - g_scmirroring_src_ini.skip_rescan = DEFAULT_SKIP_RESCAN; - g_scmirroring_src_ini.videosink_element = DEFAULT_VIDEOSINK; - g_scmirroring_src_ini.mtu_size = DEFAULT_MTU_SIZE; - g_scmirroring_src_ini.generate_dot = DEFAULT_GENERATE_DOT; - g_scmirroring_src_ini.provide_clock= DEFAULT_PROVIDE_CLOCK; - - strcpy( g_scmirroring_src_ini.name_of_audio_device, DEFAULT_AUDIO_DEVICE_NAME); - g_scmirroring_src_ini.audio_latency_time = DEFAULT_AUDIO_LATENCY_TIME; - g_scmirroring_src_ini.audio_buffer_time = DEFAULT_AUDIO_BUFFER_TIME; - g_scmirroring_src_ini.audio_do_timestamp = DEFAULT_AUDIO_DO_TIMESTAMP; - g_scmirroring_src_ini.video_reso_supported = DEFAULT_VIDEO_RESOLUTION_SUPPORTED; - for (idx=0; idx<21; ++idx) { - g_scmirroring_src_ini.decide_udp_bitrate[idx] = DEFAULT_VIDEO_BITRATE; - } - g_scmirroring_src_ini.video_native_resolution = DEFAULT_NATIVE_VIDEO_RESOLUTION; - g_scmirroring_src_ini.hdcp_enabled = DEFAULT_HDCP_ENABLED; - g_scmirroring_src_ini.uibc_gen_capability = DEFAULT_UIBC_GEN_CAPABILITY; - - strcpy( g_scmirroring_src_ini.name_of_video_converter, DEFAULT_VIDEO_CONVERTER); - - - strcpy( g_scmirroring_src_ini.gst_param[0], DEFAULT_GST_PARAM ); - strcpy( g_scmirroring_src_ini.gst_param[1], DEFAULT_GST_PARAM ); - strcpy( g_scmirroring_src_ini.gst_param[2], DEFAULT_GST_PARAM ); - strcpy( g_scmirroring_src_ini.gst_param[3], DEFAULT_GST_PARAM ); - strcpy( g_scmirroring_src_ini.gst_param[4], DEFAULT_GST_PARAM ); - - g_scmirroring_src_ini.dump_ts = DEFAULT_DUMP_TS; - - } - - /* free dict as we got our own structure */ - iniparser_freedict (dict); - - loaded = TRUE; - - /* The simulator uses a separate ini file. */ - //__scmirroring_ini_force_setting(); - - - /* dump structure */ - scmirroring_debug("scmirroring settings -----------------------------------\n"); - - /* general */ - scmirroring_debug("videosrc element : %d\n", g_scmirroring_src_ini.videosrc_element); - scmirroring_debug("session mode in mirroring : %d\n", g_scmirroring_src_ini.session_mode); - scmirroring_debug("disable_segtrap : %d\n", g_scmirroring_src_ini.disable_segtrap); - scmirroring_debug("skip rescan : %d\n", g_scmirroring_src_ini.skip_rescan); - scmirroring_debug("videosink element(0:v4l2sink, 1:ximagesink, 2:xvimagesink, 3:fakesink) : %d\n", g_scmirroring_src_ini.videosink_element); - scmirroring_debug("mtu_size : %d\n", g_scmirroring_src_ini.mtu_size); - scmirroring_debug("generate_dot : %d\n", g_scmirroring_src_ini.generate_dot); - scmirroring_debug("provide_clock : %d\n", g_scmirroring_src_ini.provide_clock); - scmirroring_debug("name_of_video_converter : %s\n", g_scmirroring_src_ini.name_of_video_converter); - - scmirroring_debug("audio device name : %s\n", g_scmirroring_src_ini.name_of_audio_device); - scmirroring_debug("audio latency_time : %d\n", g_scmirroring_src_ini.audio_latency_time); - scmirroring_debug("audio buffer_time : %d\n", g_scmirroring_src_ini.audio_buffer_time); - scmirroring_debug("audio do_timestamp : %d\n", g_scmirroring_src_ini.audio_do_timestamp); - scmirroring_debug("video resolution_supported : %d\n", g_scmirroring_src_ini.video_reso_supported); - scmirroring_debug("video native_resolution : %d\n", g_scmirroring_src_ini.video_native_resolution); - scmirroring_debug("encryption HDCP_enabled : %d\n", g_scmirroring_src_ini.hdcp_enabled); - scmirroring_debug("uibc UIBC_GEN_capability : %d\n", g_scmirroring_src_ini.uibc_gen_capability); - - scmirroring_debug("gst_param1 : %s\n", g_scmirroring_src_ini.gst_param[0]); - scmirroring_debug("gst_param2 : %s\n", g_scmirroring_src_ini.gst_param[1]); - scmirroring_debug("gst_param3 : %s\n", g_scmirroring_src_ini.gst_param[2]); - scmirroring_debug("gst_param4 : %s\n", g_scmirroring_src_ini.gst_param[3]); - scmirroring_debug("gst_param5 : %s\n", g_scmirroring_src_ini.gst_param[4]); - - scmirroring_debug("dump ts : %d\n", g_scmirroring_src_ini.dump_ts); - - scmirroring_debug("---------------------------------------------------\n"); - - return ERROR_NONE; + g_scmirroring_src_ini.audio_latency_time = iniparser_getint(dict, "general:audio latency_time", DEFAULT_AUDIO_LATENCY_TIME); + g_scmirroring_src_ini.audio_do_timestamp = iniparser_getint(dict, "general:audio do_timestamp", DEFAULT_AUDIO_DO_TIMESTAMP); + SCMIRRORING_INI_GET_STRING(temp, "general:video resolution_supported", ""); + if (strlen(temp) > 0) g_scmirroring_src_ini.video_reso_supported = strtoull(temp, NULL, 16); + else g_scmirroring_src_ini.video_reso_supported = DEFAULT_VIDEO_RESOLUTION_SUPPORTED; + g_scmirroring_src_ini.decide_udp_bitrate[0] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_1", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[1] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_1", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[2] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_1", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[3] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_2", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[4] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_2", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[5] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_2", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[6] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_3", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[7] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_3", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[8] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_3", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[9] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_4", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[10] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_4", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[11] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_4", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[12] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_5", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[13] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_5", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[14] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_5", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[15] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_6", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[16] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_6", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[17] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_6", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[18] = iniparser_getint(dict, "general:INIT_UDP_resolution_set_7", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[19] = iniparser_getint(dict, "general:MIN_UDP_resolution_set_7", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.decide_udp_bitrate[20] = iniparser_getint(dict, "general:MAX_UDP_resolution_set_7", DEFAULT_VIDEO_BITRATE); + g_scmirroring_src_ini.video_native_resolution = iniparser_getint(dict, "general:video native_resolution", DEFAULT_NATIVE_VIDEO_RESOLUTION); + g_scmirroring_src_ini.hdcp_enabled = iniparser_getint(dict, "general:encryption HDCP_enabled", DEFAULT_HDCP_ENABLED); + g_scmirroring_src_ini.uibc_gen_capability = iniparser_getint(dict, "general:uibc UIBC_GEN_capability", DEFAULT_UIBC_GEN_CAPABILITY); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.name_of_video_converter, "general:video converter element", DEFAULT_VIDEO_CONVERTER); + + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.gst_param[0], "general:gstparam1", DEFAULT_GST_PARAM); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.gst_param[1], "general:gstparam2", DEFAULT_GST_PARAM); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.gst_param[2], "general:gstparam3", DEFAULT_GST_PARAM); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.gst_param[3], "general:gstparam4", DEFAULT_GST_PARAM); + SCMIRRORING_INI_GET_STRING(g_scmirroring_src_ini.gst_param[4], "general:gstparam5", DEFAULT_GST_PARAM); + + g_scmirroring_src_ini.dump_ts = iniparser_getint(dict, "general:dump ts", DEFAULT_DUMP_TS); + + } else { /* if dict is not available just fill the structure with default value */ + scmirroring_debug("failed to load ini. using hardcoded default\n"); + + /* general */ + g_scmirroring_src_ini.videosrc_element = DEFAULT_VIDEOSRC; + g_scmirroring_src_ini.session_mode = DEFAULT_SESSION_MODE; + g_scmirroring_src_ini.disable_segtrap = DEFAULT_DISABLE_SEGTRAP; + g_scmirroring_src_ini.skip_rescan = DEFAULT_SKIP_RESCAN; + g_scmirroring_src_ini.videosink_element = DEFAULT_VIDEOSINK; + g_scmirroring_src_ini.mtu_size = DEFAULT_MTU_SIZE; + g_scmirroring_src_ini.generate_dot = DEFAULT_GENERATE_DOT; + g_scmirroring_src_ini.provide_clock = DEFAULT_PROVIDE_CLOCK; + + strcpy(g_scmirroring_src_ini.name_of_audio_device, DEFAULT_AUDIO_DEVICE_NAME); + g_scmirroring_src_ini.audio_latency_time = DEFAULT_AUDIO_LATENCY_TIME; + g_scmirroring_src_ini.audio_buffer_time = DEFAULT_AUDIO_BUFFER_TIME; + g_scmirroring_src_ini.audio_do_timestamp = DEFAULT_AUDIO_DO_TIMESTAMP; + g_scmirroring_src_ini.video_reso_supported = DEFAULT_VIDEO_RESOLUTION_SUPPORTED; + for (idx = 0; idx < 21; ++idx) { + g_scmirroring_src_ini.decide_udp_bitrate[idx] = DEFAULT_VIDEO_BITRATE; + } + g_scmirroring_src_ini.video_native_resolution = DEFAULT_NATIVE_VIDEO_RESOLUTION; + g_scmirroring_src_ini.hdcp_enabled = DEFAULT_HDCP_ENABLED; + g_scmirroring_src_ini.uibc_gen_capability = DEFAULT_UIBC_GEN_CAPABILITY; + + strcpy(g_scmirroring_src_ini.name_of_video_converter, DEFAULT_VIDEO_CONVERTER); + + + strcpy(g_scmirroring_src_ini.gst_param[0], DEFAULT_GST_PARAM); + strcpy(g_scmirroring_src_ini.gst_param[1], DEFAULT_GST_PARAM); + strcpy(g_scmirroring_src_ini.gst_param[2], DEFAULT_GST_PARAM); + strcpy(g_scmirroring_src_ini.gst_param[3], DEFAULT_GST_PARAM); + strcpy(g_scmirroring_src_ini.gst_param[4], DEFAULT_GST_PARAM); + + g_scmirroring_src_ini.dump_ts = DEFAULT_DUMP_TS; + + } + + /* free dict as we got our own structure */ + iniparser_freedict(dict); + + loaded = TRUE; + + /* The simulator uses a separate ini file. */ + /*__scmirroring_ini_force_setting(); */ + + + /* dump structure */ + scmirroring_debug("scmirroring settings-----------------------------------\n"); + + /* general */ + scmirroring_debug("videosrc element : %d\n", g_scmirroring_src_ini.videosrc_element); + scmirroring_debug("session mode in mirroring : %d\n", g_scmirroring_src_ini.session_mode); + scmirroring_debug("disable_segtrap : %d\n", g_scmirroring_src_ini.disable_segtrap); + scmirroring_debug("skip rescan : %d\n", g_scmirroring_src_ini.skip_rescan); + scmirroring_debug("videosink element(0:v4l2sink, 1:ximagesink, 2:xvimagesink, 3:fakesink) : %d\n", g_scmirroring_src_ini.videosink_element); + scmirroring_debug("mtu_size : %d\n", g_scmirroring_src_ini.mtu_size); + scmirroring_debug("generate_dot : %d\n", g_scmirroring_src_ini.generate_dot); + scmirroring_debug("provide_clock : %d\n", g_scmirroring_src_ini.provide_clock); + scmirroring_debug("name_of_video_converter : %s\n", g_scmirroring_src_ini.name_of_video_converter); + + scmirroring_debug("audio device name : %s\n", g_scmirroring_src_ini.name_of_audio_device); + scmirroring_debug("audio latency_time : %d\n", g_scmirroring_src_ini.audio_latency_time); + scmirroring_debug("audio buffer_time : %d\n", g_scmirroring_src_ini.audio_buffer_time); + scmirroring_debug("audio do_timestamp : %d\n", g_scmirroring_src_ini.audio_do_timestamp); + scmirroring_debug("video resolution_supported : %d\n", g_scmirroring_src_ini.video_reso_supported); + scmirroring_debug("video native_resolution : %d\n", g_scmirroring_src_ini.video_native_resolution); + scmirroring_debug("encryption HDCP_enabled : %d\n", g_scmirroring_src_ini.hdcp_enabled); + scmirroring_debug("uibc UIBC_GEN_capability : %d\n", g_scmirroring_src_ini.uibc_gen_capability); + + scmirroring_debug("gst_param1 : %s\n", g_scmirroring_src_ini.gst_param[0]); + scmirroring_debug("gst_param2 : %s\n", g_scmirroring_src_ini.gst_param[1]); + scmirroring_debug("gst_param3 : %s\n", g_scmirroring_src_ini.gst_param[2]); + scmirroring_debug("gst_param4 : %s\n", g_scmirroring_src_ini.gst_param[3]); + scmirroring_debug("gst_param5 : %s\n", g_scmirroring_src_ini.gst_param[4]); + + scmirroring_debug("dump ts : %d\n", g_scmirroring_src_ini.dump_ts); + + scmirroring_debug("---------------------------------------------------\n"); + + return ERROR_NONE; } static void __scmirroring_ini_check_ini_status(void) { - struct stat ini_buff; - - if ( g_stat(SCMIRRORING_SRC_INI_DEFAULT_PATH, &ini_buff) < 0 ) - { - scmirroring_debug("failed to get scmirroring ini status\n"); - } - else - { - if ( ini_buff.st_size < 5 ) - { - scmirroring_debug("scmirroring.ini file size=%d, Corrupted! So, Removed\n", (int)ini_buff.st_size); - g_remove( SCMIRRORING_SRC_INI_DEFAULT_PATH ); - } - } + struct stat ini_buff; + + if (g_stat(SCMIRRORING_SRC_INI_DEFAULT_PATH, &ini_buff) < 0) { + scmirroring_debug("failed to get scmirroring ini status\n"); + } else { + if (ini_buff.st_size < 5) { + scmirroring_debug("scmirroring.ini file size=%d, Corrupted! So, Removed\n", (int)ini_buff.st_size); + g_remove(SCMIRRORING_SRC_INI_DEFAULT_PATH); + } + } } -scmirroring_src_ini_t* +scmirroring_src_ini_t * scmirroring_src_ini_get_structure(void) { - return &g_scmirroring_src_ini; + return &g_scmirroring_src_ini; } #if 0 static -void __get_string_list(gchar** out_list, gchar* str) +void __get_string_list(gchar **out_list, gchar *str) { - gchar** list = NULL; - gchar** walk = NULL; - gint i = 0; - gchar* strtmp = NULL; + gchar **list = NULL; + gchar **walk = NULL; + gint i = 0; + gchar *strtmp = NULL; - if ( ! str ) - return; + if (!str) + return; - if ( strlen( str ) < 1 ) - return; + if (strlen(str) < 1) + return; - strtmp = g_strdup (str); + strtmp = g_strdup(str); - /* trimming. it works inplace */ - g_strstrip( strtmp ); + /* trimming. it works inplace */ + g_strstrip(strtmp); - /* split */ - list = g_strsplit( strtmp, ",", 10 ); + /* split */ + list = g_strsplit(strtmp, ", ", 10); - g_return_if_fail ( list != NULL ); + g_return_if_fail(list != NULL); - g_strfreev( list ); - if (strtmp) - g_free (strtmp); + g_strfreev(list); + if (strtmp) + g_free(strtmp); } #endif diff --git a/test/scmirroring_test.c b/test/scmirroring_test.c index d674f3f..3638a28 100755 --- a/test/scmirroring_test.c +++ b/test/scmirroring_test.c @@ -33,7 +33,7 @@ static void scmirroring_state_callback(scmirroring_error_e error_code, scmirrori static void __quit_program(void) { - g_print ("Quit Program\n"); + g_print("Quit Program\n"); g_scmirroring = 0; g_main_loop_quit(g_loop); @@ -43,11 +43,11 @@ static void __displaymenu(void) { g_print("\n"); g_print("=====================================================================\n"); - g_print(" SCMIRRORING Testsuite (press q to quit) \n"); + g_print(" SCMIRRORING Testsuite(press q to quit) \n"); g_print("=====================================================================\n"); - g_print("a : a ip port (ex. a 192.168.49.1 2022)\n"); - g_print("c : set resolution (ex. c 0 (0 : 1920x1080_P30, 1 : 1280x720_P30, 2 : 960x540_P30, 3: 640x360_P30)\n"); - g_print("f : set connection mode (ex. f 0 (0 : wifi_direct, 1 : Other)\n"); + g_print("a : a ip port(ex. a 192.168.49.1 2022)\n"); + g_print("c : set resolution(ex. c 0 (0 : 1920x1080_P30, 1 : 1280x720_P30, 2 : 960x540_P30, 3: 640x360_P30)\n"); + g_print("f : set connection mode(ex. f 0 (0 : wifi_direct, 1 : Other)\n"); g_print("C : Connect\n"); g_print("I : dIsconnect\n"); g_print("S : Start \n"); @@ -59,88 +59,64 @@ static void __displaymenu(void) g_print("-----------------------------------------------------------------------------------------\n"); } -gboolean __timeout_menu_display(void* data) +gboolean __timeout_menu_display(void *data) { __displaymenu(); return FALSE; } -static void __interpret (char *cmd) +static void __interpret(char *cmd) { int ret = SCMIRRORING_ERROR_NONE; gchar **value; - value = g_strsplit(cmd," ",0); + value = g_strsplit(cmd, " ", 0); - if (strncmp(cmd, "a", 1) == 0) - { + if (strncmp(cmd, "a", 1) == 0) { ret = scmirroring_src_set_ip_and_port(g_scmirroring, value[1], value[2]); - g_print ("Input server IP and port number IP[%s] Port[%s]\n", value[1], value[2]); - } - else if (strncmp(cmd, "c", 1) == 0) - { + g_print("Input server IP and port number IP[%s] Port[%s]\n", value[1], value[2]); + } else if (strncmp(cmd, "c", 1) == 0) { ret = scmirroring_src_set_resolution(g_scmirroring, atoi(value[1])); - g_print ("Set Resolution[%d]\n", atoi(value[1])); - } - else if (strncmp(cmd, "f", 1) == 0) - { + g_print("Set Resolution[%d]\n", atoi(value[1])); + } else if (strncmp(cmd, "f", 1) == 0) { ret = scmirroring_src_set_connection_mode(g_scmirroring, atoi(value[1])); - g_print ("Connection mode [%d]\n", atoi(value[1])); - } - else if (strncmp(cmd, "C", 1) == 0) - { - g_print ("Connect\n"); + g_print("Connection mode [%d]\n", atoi(value[1])); + } else if (strncmp(cmd, "C", 1) == 0) { + g_print("Connect\n"); ret = scmirroring_src_connect(g_scmirroring); - } - else if (strncmp(cmd, "I", 1) == 0) - { - g_print ("dIsconnect\n"); + } else if (strncmp(cmd, "I", 1) == 0) { + g_print("dIsconnect\n"); ret = scmirroring_src_disconnect(g_scmirroring); - } - else if (strncmp(cmd, "S", 1) == 0) - { - g_print ("Start\n"); + } else if (strncmp(cmd, "S", 1) == 0) { + g_print("Start\n"); ret = scmirroring_src_start(g_scmirroring); - } - else if (strncmp(cmd, "P", 1) == 0) - { - g_print ("Pause\n"); + } else if (strncmp(cmd, "P", 1) == 0) { + g_print("Pause\n"); ret = scmirroring_src_pause(g_scmirroring); - } - else if (strncmp(cmd, "R", 1) == 0) - { - g_print ("Resume\n"); + } else if (strncmp(cmd, "R", 1) == 0) { + g_print("Resume\n"); ret = scmirroring_src_resume(g_scmirroring); - } - else if (strncmp(cmd, "T", 1) == 0) - { - g_print ("Stop\n"); + } else if (strncmp(cmd, "T", 1) == 0) { + g_print("Stop\n"); ret = scmirroring_src_stop(g_scmirroring); - } - else if (strncmp(cmd, "D", 1) == 0) - { - g_print ("Destroy\n"); + } else if (strncmp(cmd, "D", 1) == 0) { + g_print("Destroy\n"); ret = scmirroring_src_destroy(g_scmirroring); - } - else if (strncmp(cmd, "q", 1) == 0) - { + } else if (strncmp(cmd, "q", 1) == 0) { __quit_program(); - } - else - { + } else { g_print("unknown menu \n"); } - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("Error Occured [%d]\n", ret); } g_timeout_add(100, __timeout_menu_display, 0); -return; + return; } -gboolean __input (GIOChannel *channel) +gboolean __input(GIOChannel *channel) { char buf[MAX_STRING_LEN + 3]; gsize read; @@ -149,7 +125,7 @@ gboolean __input (GIOChannel *channel) g_io_channel_read_chars(channel, buf, MAX_STRING_LEN, &read, &error); buf[read] = '\0'; g_strstrip(buf); - __interpret (buf); + __interpret(buf); return TRUE; } @@ -158,19 +134,17 @@ int main(int argc, char *argv[]) int ret = 0; GIOChannel *stdin_channel; stdin_channel = g_io_channel_unix_new(0); - g_io_channel_set_flags (stdin_channel, G_IO_FLAG_NONBLOCK, NULL); + g_io_channel_set_flags(stdin_channel, G_IO_FLAG_NONBLOCK, NULL); g_io_add_watch(stdin_channel, G_IO_IN, (GIOFunc)__input, NULL); ret = scmirroring_src_create(&g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_src_create fail [%d]", ret); return 0; } ret = scmirroring_src_set_state_changed_cb(g_scmirroring, scmirroring_state_callback, NULL); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_src_create fail [%d]", ret); return 0; } diff --git a/test/scmirroring_wifi_direct_test.c b/test/scmirroring_wifi_direct_test.c index 4daeef8..2459d7e 100755 --- a/test/scmirroring_wifi_direct_test.c +++ b/test/scmirroring_wifi_direct_test.c @@ -21,6 +21,7 @@ #include #define MAX_STRING_LEN 2048 +/*#define ENABLE_WIFI_DIRECT */ scmirroring_src_h g_scmirroring = NULL; GMainLoop *g_loop; @@ -36,7 +37,7 @@ static gboolean __disconnect_p2p_connection(void); static int g_peer_cnt = 0; static char g_peer_ip[32]; static char g_peer_port[32]; -static char g_sink_mac_addr[18] = {0,}; +static char g_sink_mac_addr[18] = {0, }; static void scmirroring_state_callback(scmirroring_error_e error_code, scmirroring_state_e state, void *user_data) { @@ -47,7 +48,7 @@ static void scmirroring_state_callback(scmirroring_error_e error_code, scmirrori static void __quit_program(void) { - g_print ("Quit Program\n"); + g_print("Quit Program\n"); __disconnect_p2p_connection(); @@ -59,12 +60,12 @@ static void __displaymenu(void) { g_print("\n"); g_print("=====================================================================\n"); - g_print(" SCMIRRORING Testsuite (press q to quit) \n"); + g_print(" SCMIRRORING Testsuite(press q to quit) \n"); g_print("=====================================================================\n"); - g_print("a : a ip port (ex. a 192.168.49.1 2022)\n"); - g_print("b : set sink device mac address (ex. b f8:d0:bd:7f:e9:7c)\n"); - g_print("c : set resolution (ex. c 0 (0 : 1920x1080_P30, 1 : 1280x720_P30, 2 : 960x540_P30, 3: 640x360_P30)\n"); - g_print("f : set connection mode (ex. f 0 (0 : wifi_direct, 1 : Other)\n"); + g_print("a : a ip port(ex. a 192.168.49.1 2022)\n"); + g_print("b : set sink device mac address(ex. b f8:d0:bd:7f:e9:7c)\n"); + g_print("c : set resolution(ex. c 0 (0 : 1920x1080_P30, 1 : 1280x720_P30, 2 : 960x540_P30, 3: 640x360_P30)\n"); + g_print("f : set connection mode(ex. f 0 (0 : wifi_direct, 1 : Other)\n"); g_print("C : Connect\n"); g_print("I : dIsconnect\n"); g_print("S : Start \n"); @@ -77,7 +78,7 @@ static void __displaymenu(void) g_print("-----------------------------------------------------------------------------------------\n"); } -gboolean __timeout_menu_display(void* data) +gboolean __timeout_menu_display(void *data) { __displaymenu(); return FALSE; @@ -90,7 +91,7 @@ static int __wifi_direct_device_connect() return SCMIRRORING_ERROR_INVALID_OPERATION; } - int err= wifi_direct_connect(g_sink_mac_addr); + int err = wifi_direct_connect(g_sink_mac_addr); if (err != WIFI_DIRECT_ERROR_NONE) { g_print("Failed to connect [%d]\n", err); return SCMIRRORING_ERROR_INVALID_OPERATION; @@ -98,91 +99,66 @@ static int __wifi_direct_device_connect() return SCMIRRORING_ERROR_NONE; } -static void __interpret (char *cmd) +static void __interpret(char *cmd) { int ret = SCMIRRORING_ERROR_NONE; gchar **value; - value = g_strsplit(cmd," ",0); + value = g_strsplit(cmd, " ", 0); - if (strncmp(cmd, "a", 1) == 0) - { + if (strncmp(cmd, "a", 1) == 0) { ret = scmirroring_src_set_ip_and_port(g_scmirroring, value[1], value[2]); - g_print ("Input server IP and port number IP[%s] Port[%s]\n", value[1], value[2]); + g_print("Input server IP and port number IP[%s] Port[%s]\n", value[1], value[2]); } - if (strncmp(cmd, "b", 1) == 0) - { - strncpy (g_sink_mac_addr, value[1], sizeof (g_sink_mac_addr)); + if (strncmp(cmd, "b", 1) == 0) { + strncpy(g_sink_mac_addr, value[1], sizeof(g_sink_mac_addr)); g_sink_mac_addr[17] = '\0'; - g_print ("Sink mac address : %s\n", g_sink_mac_addr); + g_print("Sink mac address : %s\n", g_sink_mac_addr); ret = __wifi_direct_device_connect(); - } - else if (strncmp(cmd, "c", 1) == 0) - { + } else if (strncmp(cmd, "c", 1) == 0) { ret = scmirroring_src_set_resolution(g_scmirroring, atoi(value[1])); - g_print ("Set Resolution[%d]\n", atoi(value[1])); - } - else if (strncmp(cmd, "f", 1) == 0) - { + g_print("Set Resolution[%d]\n", atoi(value[1])); + } else if (strncmp(cmd, "f", 1) == 0) { ret = scmirroring_src_set_connection_mode(g_scmirroring, atoi(value[1])); - g_print ("Connection mode [%d]\n", atoi(value[1])); - } - else if (strncmp(cmd, "C", 1) == 0) - { - g_print ("Connect\n"); + g_print("Connection mode [%d]\n", atoi(value[1])); + } else if (strncmp(cmd, "C", 1) == 0) { + g_print("Connect\n"); ret = scmirroring_src_connect(g_scmirroring); - } - else if (strncmp(cmd, "I", 1) == 0) - { - g_print ("dIsconnect\n"); + } else if (strncmp(cmd, "I", 1) == 0) { + g_print("dIsconnect\n"); ret = scmirroring_src_disconnect(g_scmirroring); - } - else if (strncmp(cmd, "S", 1) == 0) - { - g_print ("Start\n"); + } else if (strncmp(cmd, "S", 1) == 0) { + g_print("Start\n"); ret = scmirroring_src_start(g_scmirroring); - } - else if (strncmp(cmd, "P", 1) == 0) - { - g_print ("Pause\n"); + } else if (strncmp(cmd, "P", 1) == 0) { + g_print("Pause\n"); ret = scmirroring_src_pause(g_scmirroring); - } - else if (strncmp(cmd, "R", 1) == 0) - { - g_print ("Resume\n"); + } else if (strncmp(cmd, "R", 1) == 0) { + g_print("Resume\n"); ret = scmirroring_src_resume(g_scmirroring); - } - else if (strncmp(cmd, "T", 1) == 0) - { - g_print ("Stop\n"); + } else if (strncmp(cmd, "T", 1) == 0) { + g_print("Stop\n"); ret = scmirroring_src_stop(g_scmirroring); - g_print ("Stop end\n"); - } - else if (strncmp(cmd, "D", 1) == 0) - { - g_print ("Destroy\n"); + g_print("Stop end\n"); + } else if (strncmp(cmd, "D", 1) == 0) { + g_print("Destroy\n"); ret = scmirroring_src_destroy(g_scmirroring); - } - else if (strncmp(cmd, "q", 1) == 0) - { + } else if (strncmp(cmd, "q", 1) == 0) { __quit_program(); - } - else - { + } else { g_print("unknown menu \n"); } - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("Error Occured [%d]\n", ret); } g_timeout_add(100, __timeout_menu_display, 0); - g_print ("Return interpret\n"); + g_print("Return interpret\n"); return; } -gboolean __input (GIOChannel *channel) +gboolean __input(GIOChannel *channel) { char buf[MAX_STRING_LEN + 3]; gsize read; @@ -190,9 +166,9 @@ gboolean __input (GIOChannel *channel) g_io_channel_read_chars(channel, buf, MAX_STRING_LEN, &read, &error); buf[read] = '\0'; - g_print ("Read %"G_GSSIZE_FORMAT" bytes: %s\n", read, buf); + g_print("Read %"G_GSSIZE_FORMAT" bytes: %s\n", read, buf); g_strstrip(buf); - __interpret (buf); + __interpret(buf); return TRUE; } @@ -201,16 +177,13 @@ static gboolean __disconnect_p2p_connection(void) int ret = WIFI_DIRECT_ERROR_NONE; ret = wifi_direct_disconnect_all(); - if(!ret) - { + if (!ret) { g_print("wifi_direct_disconnect_all success\n"); - } - else - { + } else { g_print("wifi_direct_disconnect_all fail\n"); } - g_print("------ p2p connection disconnected ------\n"); + g_print("------p2p connection disconnected------\n"); return TRUE; } @@ -218,7 +191,7 @@ static gboolean __disconnect_p2p_connection(void) bool _connected_peer_cb(wifi_direct_connected_peer_info_s *peer, void *user_data) { g_print("[_connected_peer_cb] Connected to IP [%s]\n", peer->ip_address); - //g_print("[_connected_peer_cb] Connected to Port [%d]\n", peer->scmirroring_ctrl_port); + /*g_print("[_connected_peer_cb] Connected to Port [%d]\n", peer->scmirroring_ctrl_port); */ g_print("[_connected_peer_cb] Connected device_name [%s]\n", peer->device_name); g_print("[_connected_peer_cb] Connected to mac_address [%s]\n", peer->mac_address); g_print("[_connected_peer_cb] Connected to interface_address [%s]\n", peer->interface_address); @@ -227,17 +200,16 @@ bool _connected_peer_cb(wifi_direct_connected_peer_info_s *peer, void *user_data memset(g_peer_port, 0x00, sizeof(g_peer_port)); snprintf(g_peer_ip, sizeof(g_peer_ip), "%s", peer->ip_address); - //snprintf(g_peer_port, sizeof(g_peer_port), "%d", peer->scmirroring_ctrl_port); + /*snprintf(g_peer_port, sizeof(g_peer_port), "%d", peer->scmirroring_ctrl_port); */ - //g_timeout_add(SINKTEST_EXECUTE_DELAY, __scmirroring_sink_start, NULL); + /*g_timeout_add(SINKTEST_EXECUTE_DELAY, __scmirroring_sink_start, NULL); */ return TRUE; } void _activation_cb(int error_code, wifi_direct_device_state_e device_state, void *user_data) { - switch (device_state) - { + switch (device_state) { case WIFI_DIRECT_DEVICE_STATE_ACTIVATED: g_print("device_state : WIFI_DIRECT_DEVICE_STATE_ACTIVATED\n"); break; @@ -264,10 +236,9 @@ bool _discovered_peer_cb(wifi_direct_discovered_peer_info_s *peer, void *user_da void _discover_cb(int error_code, wifi_direct_discovery_state_e discovery_state, void *user_data) { int ret = WIFI_DIRECT_ERROR_NONE; - //g_print("Discovered [ error : %d discovery state : %d ]\n", error_code, discovery_state); + /*g_print("Discovered [ error : %d discovery state : %d ]\n", error_code, discovery_state); */ - switch (discovery_state) - { + switch (discovery_state) { case WIFI_DIRECT_ONLY_LISTEN_STARTED: g_print("discovery_state : WIFI_DIRECT_ONLY_LISTEN_STARTED \n"); break; @@ -277,8 +248,7 @@ void _discover_cb(int error_code, wifi_direct_discovery_state_e discovery_state, case WIFI_DIRECT_DISCOVERY_FOUND: g_print("discovery_state : WIFI_DIRECT_DISCOVERY_FOUND \n"); ret = wifi_direct_foreach_discovered_peers(_discovered_peer_cb, (void *)NULL); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_foreach_discovered_peers failed : %d\n", ret); } break; @@ -297,43 +267,41 @@ void _ip_assigned_cb(const char *mac_address, const char *ip_address, const char { char *local_ip = NULL; - wifi_direct_get_ip_address (&local_ip); + wifi_direct_get_ip_address(&local_ip); if (!local_ip) { - g_print ("Failed to get local ip\n"); + g_print("Failed to get local ip\n"); return; } g_print("[_ip_assigned_cb] IP assigned [ ip addr : %s if addr : %s mac_addr:%s ]\n", ip_address, interface_address, mac_address); scmirroring_src_set_ip_and_port(g_scmirroring, local_ip, "2022"); - g_print ("Input server IP and port number IP[%s] Port[%s]\n", local_ip, "2022"); + g_print("Input server IP and port number IP[%s] Port[%s]\n", local_ip, "2022"); + g_free(local_ip); } void _connection_cb(int error_code, wifi_direct_connection_state_e connection_state, const char *mac_address, void *user_data) { g_print("Connected [ error : %d connection state : %d mac_addr:%s ]\n", error_code, connection_state, mac_address); - switch (connection_state) - { - case WIFI_DIRECT_CONNECTION_IN_PROGRESS: - { - g_print(" WIFI_DIRECT_CONNECTION_IN_PROGRESS\n"); - break; - } - case WIFI_DIRECT_CONNECTION_RSP: - { - g_print(" WIFI_DIRECT_CONNECTION_RSP\n"); - bool is_go = FALSE; - wifi_direct_is_group_owner(&is_go); - if(!is_go) { - wifi_direct_foreach_connected_peers(_connected_peer_cb, (void *)NULL); - g_print("WIFI_DIRECT_CONNECTION_RSP : Source is not group owner\n"); - } else { - g_print("WIFI_DIRECT_CONNECTION_RSP : Source is group owner\n "); + switch (connection_state) { + case WIFI_DIRECT_CONNECTION_IN_PROGRESS: { + g_print(" WIFI_DIRECT_CONNECTION_IN_PROGRESS\n"); + break; + } + case WIFI_DIRECT_CONNECTION_RSP: { + g_print(" WIFI_DIRECT_CONNECTION_RSP\n"); + bool is_go = FALSE; + wifi_direct_is_group_owner(&is_go); + if (!is_go) { + wifi_direct_foreach_connected_peers(_connected_peer_cb, (void *)NULL); + g_print("WIFI_DIRECT_CONNECTION_RSP : Source is not group owner\n"); + } else { + g_print("WIFI_DIRECT_CONNECTION_RSP : Source is group owner\n "); + } + break; } - break; - } case WIFI_DIRECT_CONNECTION_REQ: case WIFI_DIRECT_CONNECTION_WPS_REQ: case WIFI_DIRECT_DISCONNECTION_RSP: @@ -347,151 +315,134 @@ void _connection_cb(int error_code, wifi_direct_connection_state_e connection_st return; } +#ifdef ENABLE_WIFI_DIRECT static gboolean __start_p2p_connection(gpointer data) { - int ret = WIFI_DIRECT_ERROR_NONE; - int go_intent = 0; - wifi_direct_state_e direct_state = WIFI_DIRECT_STATE_DEACTIVATED; - struct ug_data *ugd = (struct ug_data *)data; - - g_print("====== Start p2p connection ======\n"); - - ret = wifi_direct_initialize(); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_initialize failed : %d\n", ret); - return FALSE; - } - - /* Activation / Deactivation state Callback */ - ret = wifi_direct_set_device_state_changed_cb(_activation_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_set_device_state_changed_cb failed : %d\n", ret); - goto error; - } - - /* Discovery state Callback */ - ret = wifi_direct_set_discovery_state_changed_cb(_discover_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_set_discovery_state_changed_cb failed : %d\n", ret); - goto error; - } - - /* Connection state Callback */ - ret = wifi_direct_set_connection_state_changed_cb(_connection_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_set_connection_state_changed_cb failed : %d\n", ret); - goto error; - } - - /* IP address assigning state callback */ - ret = wifi_direct_set_client_ip_address_assigned_cb(_ip_assigned_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_set_client_ip_address_assigned_cb failed : %d\n", ret); - goto error; - } - - ret = wifi_direct_get_state(&direct_state); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_get_state failed : %d\n", ret); - goto error; - } - - if (direct_state < WIFI_DIRECT_STATE_ACTIVATED) - { - g_print("wifi direct status < WIFI_DIRECT_STATE_ACTIVATED\n"); - g_print("\n ------ Starting to activate scmirroring ------\n"); - ret = wifi_direct_activate(); - if (ret < WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_activate failed : %d\n", ret); - return FALSE; - } - } - else - { - g_print("wifi direct status >= WIFI_DIRECT_STATE_ACTIVATED.. Disconnect all first\n"); - ret = wifi_direct_disconnect_all(); - if(!ret) - { - g_print("wifi_direct_disconnect_all success\n"); - } - else - { - g_print("wifi_direct_disconnect_all fail\n"); - } - } - -#if 0 - /*Enable Screen Mirroring*/ + int ret = WIFI_DIRECT_ERROR_NONE; + int go_intent = 0; + wifi_direct_state_e direct_state = WIFI_DIRECT_STATE_DEACTIVATED; + struct ug_data *ugd = (struct ug_data *)data; + + g_print("====== Start p2p connection ======\n"); + + ret = wifi_direct_initialize(); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_initialize failed : %d\n", ret); + return FALSE; + } + + /* Activation / Deactivation state Callback */ + ret = wifi_direct_set_device_state_changed_cb(_activation_cb, (void *)ugd); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_set_device_state_changed_cb failed : %d\n", ret); + goto error; + } + + /* Discovery state Callback */ + ret = wifi_direct_set_discovery_state_changed_cb(_discover_cb, (void *)ugd); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_set_discovery_state_changed_cb failed : %d\n", ret); + goto error; + } + + /* Connection state Callback */ + ret = wifi_direct_set_connection_state_changed_cb(_connection_cb, (void *)ugd); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_set_connection_state_changed_cb failed : %d\n", ret); + goto error; + } + + /* IP address assigning state callback */ + ret = wifi_direct_set_client_ip_address_assigned_cb(_ip_assigned_cb, (void *)ugd); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_set_client_ip_address_assigned_cb failed : %d\n", ret); + goto error; + } + + ret = wifi_direct_get_state(&direct_state); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_get_state failed : %d\n", ret); + goto error; + } + + if (direct_state < WIFI_DIRECT_STATE_ACTIVATED) { + g_print("wifi direct status < WIFI_DIRECT_STATE_ACTIVATED\n"); + g_print("\n------Starting to activate scmirroring------\n"); + ret = wifi_direct_activate(); + if (ret < WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_activate failed : %d\n", ret); + return FALSE; + } + } else { + g_print("wifi direct status >= WIFI_DIRECT_STATE_ACTIVATED.. Disconnect all first\n"); + ret = wifi_direct_disconnect_all(); + if (!ret) { + g_print("wifi_direct_disconnect_all success\n"); + } else { + g_print("wifi_direct_disconnect_all fail\n"); + } + } + + /*Enable Screen Mirroring*/ ret = wifi_direct_init_display(); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_init_display failed : %d\n", ret); - goto error; - } + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_init_display failed : %d\n", ret); + goto error; + } ret = wifi_direct_set_display_availability(TRUE); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_set_display_availability failed : %d\n", ret); - goto error; - } + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_set_display_availability failed : %d\n", ret); + goto error; + } ret = wifi_direct_set_display(WIFI_DISPLAY_TYPE_SRC, 2022, 0); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_display_set_device failed : %d\n", ret); - goto error; - } -#endif + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_display_set_device failed : %d\n", ret); + goto error; + } + + ret = wifi_direct_get_group_owner_intent(&go_intent); + g_print("go_intent = [%d]\n", go_intent); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_get_group_owner_intent failed : %d\n", ret); + goto error; + } + + go_intent = 14; + ret = wifi_direct_set_group_owner_intent(go_intent); + if (ret != WIFI_DIRECT_ERROR_NONE) { + g_print("Error : wifi_direct_get_group_owner_intent failed : %d\n", ret); + goto error; + } + g_print("wifi_direct_set_group_owner_intent() result=[%d] go_intent[%d]\n", ret, go_intent); + + /* 10 sec discovery in cycle mode */ + int err = wifi_direct_start_discovery(0, 10); + if (err < WIFI_DIRECT_ERROR_NONE) { + g_print("wifi_direct_discovery fail\n"); + return false; + } else { + g_print("wifi_direct_discovery start\n"); + } + - ret = wifi_direct_get_group_owner_intent(&go_intent); - g_print("go_intent = [%d]\n", go_intent); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_get_group_owner_intent failed : %d\n", ret); - goto error; - } - - go_intent = 14; - ret = wifi_direct_set_group_owner_intent(go_intent); - if(ret != WIFI_DIRECT_ERROR_NONE) - { - g_print("Error : wifi_direct_get_group_owner_intent failed : %d\n", ret); - goto error; - } - g_print("wifi_direct_set_group_owner_intent() result=[%d] go_intent[%d]\n", ret, go_intent); - -/* 10 sec discovery in cycle mode */ - int err = wifi_direct_start_discovery(0,10); - if (err < WIFI_DIRECT_ERROR_NONE) { - g_print("wifi_direct_discovery fail\n"); - return false; - } else { - g_print("wifi_direct_discovery start\n"); - } - - - g_print("====== p2p connection established ======\n"); - - return TRUE; + g_print("====== p2p connection established ======\n"); + + return TRUE; error: - ret = wifi_direct_deinitialize(); + ret = wifi_direct_deinitialize(); - return FALSE; + return FALSE; } +#endif gboolean _scmirroring_start_jobs(gpointer data) { +#ifdef ENABLE_WIFI_DIRECT __start_p2p_connection(data); - +#endif return FALSE; } @@ -501,19 +452,17 @@ int main(int argc, char *argv[]) GIOChannel *stdin_channel; GMainContext *context = NULL; stdin_channel = g_io_channel_unix_new(0); - g_io_channel_set_flags (stdin_channel, G_IO_FLAG_NONBLOCK, NULL); + g_io_channel_set_flags(stdin_channel, G_IO_FLAG_NONBLOCK, NULL); g_io_add_watch(stdin_channel, G_IO_IN, (GIOFunc)__input, NULL); ret = scmirroring_src_create(&g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_src_create fail [%d]", ret); return 0; } ret = scmirroring_src_set_state_changed_cb(g_scmirroring, scmirroring_state_callback, NULL); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_src_create fail [%d]", ret); return 0; } @@ -525,8 +474,8 @@ int main(int argc, char *argv[]) GSource *start_job_src = NULL; start_job_src = g_idle_source_new(); - g_source_set_callback (start_job_src, _scmirroring_start_jobs, NULL, NULL); - g_source_attach (start_job_src, context); + g_source_set_callback(start_job_src, _scmirroring_start_jobs, NULL, NULL); + g_source_attach(start_job_src, context); g_main_loop_run(g_loop); diff --git a/test_sink/scmirroring_sink_test.c b/test_sink/scmirroring_sink_test.c index a579d3f..b789558 100755 --- a/test_sink/scmirroring_sink_test.c +++ b/test_sink/scmirroring_sink_test.c @@ -22,10 +22,15 @@ #define MAX_STRING_LEN 2048 #define SINKTEST_EXECUTE_DELAY 5000 +#define MAIN_MENU 0 +#define SUBMENU_RESOLUTION 1 -//#define TEST_WITH_WIFI_DIRECT +/*#define TEST_WITH_WIFI_DIRECT */ scmirroring_sink_h g_scmirroring = NULL; +gint g_resolution = 0; +gint g_menu = MAIN_MENU; + GMainLoop *g_loop; #ifdef TEST_WITH_WIFI_DIRECT static int g_peer_cnt = 0; @@ -43,28 +48,105 @@ static int __scmirroring_sink_create(gpointer data); static gboolean __start_p2p_connection(gpointer data); static gboolean __disconnect_p2p_connection(void); #endif +static void __quit_program(void); +gboolean __timeout_menu_display(void *data); +static void __display_resolution_submenu(void); +gboolean __timeout_resolution_submenu_display(void *data); +static void __interpret_resolution_submenu(char *cmd); + + +gboolean __timeout_resolution_submenu_display(void *data) +{ + __display_resolution_submenu(); + return FALSE; +} + +static void __display_resolution_submenu(void) +{ + g_print("\n"); + g_print("**********************************************************************\n"); + g_print(" Setting resolution \n"); + g_print("**********************************************************************\n"); + g_print("1 : SCMIRRORING_RESOLUTION_1920x1080_P30 [%d]\n", SCMIRRORING_RESOLUTION_1920x1080_P30); + g_print("2 : SCMIRRORING_RESOLUTION_1280x720_P30 [%d]\n", SCMIRRORING_RESOLUTION_1280x720_P30); + g_print("3 : SCMIRRORING_RESOLUTION_960x540_P30 [%d]\n", SCMIRRORING_RESOLUTION_960x540_P30); + g_print("4 : SCMIRRORING_RESOLUTION_864x480_P30 [%d]\n", SCMIRRORING_RESOLUTION_864x480_P30); + g_print("5 : SCMIRRORING_RESOLUTION_720x480_P60 [%d]\n", SCMIRRORING_RESOLUTION_720x480_P60); + g_print("6 : SCMIRRORING_RESOLUTION_640x480_P60 [%d]\n", SCMIRRORING_RESOLUTION_640x480_P60); + g_print("7 : SCMIRRORING_RESOLUTION_640x360_P30 [%d]\n", SCMIRRORING_RESOLUTION_640x360_P30); + g_print("r : Reset resolution \n"); + g_print("g : Go back to main menu \n"); + g_print("**********************************************************************\n"); + +} + +static void __interpret_resolution_submenu(char *cmd) +{ + if (strncmp(cmd, "1", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_1920x1080_P30[%d]\n", SCMIRRORING_RESOLUTION_1920x1080_P30); + g_resolution |= SCMIRRORING_RESOLUTION_1920x1080_P30; + } else if (strncmp(cmd, "2", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_1280x720_P30[%d]\n", SCMIRRORING_RESOLUTION_1280x720_P30); + g_resolution |= SCMIRRORING_RESOLUTION_1280x720_P30; + } else if (strncmp(cmd, "3", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_960x540_P30[%d]\n", SCMIRRORING_RESOLUTION_960x540_P30); + g_resolution |= SCMIRRORING_RESOLUTION_960x540_P30; + } else if (strncmp(cmd, "4", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_864x480_P30[%d]\n", SCMIRRORING_RESOLUTION_864x480_P30); + g_resolution |= SCMIRRORING_RESOLUTION_864x480_P30; + } else if (strncmp(cmd, "5", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_720x480_P60[%d]\n", SCMIRRORING_RESOLUTION_720x480_P60); + g_resolution |= SCMIRRORING_RESOLUTION_720x480_P60; + } else if (strncmp(cmd, "6", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_640x480_P60[%d]\n", SCMIRRORING_RESOLUTION_640x480_P60); + g_resolution |= SCMIRRORING_RESOLUTION_640x480_P60; + } else if (strncmp(cmd, "7", 1) == 0) { + g_print("resolution |= SCMIRRORING_RESOLUTION_640x360_P30[%d]\n", SCMIRRORING_RESOLUTION_640x360_P30); + g_resolution |= SCMIRRORING_RESOLUTION_640x360_P30; + } else if (strncmp(cmd, "r", 1) == 0) { + g_resolution = 0; + } else if (strncmp(cmd, "g", 1) == 0) { + g_print("go back to main menu\n"); + g_menu = MAIN_MENU; + g_timeout_add(100, __timeout_menu_display, 0); + return; + } + + g_print("resolution : %d\n", g_resolution); + + g_timeout_add(100, __timeout_resolution_submenu_display, 0); + + return; +} static void scmirroring_sink_state_callback(scmirroring_error_e error_code, scmirroring_sink_state_e state, void *user_data) { - g_print("Received Callback error code[%d]", error_code); + g_print("Received Callback error code[%d] state[%d]", error_code, state); - if(state == SCMIRRORING_SINK_STATE_NONE) + if (state == SCMIRRORING_SINK_STATE_NONE) g_print(" state[%d] SCMIRRORING_SINK_STATE_NONE", state); - else if(state == SCMIRRORING_SINK_STATE_NULL) + else if (state == SCMIRRORING_SINK_STATE_NULL) g_print(" st ate[%d] (state == SCMIRRORING_SINK_STATE_NULL)", state); - else if(state ==SCMIRRORING_SINK_STATE_PREPARED) + else if (state == SCMIRRORING_SINK_STATE_PREPARED) g_print(" state[%d] SCMIRRORING_SINK_STATE_PREPARED", state); - else if(state == SCMIRRORING_SINK_STATE_CONNECTED) + else if (state == SCMIRRORING_SINK_STATE_CONNECTED) { g_print(" state[%d] SCMIRRORING_SINK_STATE_CONNECTED", state); - if(scmirroring_sink_start(g_scmirroring)!= SCMIRRORING_ERROR_NONE) + if (scmirroring_sink_start(g_scmirroring) != SCMIRRORING_ERROR_NONE) g_print("scmirroring_sink_start fail"); - else if(state == SCMIRRORING_SINK_STATE_PLAYING) + } else if (state == SCMIRRORING_SINK_STATE_PLAYING) g_print(" state[%d] SCMIRRORING_SINK_STATE_PLAYING", state); - else if(state == SCMIRRORING_SINK_STATE_PAUSED) + else if (state == SCMIRRORING_SINK_STATE_PAUSED) g_print(" state[%d] SCMIRRORING_SINK_STATE_PAUSED", state); - else if(state == SCMIRRORING_SINK_STATE_DISCONNECTED) + else if (state == SCMIRRORING_SINK_STATE_DISCONNECTED) { g_print(" state[%d] SCMIRRORING_SINK_STATE_DISCONNECTED", state); - else + if (scmirroring_sink_unprepare(g_scmirroring) != SCMIRRORING_ERROR_NONE) { + g_print("scmirroring_sink_unprepare fail"); + } + if (scmirroring_sink_destroy(g_scmirroring) != SCMIRRORING_ERROR_NONE) { + g_print("scmirroring_sink_destroy fail"); + } + __quit_program(); + } else g_print(" state[%d] Invalid State", state); return; @@ -72,7 +154,7 @@ static void scmirroring_sink_state_callback(scmirroring_error_e error_code, scmi static void __quit_program(void) { - g_print ("Quit Program\n"); + g_print("Quit Program\n"); #ifdef TEST_WITH_WIFI_DIRECT __disconnect_p2p_connection(); @@ -85,19 +167,22 @@ static void __displaymenu(void) { g_print("\n"); g_print("=====================================================================\n"); - g_print(" SCMIRRORING Sink Testsuite (press q to quit) \n"); + g_print(" SCMIRRORING Sink Testsuite(press q to quit) \n"); g_print("=====================================================================\n"); #ifndef TEST_WITH_WIFI_DIRECT - g_print("a : a ip port (ex. a 192.168.49.1 2022)\n"); + g_print("a : a ip port(ex. a 192.168.49.1 2022)\n"); g_print("s : start \n"); #endif + g_print("P : Pause\n"); + g_print("R : Resume\n"); g_print("D : Disconnect\n"); g_print("T : desTroy\n"); + g_print("L : Setting resolution\n"); g_print("q : quit\n"); g_print("-----------------------------------------------------------------------------------------\n"); } -gboolean __timeout_menu_display(void* data) +gboolean __timeout_menu_display(void *data) { __displaymenu(); @@ -108,14 +193,12 @@ gboolean __timeout_menu_display(void* data) bool _connected_peer_cb(wifi_direct_connected_peer_info_s *peer, void *user_data) { int peer_port = 0; - if (wifi_direct_get_peer_display_port(peer->mac_address, &peer_port) != WIFI_DIRECT_ERROR_NONE) - { - g_print ("Can not get port info\n Use default (2022)\n"); + if (wifi_direct_get_peer_display_port(peer->mac_address, &peer_port) != WIFI_DIRECT_ERROR_NONE) { + g_print("Can not get port info\n Use default(2022)\n"); peer_port = DEFAULT_SCREEN_MIRRORING_PORT; } - if (peer_port == 0) - { - g_print ("Can not get port info\n Use default (2022)\n"); + if (peer_port == 0) { + g_print("Can not get port info\n Use default(2022)\n"); peer_port = DEFAULT_SCREEN_MIRRORING_PORT; } @@ -138,8 +221,7 @@ bool _connected_peer_cb(wifi_direct_connected_peer_info_s *peer, void *user_data void _activation_cb(int error_code, wifi_direct_device_state_e device_state, void *user_data) { - switch (device_state) - { + switch (device_state) { case WIFI_DIRECT_DEVICE_STATE_ACTIVATED: g_print("device_state : WIFI_DIRECT_DEVICE_STATE_ACTIVATED\n"); break; @@ -166,10 +248,9 @@ bool _discovered_peer_cb(wifi_direct_discovered_peer_info_s *peer, void *user_da void _discover_cb(int error_code, wifi_direct_discovery_state_e discovery_state, void *user_data) { int ret = WIFI_DIRECT_ERROR_NONE; - //g_print("Discovered [ error : %d discovery state : %d ]\n", error_code, discovery_state); + /*g_print("Discovered [ error : %d discovery state : %d ]\n", error_code, discovery_state); */ - switch (discovery_state) - { + switch (discovery_state) { case WIFI_DIRECT_ONLY_LISTEN_STARTED: g_print("discovery_state : WIFI_DIRECT_ONLY_LISTEN_STARTED \n"); break; @@ -179,8 +260,7 @@ void _discover_cb(int error_code, wifi_direct_discovery_state_e discovery_state, case WIFI_DIRECT_DISCOVERY_FOUND: g_print("discovery_state : WIFI_DIRECT_DISCOVERY_FOUND \n"); ret = wifi_direct_foreach_discovered_peers(_discovered_peer_cb, (void *)NULL); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_foreach_discovered_peers failed : %d\n", ret); } break; @@ -206,32 +286,23 @@ void _connection_cb(int error_code, wifi_direct_connection_state_e connection_st g_print("Connected [ error : %d connection state : %d mac_addr:%s ]\n", error_code, connection_state, mac_address); - if (connection_state == WIFI_DIRECT_CONNECTION_REQ) - { + if (connection_state == WIFI_DIRECT_CONNECTION_REQ) { ret = wifi_direct_accept_connection(mac_address); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_accept_connection failed : %d\n", ret); } - } - else if (connection_state == WIFI_DIRECT_CONNECTION_RSP) - { + } else if (connection_state == WIFI_DIRECT_CONNECTION_RSP) { bool is_go = FALSE; ret = wifi_direct_is_group_owner(&is_go); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_is_group_owner failed : %d\n", ret); } - if (is_go) - { + if (is_go) { g_print("Connected as Group Owner\n"); - } - else - { + } else { ret = wifi_direct_foreach_connected_peers(_connected_peer_cb, (void *)NULL); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_foreach_connected_peers failed : %d\n", ret); return; } @@ -243,58 +314,57 @@ void _connection_cb(int error_code, wifi_direct_connection_state_e connection_st } #endif -static void __interpret (char *cmd) +static void __interpret(char *cmd) { int ret = SCMIRRORING_ERROR_NONE; - gchar **value; - value = g_strsplit(cmd," ",0); - if(strncmp(cmd, "D", 1) == 0) - { - g_print ("Disconnect\n"); + gchar **value; + value = g_strsplit(cmd, " ", 0); + if (strncmp(cmd, "D", 1) == 0) { + g_print("Disconnect\n"); ret = scmirroring_sink_disconnect(g_scmirroring); - } - else if(strncmp(cmd, "T", 1) == 0) - { - g_print ("Destroy\n"); + } else if (strncmp(cmd, "P", 1) == 0) { + g_print("Pause\n"); + ret = scmirroring_sink_pause(g_scmirroring); + } else if (strncmp(cmd, "R", 1) == 0) { + g_print("Resume\n"); + ret = scmirroring_sink_resume(g_scmirroring); + } else if (strncmp(cmd, "T", 1) == 0) { + g_print("Destroy\n"); ret = scmirroring_sink_unprepare(g_scmirroring); ret = scmirroring_sink_destroy(g_scmirroring); - } - else if(strncmp(cmd, "q", 1) == 0) - { + } else if (strncmp(cmd, "q", 1) == 0) { __quit_program(); + } else if (strncmp(cmd, "L", 1) == 0) { + g_menu = SUBMENU_RESOLUTION; + g_timeout_add(100, __timeout_resolution_submenu_display, 0); + return; } #ifndef TEST_WITH_WIFI_DIRECT - else if (strncmp(cmd, "a", 1) == 0) - { + else if (strncmp(cmd, "a", 1) == 0) { ret = __scmirroring_sink_create(NULL); - if(ret == SCMIRRORING_ERROR_NONE) - { - ret = scmirroring_sink_set_ip_and_port(g_scmirroring, value[1], value[2]); - g_print ("Input server IP and port number IP[%s] Port[%s]\n", value[1], value[2]); - } - } - else if (strncmp(cmd, "s", 1) == 0) - { - g_print ("Start\n"); + if (ret == SCMIRRORING_ERROR_NONE) { + ret = scmirroring_sink_set_ip_and_port(g_scmirroring, value[1], value[2]); + g_print("Input server IP and port number IP[%s] Port[%s]\n", value[1], value[2]); + } + } else if (strncmp(cmd, "s", 1) == 0) { + g_print("Start\n"); ret = __scmirroring_sink_start(NULL); } #endif - else - { + else { g_print("unknown menu \n"); } - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("Error Occured [%d]", ret); } g_timeout_add(100, __timeout_menu_display, 0); -return; + return; } -gboolean __input (GIOChannel *channel) +gboolean __input(GIOChannel *channel) { char buf[MAX_STRING_LEN + 3]; gsize read; @@ -303,7 +373,12 @@ gboolean __input (GIOChannel *channel) g_io_channel_read_chars(channel, buf, MAX_STRING_LEN, &read, &error); buf[read] = '\0'; g_strstrip(buf); - __interpret (buf); + + if (g_menu == MAIN_MENU) + __interpret(buf); + else if (g_menu == SUBMENU_RESOLUTION) + __interpret_resolution_submenu(buf); + return TRUE; } @@ -317,8 +392,7 @@ static gboolean __start_p2p_connection(gpointer data) g_print("====== Start p2p connection ======\n"); ret = wifi_direct_initialize(); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_initialize failed : %d\n", ret); return FALSE; } @@ -327,147 +401,123 @@ static gboolean __start_p2p_connection(gpointer data) /* Activation / Deactivation state Callback */ ret = wifi_direct_set_device_state_changed_cb(_activation_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_set_device_state_changed_cb failed : %d\n", ret); goto error; } /* Discovery state Callback */ ret = wifi_direct_set_discovery_state_changed_cb(_discover_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_set_discovery_state_changed_cb failed : %d\n", ret); goto error; } /* Connection state Callback */ ret = wifi_direct_set_connection_state_changed_cb(_connection_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_set_connection_state_changed_cb failed : %d\n", ret); goto error; } /* IP address assigning state callback */ ret = wifi_direct_set_client_ip_address_assigned_cb(_ip_assigned_cb, (void *)ugd); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_set_client_ip_address_assigned_cb failed : %d\n", ret); goto error; } ret = wifi_direct_get_state(&direct_state); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_get_state failed : %d\n", ret); goto error; } - if (direct_state < WIFI_DIRECT_STATE_ACTIVATED) - { + if (direct_state < WIFI_DIRECT_STATE_ACTIVATED) { g_print("wifi direct status < WIFI_DIRECT_STATE_ACTIVATED\n"); - g_print("\n ------ Starting to activate scmirroring ------\n"); + g_print("\n------Starting to activate scmirroring------\n"); ret = wifi_direct_activate(); - if (ret < WIFI_DIRECT_ERROR_NONE) - { + if (ret < WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_activate failed : %d\n", ret); return FALSE; } - } - else - { + } else { g_print("wifi direct status >= WIFI_DIRECT_STATE_ACTIVATED.. Disconnect all first\n"); ret = wifi_direct_disconnect_all(); - if(!ret) - { + if (!ret) { g_print("wifi_direct_disconnect_all success\n"); - } - else - { + } else { g_print("wifi_direct_disconnect_all fail\n"); } } /*Enable Screen Mirroring*/ ret = wifi_direct_init_display(); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_display_init failed : %d\n", ret); goto error; } /*Enable Wifi Direct - You can set this as true if you want to see it from wifi-direct list*/ ret = wifi_direct_set_display_availability(TRUE); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_display_init failed : %d\n", ret); goto error; } ret = wifi_direct_set_display(WIFI_DISPLAY_TYPE_SINK, 2022, 0); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_display_set_device failed : %d\n", ret); goto error; } ret = wifi_direct_get_group_owner_intent(&go_intent); g_print("go_intent = [%d]\n", go_intent); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_get_group_owner_intent failed : %d\n", ret); goto error; } go_intent = 1; ret = wifi_direct_set_group_owner_intent(go_intent); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_get_group_owner_intent failed : %d\n", ret); goto error; } g_print("wifi_direct_set_group_owner_intent() result=[%d] go_intent[%d]\n", ret, go_intent); ret = wifi_direct_set_max_clients(1); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_set_max_clients failed : %d\n", ret); goto error; } ret = wifi_direct_get_state(&direct_state); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_get_state failed : %d\n", ret); goto error; } - if(direct_state > WIFI_DIRECT_STATE_ACTIVATING) - { - char * device_name = NULL; + if (direct_state > WIFI_DIRECT_STATE_ACTIVATING) { + char *device_name = NULL; ret = wifi_direct_start_discovery(1, 0); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_start_discovery failed : %d\n", ret); goto error; } ret = wifi_direct_get_device_name(&device_name); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_get_device_name failed : %d\n", ret); goto error; } g_print("Device Name : [%s]\n", device_name); - if(device_name) + if (device_name) free(device_name); - } - else - { + } else { g_print("Error : Direct not activated yet\n"); } @@ -486,20 +536,18 @@ static gboolean __disconnect_p2p_connection(void) int ret = WIFI_DIRECT_ERROR_NONE; ret = wifi_direct_deactivate(); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_deactivate failed : %d\n", ret); return FALSE; } ret = wifi_direct_deinitialize(); - if(ret != WIFI_DIRECT_ERROR_NONE) - { + if (ret != WIFI_DIRECT_ERROR_NONE) { g_print("Error : wifi_direct_deinitialize failed : %d\n", ret); return FALSE; } - g_print("------ p2p connection disconnected ------\n"); + g_print("------p2p connection disconnected------\n"); return TRUE; } @@ -511,15 +559,13 @@ static int __scmirroring_sink_create(gpointer data) int ret = SCMIRRORING_ERROR_NONE; ret = scmirroring_sink_create(&g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_create fail [%d]", ret); return SCMIRRORING_ERROR_OUT_OF_MEMORY; } ret = scmirroring_sink_prepare(g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_prepare fail [%d]", ret); return SCMIRRORING_ERROR_OUT_OF_MEMORY; } @@ -533,48 +579,46 @@ gboolean __scmirroring_sink_start(gpointer data) #ifdef TEST_WITH_WIFI_DIRECT ret = scmirroring_sink_create(&g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_create fail [%d]", ret); return FALSE; } + if (g_resolution != 0) { + ret = scmirroring_sink_set_resolution(g_scmirroring, g_resolution); + if (ret != SCMIRRORING_ERROR_NONE) { + g_print("Failed to set resolution, error[%d]\n", ret); + } + } + ret = scmirroring_sink_prepare(g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_prepare fail [%d]", ret); return SCMIRRORING_ERROR_OUT_OF_MEMORY; } ret = scmirroring_sink_set_ip_and_port(g_scmirroring, g_peer_ip, g_peer_port); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_set_ip_and_port fail [%d]", ret); return FALSE; } #endif ret = scmirroring_sink_set_state_changed_cb(g_scmirroring, scmirroring_sink_state_callback, NULL); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_set_state_changed_cb fail [%d]", ret); return FALSE; } - - - ret = scmirroring_sink_connect(g_scmirroring); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_connect fail [%d]", ret); return FALSE; } #if 0 ret = scmirroring_sink_set_display(g_scmirroring, SCMIRRORING_DISPLAY_TYPE_X11, NULL); - if(ret != SCMIRRORING_ERROR_NONE) - { + if (ret != SCMIRRORING_ERROR_NONE) { g_print("scmirroring_sink_set_display fail [%d]", ret); return FALSE; } @@ -588,11 +632,11 @@ gboolean _scmirroring_start_jobs(gpointer data) int ret = WIFI_DIRECT_ERROR_NONE; ret = __start_p2p_connection(data); - if(ret == FALSE) + if (ret == FALSE) return FALSE; #endif - return FALSE; + return FALSE; } int main(int argc, char *argv[]) @@ -602,7 +646,7 @@ int main(int argc, char *argv[]) GSource *start_job_src = NULL; stdin_channel = g_io_channel_unix_new(0); - g_io_channel_set_flags (stdin_channel, G_IO_FLAG_NONBLOCK, NULL); + g_io_channel_set_flags(stdin_channel, G_IO_FLAG_NONBLOCK, NULL); g_io_add_watch(stdin_channel, G_IO_IN, (GIOFunc)__input, NULL); __displaymenu(); @@ -611,8 +655,8 @@ int main(int argc, char *argv[]) context = g_main_loop_get_context(g_loop); start_job_src = g_idle_source_new(); - g_source_set_callback (start_job_src, _scmirroring_start_jobs, NULL, NULL); - g_source_attach (start_job_src, context); + g_source_set_callback(start_job_src, _scmirroring_start_jobs, NULL, NULL); + g_source_attach(start_job_src, context); g_main_loop_run(g_loop);