#include "mm_wfd_common_private.h"
/* FIXME, is currently allocated on the stack */
-#define MAX_LINE_LEN 1024 * 16
+#define MAX_LINE_LEN (1024 * 16)
-#define FREE_STRING(field) if(field != NULL) g_free (field); (field) = NULL
-#define REPLACE_STRING(field, val) FREE_STRING(field); (field) = g_strdup (val)
+#define FREE_STRING(field) if (field != NULL) g_free(field); (field) = NULL;
+#define REPLACE_STRING(field, val) FREE_STRING(field); (field) = g_strdup(val);
#define EDID_BLOCK_SIZE 128
-enum
-{
- WFD_SESSION,
- WFD_MEDIA,
+enum {
+ WFD_SESSION,
+ WFD_MEDIA,
};
-typedef struct
-{
- guint state;
- WFDMessage *msg;
+typedef struct {
+ guint state;
+ WFDMessage *msg;
} WFDContext;
/**
* Returns: a #WFDResult.
*/
WFDResult
-wfdconfig_message_new (WFDMessage ** msg)
+wfdconfig_message_new(WFDMessage **msg)
{
- WFDMessage *newmsg;
+ WFDMessage *newmsg;
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
- newmsg = g_new0 (WFDMessage, 1);
+ newmsg = g_new0(WFDMessage, 1);
- *msg = newmsg;
+ *msg = newmsg;
- return wfdconfig_message_init (newmsg);
+ return wfdconfig_message_init(newmsg);
}
/**
* with wfdconfig_message_new(). This function is mostly used to initialize a message
* allocated on the stack. wfdconfig_message_uninit() undoes this operation.
*
-* When this function is invoked on newly allocated data (with malloc or on the
+* When this function is invoked on newly allocated data(with malloc or on the
* stack), its contents should be set to 0 before calling this function.
*
* Returns: a #WFDResult.
*/
WFDResult
-wfdconfig_message_init (WFDMessage * msg)
+wfdconfig_message_init(WFDMessage *msg)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
- return WFD_OK;
+ return WFD_OK;
}
/**
* Returns: a #WFDResult.
*/
WFDResult
-wfdconfig_message_uninit (WFDMessage * msg)
+wfdconfig_message_uninit(WFDMessage *msg)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(msg->audio_codecs) {
- guint i=0;
- if(msg->audio_codecs->list) {
- for(; i<msg->audio_codecs->count; i++) {
- FREE_STRING(msg->audio_codecs->list[i].audio_format);
- msg->audio_codecs->list[i].modes=0;
- msg->audio_codecs->list[i].latency=0;
- }
- FREE_STRING(msg->audio_codecs->list);
- }
- FREE_STRING(msg->audio_codecs);
- }
-
- if(msg->video_formats) {
- FREE_STRING(msg->video_formats->list);
- FREE_STRING(msg->video_formats);
- }
-
- if(msg->video_3d_formats) {
- FREE_STRING(msg->video_3d_formats);
- }
-
- if(msg->content_protection) {
- FREE_STRING(msg->content_protection);
- }
-
- if(msg->display_edid) {
- if(msg->display_edid->edid_payload)
- FREE_STRING(msg->display_edid->edid_payload);
- FREE_STRING(msg->display_edid);
- }
-
- if(msg->coupled_sink) {
- FREE_STRING(msg->coupled_sink);
- }
-
- if(msg->trigger_method) {
- FREE_STRING(msg->trigger_method->wfd_trigger_method);
- FREE_STRING(msg->trigger_method);
- }
-
- if(msg->presentation_url) {
- FREE_STRING(msg->trigger_method);
- }
-
- if(msg->client_rtp_ports) {
- FREE_STRING(msg->client_rtp_ports->profile);
- FREE_STRING(msg->client_rtp_ports->mode);
- FREE_STRING(msg->client_rtp_ports);
- }
-
- if(msg->route) {
- FREE_STRING(msg->route);
- }
-
- if(msg->I2C) {
- FREE_STRING(msg->I2C);
- }
-
- if(msg->av_format_change_timing) {
- FREE_STRING(msg->av_format_change_timing);
- }
-
- if(msg->preferred_display_mode) {
- FREE_STRING(msg->preferred_display_mode);
- }
-
- if(msg->uibc_capability) {
- FREE_STRING(msg->uibc_capability);
- }
-
- if(msg->uibc_setting) {
- FREE_STRING(msg->uibc_setting);
- }
-
- if(msg->standby_resume_capability) {
- FREE_STRING(msg->standby_resume_capability);
- }
-
- if(msg->standby) {
- FREE_STRING(msg->standby);
- }
-
- if(msg->connector_type) {
- FREE_STRING(msg->connector_type);
- }
-
- if(msg->idr_request) {
- FREE_STRING(msg->idr_request);
- }
-
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (msg->audio_codecs) {
+ guint i = 0;
+ if (msg->audio_codecs->list) {
+ for (; i < msg->audio_codecs->count; i++) {
+ FREE_STRING(msg->audio_codecs->list[i].audio_format);
+ msg->audio_codecs->list[i].modes = 0;
+ msg->audio_codecs->list[i].latency = 0;
+ }
+ FREE_STRING(msg->audio_codecs->list);
+ }
+ FREE_STRING(msg->audio_codecs);
+ }
+
+ if (msg->video_formats) {
+ FREE_STRING(msg->video_formats->list);
+ FREE_STRING(msg->video_formats);
+ }
+
+ if (msg->video_3d_formats) {
+ FREE_STRING(msg->video_3d_formats->list);
+ FREE_STRING(msg->video_3d_formats);
+ }
+
+ if (msg->content_protection) {
+ if (msg->content_protection->hdcp2_spec) {
+ FREE_STRING(msg->content_protection->hdcp2_spec->hdcpversion);
+ FREE_STRING(msg->content_protection->hdcp2_spec->TCPPort);
+ FREE_STRING(msg->content_protection->hdcp2_spec);
+ }
+ FREE_STRING(msg->content_protection);
+ }
+
+ if (msg->display_edid) {
+ if (msg->display_edid->edid_payload)
+ FREE_STRING(msg->display_edid->edid_payload);
+ FREE_STRING(msg->display_edid);
+ }
+
+ if (msg->coupled_sink) {
+ if (msg->coupled_sink->coupled_sink_cap) {
+ FREE_STRING(msg->coupled_sink->coupled_sink_cap->sink_address);
+ FREE_STRING(msg->coupled_sink->coupled_sink_cap);
+ }
+ FREE_STRING(msg->coupled_sink);
+ }
+
+ if (msg->trigger_method) {
+ FREE_STRING(msg->trigger_method->wfd_trigger_method);
+ FREE_STRING(msg->trigger_method);
+ }
+
+ if (msg->presentation_url) {
+ FREE_STRING(msg->presentation_url->wfd_url0);
+ FREE_STRING(msg->presentation_url->wfd_url1);
+ FREE_STRING(msg->presentation_url);
+ }
+
+ if (msg->client_rtp_ports) {
+ FREE_STRING(msg->client_rtp_ports->profile);
+ FREE_STRING(msg->client_rtp_ports->mode);
+ FREE_STRING(msg->client_rtp_ports);
+ }
+
+ if (msg->route) {
+ FREE_STRING(msg->route->destination);
+ FREE_STRING(msg->route);
+ }
+
+ if (msg->I2C) {
+ FREE_STRING(msg->I2C);
+ }
+
+ if (msg->av_format_change_timing) {
+ FREE_STRING(msg->av_format_change_timing);
+ }
+
+ if (msg->preferred_display_mode) {
+ FREE_STRING(msg->preferred_display_mode);
+ }
+
+ if (msg->uibc_capability) {
+ if (msg->uibc_capability->hidc_cap_list.next) {
+ detailed_cap *list = msg->uibc_capability->hidc_cap_list.next;
+ detailed_cap *temp = NULL;
+ while (list) {
+ temp = list->next;
+ FREE_STRING(list);
+ list = temp;
+ }
+ }
+ FREE_STRING(msg->uibc_capability);
+ }
+
+ if (msg->uibc_setting) {
+ FREE_STRING(msg->uibc_setting);
+ }
+
+ if (msg->standby_resume_capability) {
+ FREE_STRING(msg->standby_resume_capability);
+ }
+
+ if (msg->standby) {
+ FREE_STRING(msg->standby);
+ }
+
+ if (msg->connector_type) {
+ FREE_STRING(msg->connector_type);
+ }
+
+ if (msg->idr_request) {
+ FREE_STRING(msg->idr_request);
+ }
+
+ return WFD_OK;
}
/**
* Returns: a #WFDResult.
*/
WFDResult
-wfdconfig_message_free (WFDMessage * msg)
+wfdconfig_message_free(WFDMessage *msg)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
- wfdconfig_message_uninit (msg);
- g_free (msg);
+ wfdconfig_message_uninit(msg);
+ g_free(msg);
- return WFD_OK;
+ return WFD_OK;
}
/**
* Returns: A dynamically allocated string representing the WFD description.
*/
gchar *
-wfdconfig_message_as_text (const WFDMessage * msg)
+wfdconfig_message_as_text(const WFDMessage *msg)
{
- /* change all vars so they match rfc? */
- GString *lines;
- g_return_val_if_fail (msg != NULL, NULL);
-
- lines = g_string_new ("");
-
- /* list of audio codecs */
- if(msg->audio_codecs) {
- guint i=0;
- g_string_append_printf (lines,"wfd_audio_codecs");
- if(msg->audio_codecs->list) {
- g_string_append_printf (lines,":");
- for(; i<msg->audio_codecs->count; i++) {
- g_string_append_printf (lines," %s",msg->audio_codecs->list[i].audio_format);
- g_string_append_printf (lines," %08x",msg->audio_codecs->list[i].modes);
- g_string_append_printf (lines," %02x",msg->audio_codecs->list[i].latency);
- if((i+1)<msg->audio_codecs->count)
- g_string_append_printf (lines,",");
- }
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- /* list of video codecs */
- if(msg->video_formats) {
- g_string_append_printf (lines,"wfd_video_formats");
- if(msg->video_formats->list) {
- g_string_append_printf (lines,":");
- g_string_append_printf (lines," %02x", msg->video_formats->list->native);
- g_string_append_printf (lines," %02x", msg->video_formats->list->preferred_display_mode_supported);
- g_string_append_printf (lines," %02x", msg->video_formats->list->H264_codec.profile);
- g_string_append_printf (lines," %02x", msg->video_formats->list->H264_codec.level);
- g_string_append_printf (lines," %08x", msg->video_formats->list->H264_codec.misc_params.CEA_Support);
- g_string_append_printf (lines," %08x", msg->video_formats->list->H264_codec.misc_params.VESA_Support);
- g_string_append_printf (lines," %08x", msg->video_formats->list->H264_codec.misc_params.HH_Support);
- g_string_append_printf (lines," %02x", msg->video_formats->list->H264_codec.misc_params.latency);
- g_string_append_printf (lines," %04x", msg->video_formats->list->H264_codec.misc_params.min_slice_size);
- g_string_append_printf (lines," %04x", msg->video_formats->list->H264_codec.misc_params.slice_enc_params);
- g_string_append_printf (lines," %02x", msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support);
-
- if(msg->video_formats->list->H264_codec.max_hres)
- g_string_append_printf (lines," %04x", msg->video_formats->list->H264_codec.max_hres);
- else
- g_string_append_printf (lines," none");
-
- if(msg->video_formats->list->H264_codec.max_vres)
- g_string_append_printf (lines," %04x", msg->video_formats->list->H264_codec.max_vres);
- else
- g_string_append_printf (lines," none");
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- /* list of video 3D codecs */
- if(msg->video_3d_formats) {
- g_string_append_printf (lines,"wfd_3d_video_formats");
- g_string_append_printf (lines,":");
- if(msg->video_3d_formats->list) {
- g_string_append_printf (lines," %02x", msg->video_3d_formats->list->native);
- g_string_append_printf (lines," %02x", msg->video_3d_formats->list->preferred_display_mode_supported);
- g_string_append_printf (lines," %02x", msg->video_3d_formats->list->H264_codec.profile);
- g_string_append_printf (lines," %02x", msg->video_3d_formats->list->H264_codec.level);
- g_string_append_printf (lines," %16x", msg->video_3d_formats->list->H264_codec.misc_params.video_3d_capability);
- g_string_append_printf (lines," %02x", msg->video_3d_formats->list->H264_codec.misc_params.latency);
- g_string_append_printf (lines," %04x", msg->video_3d_formats->list->H264_codec.misc_params.min_slice_size);
- g_string_append_printf (lines," %04x", msg->video_3d_formats->list->H264_codec.misc_params.slice_enc_params);
- g_string_append_printf (lines," %02x", msg->video_3d_formats->list->H264_codec.misc_params.frame_rate_control_support);
- if(msg->video_3d_formats->list->H264_codec.max_hres)
- g_string_append_printf (lines," %04x", msg->video_formats->list->H264_codec.max_hres);
- else
- g_string_append_printf (lines," none");
- if(msg->video_3d_formats->list->H264_codec.max_vres)
- g_string_append_printf (lines," %04x", msg->video_formats->list->H264_codec.max_vres);
- else
- g_string_append_printf (lines," none");
- } else {
- g_string_append_printf (lines," none");
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->content_protection) {
- g_string_append_printf (lines,"wfd_content_protection");
- g_string_append_printf (lines,":");
- if(msg->content_protection->hdcp2_spec) {
- if( msg->content_protection->hdcp2_spec->hdcpversion) {
- g_string_append_printf (lines," %s", msg->content_protection->hdcp2_spec->hdcpversion);
- g_string_append_printf (lines," %s", msg->content_protection->hdcp2_spec->TCPPort);
- } else {
- g_string_append_printf (lines," none");
- }
- } else {
- g_string_append_printf (lines," none");
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->display_edid) {
- g_string_append_printf (lines,"wfd_display_edid");
- g_string_append_printf (lines,":");
- if(msg->display_edid->edid_supported) {
- g_string_append_printf (lines," %d", msg->display_edid->edid_supported);
- if(msg->display_edid->edid_block_count)
- g_string_append_printf (lines," %d", msg->display_edid->edid_block_count);
- else
- g_string_append_printf (lines," none");
- } else {
- g_string_append_printf (lines," none");
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->coupled_sink) {
- g_string_append_printf (lines,"wfd_coupled_sink");
- g_string_append_printf (lines,":");
- if(msg->coupled_sink->coupled_sink_cap) {
- g_string_append_printf (lines," %02x", msg->coupled_sink->coupled_sink_cap->status);
- if(msg->coupled_sink->coupled_sink_cap->sink_address)
- g_string_append_printf (lines," %s", msg->coupled_sink->coupled_sink_cap->sink_address);
- else
- g_string_append_printf (lines," none");
- } else {
- g_string_append_printf (lines," none");
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->trigger_method) {
- g_string_append_printf (lines,"wfd_trigger_method");
- g_string_append_printf (lines,":");
- g_string_append_printf (lines," %s", msg->trigger_method->wfd_trigger_method);
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->presentation_url) {
- g_string_append_printf (lines,"wfd_presentation_URL");
- g_string_append_printf (lines,":");
- if(msg->presentation_url->wfd_url0)
- g_string_append_printf (lines," %s", msg->presentation_url->wfd_url0);
- else
- g_string_append_printf (lines," none");
- if(msg->presentation_url->wfd_url1)
- g_string_append_printf (lines," %s", msg->presentation_url->wfd_url1);
- else
- g_string_append_printf (lines," none");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->client_rtp_ports) {
- g_string_append_printf (lines,"wfd_client_rtp_ports");
- if(msg->client_rtp_ports->profile) {
- g_string_append_printf (lines,":");
- g_string_append_printf (lines," %s", msg->client_rtp_ports->profile);
- g_string_append_printf (lines," %d", msg->client_rtp_ports->rtp_port0);
- g_string_append_printf (lines," %d", msg->client_rtp_ports->rtp_port1);
- g_string_append_printf (lines," %s", msg->client_rtp_ports->mode);
- }
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->route) {
- g_string_append_printf (lines,"wfd_route");
- g_string_append_printf (lines,":");
- g_string_append_printf (lines," %s", msg->route->destination);
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->I2C) {
- g_string_append_printf (lines,"wfd_I2C");
- g_string_append_printf (lines,":");
- if(msg->I2C->I2CPresent)
- g_string_append_printf (lines," %x", msg->I2C->I2C_port);
- else
- g_string_append_printf (lines," none");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->av_format_change_timing) {
- g_string_append_printf (lines,"wfd_av_format_change_timing");
- g_string_append_printf (lines,":");
- g_string_append_printf (lines," %10"G_GUINT64_FORMAT, msg->av_format_change_timing->PTS);
- g_string_append_printf (lines," %10"G_GUINT64_FORMAT, msg->av_format_change_timing->DTS);
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->preferred_display_mode) {
- g_string_append_printf (lines,"wfd_preferred_display_mode");
- g_string_append_printf (lines,":");
- if(msg->preferred_display_mode->displaymodesupported) {
- g_string_append_printf (lines," %06"G_GUINT64_FORMAT, msg->preferred_display_mode->p_clock);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->H);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->HB);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->HSPOL_HSOFF);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->HSW);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->V);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->VB);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->VSPOL_VSOFF);
- g_string_append_printf (lines," %04x", msg->preferred_display_mode->VSW);
- g_string_append_printf (lines," %02x", msg->preferred_display_mode->VBS3D);
- g_string_append_printf (lines," %02x", msg->preferred_display_mode->V2d_s3d_modes);
- g_string_append_printf (lines," %02x", msg->preferred_display_mode->P_depth);
- } else g_string_append_printf (lines," none");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->uibc_capability) {
- g_string_append_printf (lines,"wfd_uibc_capability");
- g_string_append_printf (lines,":");
- if(msg->uibc_capability->uibcsupported) {
- g_string_append_printf (lines," input_category_list=");
- if(msg->uibc_capability->input_category_list.input_cat) {
- guint32 tempcap = 0;
- if(msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_GENERIC) {
- tempcap |= WFD_UIBC_INPUT_CAT_GENERIC;
- g_string_append_printf (lines,"GENERIC");
- if(msg->uibc_capability->input_category_list.input_cat != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_HIDC) {
- tempcap |= WFD_UIBC_INPUT_CAT_HIDC;
- g_string_append_printf (lines,"HIDC");
- if(msg->uibc_capability->input_category_list.input_cat != tempcap) g_string_append_printf (lines,", ");
- }
- }
- else g_string_append_printf (lines,"none");
- g_string_append_printf (lines,";");
- g_string_append_printf (lines," generic_cap_list=");
- if(msg->uibc_capability->generic_cap_list.inp_type) {
- guint32 tempcap = 0;
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_KEYBOARD) {
- tempcap |= WFD_UIBC_INPUT_TYPE_KEYBOARD;
- g_string_append_printf (lines,"Keyboard");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MOUSE) {
- tempcap |= WFD_UIBC_INPUT_TYPE_MOUSE;
- g_string_append_printf (lines,"Mouse");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_SINGLETOUCH) {
- tempcap |= WFD_UIBC_INPUT_TYPE_SINGLETOUCH;
- g_string_append_printf (lines,"SingleTouch");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MULTITOUCH) {
- tempcap |= WFD_UIBC_INPUT_TYPE_MULTITOUCH;
- g_string_append_printf (lines,"MultiTouch");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_JOYSTICK) {
- tempcap |= WFD_UIBC_INPUT_TYPE_JOYSTICK;
- g_string_append_printf (lines,"Joystick");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_CAMERA) {
- tempcap |= WFD_UIBC_INPUT_TYPE_CAMERA;
- g_string_append_printf (lines,"Camera");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_GESTURE) {
- tempcap |= WFD_UIBC_INPUT_TYPE_GESTURE;
- g_string_append_printf (lines,"Gesture");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_REMOTECONTROL) {
- tempcap |= WFD_UIBC_INPUT_TYPE_REMOTECONTROL;
- g_string_append_printf (lines,"RemoteControl");
- if(msg->uibc_capability->generic_cap_list.inp_type != tempcap) g_string_append_printf (lines,", ");
- }
- }
- else g_string_append_printf (lines,"none");
- g_string_append_printf (lines,";");
- g_string_append_printf (lines," hidc_cap_list=");
- if(msg->uibc_capability->hidc_cap_list.cap_count) {
- detailed_cap *temp_cap = msg->uibc_capability->hidc_cap_list.next;
- while(temp_cap)
- {
- if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_KEYBOARD) g_string_append_printf (lines,"Keyboard");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_MOUSE) g_string_append_printf (lines,"Mouse");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_SINGLETOUCH) g_string_append_printf (lines,"SingleTouch");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_MULTITOUCH) g_string_append_printf (lines,"MultiTouch");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_JOYSTICK) g_string_append_printf (lines,"Joystick");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_CAMERA) g_string_append_printf (lines,"Camera");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_GESTURE) g_string_append_printf (lines,"Gesture");
- else if(temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_REMOTECONTROL) g_string_append_printf (lines,"RemoteControl");
- g_string_append_printf (lines,"/");
- if(temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_INFRARED) g_string_append_printf (lines,"Infrared");
- else if(temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_USB) g_string_append_printf (lines,"USB");
- else if(temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_BT) g_string_append_printf (lines,"BT");
- else if(temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_ZIGBEE) g_string_append_printf (lines,"Zigbee");
- else if(temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_WIFI) g_string_append_printf (lines,"Wi-Fi");
- else if(temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_NOSP) g_string_append_printf (lines,"No-SP");
- temp_cap = temp_cap->next;
- if(temp_cap) g_string_append_printf (lines,", ");
- }
- } else g_string_append_printf (lines,"none");
- g_string_append_printf (lines,";");
- if(msg->uibc_capability->tcp_port) g_string_append_printf (lines,"port=%u", msg->uibc_capability->tcp_port);
- else g_string_append_printf (lines,"port=none");
- } else g_string_append_printf (lines," none");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->uibc_setting) {
- g_string_append_printf (lines,"wfd_uibc_setting");
- g_string_append_printf (lines,":");
- if(msg->uibc_setting->uibc_setting)
- g_string_append_printf (lines," enable");
- else
- g_string_append_printf (lines," disable");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->standby_resume_capability) {
- g_string_append_printf (lines,"wfd_standby_resume_capability");
- g_string_append_printf (lines,":");
- if(msg->standby_resume_capability->standby_resume_cap)
- g_string_append_printf (lines," supported");
- else
- g_string_append_printf (lines," none");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->standby) {
- g_string_append_printf (lines,"wfd_standby");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->connector_type) {
- g_string_append_printf (lines,"wfd_connector_type");
- g_string_append_printf (lines,":");
- g_string_append_printf (lines,"\r\n");
- }
-
- if(msg->idr_request) {
- g_string_append_printf (lines,"wfd_idr_request");
- g_string_append_printf (lines,"\r\n");
- }
-
- //g_string_append_printf (lines,"\0");
- /*if(g_str_has_suffix (lines,"\r\n\0"))
- {
- guint32 length = g_strlen(lines);
- lines[length-2] = '\0';
- }*/
- return g_string_free (lines, FALSE);
+ /* change all vars so they match rfc? */
+ GString *lines;
+ g_return_val_if_fail(msg != NULL, NULL);
+
+ lines = g_string_new("");
+
+ /* list of audio codecs */
+ if (msg->audio_codecs) {
+ guint i = 0;
+ g_string_append_printf(lines, STRING_WFD_AUDIO_CODECS);
+ if (msg->audio_codecs->list) {
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ for (; i < msg->audio_codecs->count; i++) {
+ g_string_append_printf(lines, " %s", msg->audio_codecs->list[i].audio_format);
+ g_string_append_printf(lines, " %08x", msg->audio_codecs->list[i].modes);
+ g_string_append_printf(lines, " %02x", msg->audio_codecs->list[i].latency);
+ if ((i + 1) < msg->audio_codecs->count)
+ g_string_append_printf(lines, STRING_WFD_COMMA);
+ }
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ /* list of video codecs */
+ if (msg->video_formats) {
+ g_string_append_printf(lines, STRING_WFD_VIDEO_FORMATS);
+ if (msg->video_formats->list) {
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, " %02x", msg->video_formats->list->native);
+ g_string_append_printf(lines, " %02x", msg->video_formats->list->preferred_display_mode_supported);
+ g_string_append_printf(lines, " %02x", msg->video_formats->list->H264_codec.profile);
+ g_string_append_printf(lines, " %02x", msg->video_formats->list->H264_codec.level);
+ g_string_append_printf(lines, " %08x", msg->video_formats->list->H264_codec.misc_params.CEA_Support);
+ g_string_append_printf(lines, " %08x", msg->video_formats->list->H264_codec.misc_params.VESA_Support);
+ g_string_append_printf(lines, " %08x", msg->video_formats->list->H264_codec.misc_params.HH_Support);
+ g_string_append_printf(lines, " %02x", msg->video_formats->list->H264_codec.misc_params.latency);
+ g_string_append_printf(lines, " %04x", msg->video_formats->list->H264_codec.misc_params.min_slice_size);
+ g_string_append_printf(lines, " %04x", msg->video_formats->list->H264_codec.misc_params.slice_enc_params);
+ g_string_append_printf(lines, " %02x", msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support);
+
+ if (msg->video_formats->list->H264_codec.max_hres) {
+ g_string_append_printf(lines, " %04x", msg->video_formats->list->H264_codec.max_hres);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ if (msg->video_formats->list->H264_codec.max_vres) {
+ g_string_append_printf(lines, " %04x", msg->video_formats->list->H264_codec.max_vres);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ /* list of video 3D codecs */
+ if (msg->video_3d_formats) {
+ g_string_append_printf(lines, STRING_WFD_3D_VIDEO_FORMATS);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->video_3d_formats->list) {
+ g_string_append_printf(lines, " %02x", msg->video_3d_formats->list->native);
+ g_string_append_printf(lines, " %02x", msg->video_3d_formats->list->preferred_display_mode_supported);
+ g_string_append_printf(lines, " %02x", msg->video_3d_formats->list->H264_codec.profile);
+ g_string_append_printf(lines, " %02x", msg->video_3d_formats->list->H264_codec.level);
+ g_string_append_printf(lines, " %016llx", msg->video_3d_formats->list->H264_codec.misc_params.video_3d_capability);
+ g_string_append_printf(lines, " %02x", msg->video_3d_formats->list->H264_codec.misc_params.latency);
+ g_string_append_printf(lines, " %04x", msg->video_3d_formats->list->H264_codec.misc_params.min_slice_size);
+ g_string_append_printf(lines, " %04x", msg->video_3d_formats->list->H264_codec.misc_params.slice_enc_params);
+ g_string_append_printf(lines, " %02x", msg->video_3d_formats->list->H264_codec.misc_params.frame_rate_control_support);
+ if (msg->video_3d_formats->list->H264_codec.max_hres) {
+ g_string_append_printf(lines, " %04x", msg->video_formats->list->H264_codec.max_hres);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+
+ if (msg->video_3d_formats->list->H264_codec.max_vres) {
+ g_string_append_printf(lines, " %04x", msg->video_formats->list->H264_codec.max_vres);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->content_protection) {
+ g_string_append_printf(lines, STRING_WFD_CONTENT_PROTECTION);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->content_protection->hdcp2_spec) {
+ if (msg->content_protection->hdcp2_spec->hdcpversion) {
+ g_string_append_printf(lines, " %s", msg->content_protection->hdcp2_spec->hdcpversion);
+ g_string_append_printf(lines, " %s", msg->content_protection->hdcp2_spec->TCPPort);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->display_edid) {
+ g_string_append_printf(lines, STRING_WFD_DISPLAY_EDID);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->display_edid->edid_supported) {
+ g_string_append_printf(lines, " %d", msg->display_edid->edid_supported);
+ if (msg->display_edid->edid_block_count) {
+ g_string_append_printf(lines, " %d", msg->display_edid->edid_block_count);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->coupled_sink) {
+ g_string_append_printf(lines, STRING_WFD_COUPLED_SINK);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->coupled_sink->coupled_sink_cap) {
+ g_string_append_printf(lines, " %02x", msg->coupled_sink->coupled_sink_cap->status);
+ if (msg->coupled_sink->coupled_sink_cap->sink_address) {
+ g_string_append_printf(lines, " %s", msg->coupled_sink->coupled_sink_cap->sink_address);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->trigger_method) {
+ g_string_append_printf(lines, STRING_WFD_TRIGGER_METHOD);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, " %s", msg->trigger_method->wfd_trigger_method);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->presentation_url) {
+ g_string_append_printf(lines, STRING_WFD_PRESENTATION_URL);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->presentation_url->wfd_url0) {
+ g_string_append_printf(lines, " %s", msg->presentation_url->wfd_url0);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ if (msg->presentation_url->wfd_url1) {
+ g_string_append_printf(lines, " %s", msg->presentation_url->wfd_url1);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->client_rtp_ports) {
+ g_string_append_printf(lines, STRING_WFD_CLIENT_RTP_PORTS);
+ if (msg->client_rtp_ports->profile) {
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, " %s", msg->client_rtp_ports->profile);
+ g_string_append_printf(lines, " %d", msg->client_rtp_ports->rtp_port0);
+ g_string_append_printf(lines, " %d", msg->client_rtp_ports->rtp_port1);
+ g_string_append_printf(lines, " %s", msg->client_rtp_ports->mode);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->route) {
+ g_string_append_printf(lines, STRING_WFD_ROUTE);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, " %s", msg->route->destination);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->I2C) {
+ g_string_append_printf(lines, STRING_WFD_I2C);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ if (msg->I2C->I2CPresent) {
+ g_string_append_printf(lines, "%x", msg->I2C->I2C_port);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->av_format_change_timing) {
+ g_string_append_printf(lines, STRING_WFD_AV_FORMAT_CHANGE_TIMING);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, " %010llx", msg->av_format_change_timing->PTS);
+ g_string_append_printf(lines, " %010llx", msg->av_format_change_timing->DTS);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->preferred_display_mode) {
+ g_string_append_printf(lines, STRING_WFD_PREFERRED_DISPLAY_MODE);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->preferred_display_mode->displaymodesupported) {
+ g_string_append_printf(lines, " %06llx", msg->preferred_display_mode->p_clock);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->H);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->HB);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->HSPOL_HSOFF);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->HSW);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->V);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->VB);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->VSPOL_VSOFF);
+ g_string_append_printf(lines, " %04x", msg->preferred_display_mode->VSW);
+ g_string_append_printf(lines, " %02x", msg->preferred_display_mode->VBS3D);
+ g_string_append_printf(lines, " %02x", msg->preferred_display_mode->V2d_s3d_modes);
+ g_string_append_printf(lines, " %02x", msg->preferred_display_mode->P_depth);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->uibc_capability) {
+ g_string_append_printf(lines, STRING_WFD_UIBC_CAPABILITY);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ if (msg->uibc_capability->uibcsupported) {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_INPUT_CATEGORY_LIST);
+ g_string_append_printf(lines, STRING_WFD_EQUALS);
+ if (msg->uibc_capability->input_category_list.input_cat) {
+ guint32 tempcap = 0;
+ if (msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_GENERIC) {
+ tempcap |= WFD_UIBC_INPUT_CAT_GENERIC;
+ g_string_append_printf(lines, STRING_WFD_GENERIC);
+ if (msg->uibc_capability->input_category_list.input_cat != tempcap) {
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ }
+ if (msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_HIDC) {
+ tempcap |= WFD_UIBC_INPUT_CAT_HIDC;
+ g_string_append_printf(lines, STRING_WFD_HIDC);
+ if (msg->uibc_capability->input_category_list.input_cat != tempcap) {
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_SEMI_COLON);
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_GENERIC_CAP_LIST);
+ g_string_append_printf(lines, STRING_WFD_EQUALS);
+ if (msg->uibc_capability->generic_cap_list.inp_type) {
+ guint32 tempcap = 0;
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_KEYBOARD) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_KEYBOARD;
+ g_string_append_printf(lines, STRING_WFD_KEYBOARD);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MOUSE) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_MOUSE;
+ g_string_append_printf(lines, STRING_WFD_MOUSE);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_SINGLETOUCH) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_SINGLETOUCH;
+ g_string_append_printf(lines, STRING_WFD_SINGLE_TOUCH);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MULTITOUCH) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_MULTITOUCH;
+ g_string_append_printf(lines, STRING_WFD_MULTI_TOUCH);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_JOYSTICK) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_JOYSTICK;
+ g_string_append_printf(lines, STRING_WFD_JOYSTICK);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_CAMERA) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_CAMERA;
+ g_string_append_printf(lines, STRING_WFD_CAMERA);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_GESTURE) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_GESTURE;
+ g_string_append_printf(lines, STRING_WFD_GESTURE);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_REMOTECONTROL) {
+ tempcap |= WFD_UIBC_INPUT_TYPE_REMOTECONTROL;
+ g_string_append_printf(lines, STRING_WFD_REMOTE_CONTROL);
+ if (msg->uibc_capability->generic_cap_list.inp_type != tempcap)
+ g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_SEMI_COLON);
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_HIDC_CAP_LIST);
+ g_string_append_printf(lines, STRING_WFD_EQUALS);
+ if (msg->uibc_capability->hidc_cap_list.cap_count) {
+ detailed_cap *temp_cap = msg->uibc_capability->hidc_cap_list.next;
+ while (temp_cap) {
+ if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_KEYBOARD) g_string_append_printf(lines, STRING_WFD_KEYBOARD);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_MOUSE) g_string_append_printf(lines, STRING_WFD_MOUSE);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_SINGLETOUCH) g_string_append_printf(lines, STRING_WFD_SINGLE_TOUCH);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_MULTITOUCH) g_string_append_printf(lines, STRING_WFD_MULTI_TOUCH);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_JOYSTICK) g_string_append_printf(lines, STRING_WFD_JOYSTICK);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_CAMERA) g_string_append_printf(lines, STRING_WFD_CAMERA);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_GESTURE) g_string_append_printf(lines, STRING_WFD_GESTURE);
+ else if (temp_cap->p.inp_type == WFD_UIBC_INPUT_TYPE_REMOTECONTROL) g_string_append_printf(lines, STRING_WFD_REMOTE_CONTROL);
+ g_string_append_printf(lines, STRING_WFD_SLASH);
+ if (temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_INFRARED) g_string_append_printf(lines, STRING_WFD_INFRARED);
+ else if (temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_USB) g_string_append_printf(lines, STRING_WFD_USB);
+ else if (temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_BT) g_string_append_printf(lines, STRING_WFD_BT);
+ else if (temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_ZIGBEE) g_string_append_printf(lines, STRING_WFD_ZIGBEE);
+ else if (temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_WIFI) g_string_append_printf(lines, STRING_WFD_WIFI);
+ else if (temp_cap->p.inp_path == WFD_UIBC_INPUT_PATH_NOSP) g_string_append_printf(lines, STRING_WFD_NO_SP);
+ temp_cap = temp_cap->next;
+ if (temp_cap) g_string_append_printf(lines, STRING_WFD_COMMA STRING_WFD_SPACE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_SEMI_COLON);
+ if (msg->uibc_capability->tcp_port) {
+ g_string_append_printf(lines, STRING_WFD_PORT);
+ g_string_append_printf(lines, STRING_WFD_EQUALS);
+ g_string_append_printf(lines, "%u", msg->uibc_capability->tcp_port);
+ } else {
+ g_string_append_printf(lines, STRING_WFD_PORT);
+ g_string_append_printf(lines, STRING_WFD_EQUALS);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ } else {
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ }
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->uibc_setting) {
+ g_string_append_printf(lines, STRING_WFD_UIBC_SETTING);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ if (msg->uibc_setting->uibc_setting)
+ g_string_append_printf(lines, STRING_WFD_ENABLE);
+ else
+ g_string_append_printf(lines, STRING_WFD_DISABLE);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->standby_resume_capability) {
+ g_string_append_printf(lines, STRING_WFD_STANDBY_RESUME_CAPABILITY);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, STRING_WFD_SPACE);
+ if (msg->standby_resume_capability->standby_resume_cap)
+ g_string_append_printf(lines, STRING_WFD_SUPPORTED);
+ else
+ g_string_append_printf(lines, STRING_WFD_NONE);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->standby) {
+ g_string_append_printf(lines, STRING_WFD_STANDBY);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->connector_type) {
+ g_string_append_printf(lines, STRING_WFD_CONNECTOR_TYPE);
+ g_string_append_printf(lines, STRING_WFD_COLON);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ if (msg->idr_request) {
+ g_string_append_printf(lines, STRING_WFD_IDR_REQUEST);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+
+ /*g_string_append_printf (lines, "\0"); */
+ /*if(g_str_has_suffix (lines, "\r\n\0"))
+ {
+ guint32 length = g_strlen(lines);
+ lines[length-2] = '\0';
+ }*/
+ return g_string_free(lines, FALSE);
}
-gchar* wfdconfig_parameter_names_as_text (const WFDMessage *msg)
+gchar *wfdconfig_parameter_names_as_text(const WFDMessage *msg)
{
- /* change all vars so they match rfc? */
- GString *lines;
- g_return_val_if_fail (msg != NULL, NULL);
-
- lines = g_string_new ("");
-
- /* list of audio codecs */
- if(msg->audio_codecs) {
- g_string_append_printf (lines,"wfd_audio_codecs");
- g_string_append_printf (lines,"\r\n");
- }
- /* list of video codecs */
- if(msg->video_formats) {
- g_string_append_printf (lines,"wfd_video_formats");
- g_string_append_printf (lines,"\r\n");
- }
- /* list of video 3D codecs */
- if(msg->video_3d_formats) {
- g_string_append_printf (lines,"wfd_3d_video_formats");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->content_protection) {
- g_string_append_printf (lines,"wfd_content_protection");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->display_edid) {
- g_string_append_printf (lines,"wfd_display_edid");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->coupled_sink) {
- g_string_append_printf (lines,"wfd_coupled_sink");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->trigger_method) {
- g_string_append_printf (lines,"wfd_trigger_method");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->presentation_url) {
- g_string_append_printf (lines,"wfd_presentation_URL");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->client_rtp_ports) {
- g_string_append_printf (lines,"wfd_client_rtp_ports");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->route) {
- g_string_append_printf (lines,"wfd_route");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->I2C) {
- g_string_append_printf (lines,"wfd_I2C");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->av_format_change_timing) {
- g_string_append_printf (lines,"wfd_av_format_change_timing");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->preferred_display_mode) {
- g_string_append_printf (lines,"wfd_preferred_display_mode");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->uibc_capability) {
- g_string_append_printf (lines,"wfd_uibc_capability");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->uibc_setting) {
- g_string_append_printf (lines,"wfd_uibc_setting");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->standby_resume_capability) {
- g_string_append_printf (lines,"wfd_standby_resume_capability");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->standby) {
- g_string_append_printf (lines,"wfd_standby");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->connector_type) {
- g_string_append_printf (lines,"wfd_connector_type");
- g_string_append_printf (lines,"\r\n");
- }
- if(msg->idr_request) {
- g_string_append_printf (lines,"wfd_idr_request");
- g_string_append_printf (lines,"\r\n");
- }
- return g_string_free (lines, FALSE);
+ /* change all vars so they match rfc? */
+ GString *lines;
+ g_return_val_if_fail(msg != NULL, NULL);
+
+ lines = g_string_new("");
+
+ /* list of audio codecs */
+ if (msg->audio_codecs) {
+ g_string_append_printf(lines, STRING_WFD_AUDIO_CODECS);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ /* list of video codecs */
+ if (msg->video_formats) {
+ g_string_append_printf(lines, STRING_WFD_VIDEO_FORMATS);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ /* list of video 3D codecs */
+ if (msg->video_3d_formats) {
+ g_string_append_printf(lines, STRING_WFD_3D_VIDEO_FORMATS);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->content_protection) {
+ g_string_append_printf(lines, STRING_WFD_CONTENT_PROTECTION);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->display_edid) {
+ g_string_append_printf(lines, STRING_WFD_DISPLAY_EDID);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->coupled_sink) {
+ g_string_append_printf(lines, STRING_WFD_COUPLED_SINK);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->trigger_method) {
+ g_string_append_printf(lines, STRING_WFD_TRIGGER_METHOD);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->presentation_url) {
+ g_string_append_printf(lines, STRING_WFD_PRESENTATION_URL);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->client_rtp_ports) {
+ g_string_append_printf(lines, STRING_WFD_CLIENT_RTP_PORTS);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->route) {
+ g_string_append_printf(lines, STRING_WFD_ROUTE);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->I2C) {
+ g_string_append_printf(lines, STRING_WFD_I2C);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->av_format_change_timing) {
+ g_string_append_printf(lines, STRING_WFD_AV_FORMAT_CHANGE_TIMING);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->preferred_display_mode) {
+ g_string_append_printf(lines, STRING_WFD_PREFERRED_DISPLAY_MODE);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->uibc_capability) {
+ g_string_append_printf(lines, STRING_WFD_UIBC_CAPABILITY);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->uibc_setting) {
+ g_string_append_printf(lines, STRING_WFD_UIBC_SETTING);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->standby_resume_capability) {
+ g_string_append_printf(lines, STRING_WFD_STANDBY_RESUME_CAPABILITY);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->standby) {
+ g_string_append_printf(lines, STRING_WFD_STANDBY);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->connector_type) {
+ g_string_append_printf(lines, STRING_WFD_CONNECTOR_TYPE);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ if (msg->idr_request) {
+ g_string_append_printf(lines, STRING_WFD_IDR_REQUEST);
+ g_string_append_printf(lines, STRING_WFD_CRLF);
+ }
+ return g_string_free(lines, FALSE);
}
static void
-read_string_space_ended (gchar * dest, guint size, gchar * src)
+read_string_space_ended(gchar *dest, guint size, gchar *src)
{
- guint idx = 0;
+ guint idx = 0;
- while (!g_ascii_isspace (*src) && *src != '\0') {
- if (idx < size - 1)
- dest[idx++] = *src;
- src++;
- }
+ while (!g_ascii_isspace(*src) && *src != '\0') {
+ if (idx < size - 1)
+ dest[idx++] = *src;
+ src++;
+ }
- if (size > 0)
- dest[idx] = '\0';
+ if (size > 0)
+ dest[idx] = '\0';
}
static void
-read_string_char_ended (gchar * dest, guint size, gchar del, gchar * src)
+read_string_char_ended(gchar *dest, guint size, gchar del, gchar *src)
{
- guint idx = 0;
+ guint idx = 0;
- while (*src != del && *src != '\0') {
- if (idx < size - 1)
- dest[idx++] = *src;
- src++;
- }
+ while (*src != del && *src != '\0') {
+ if (idx < size - 1)
+ dest[idx++] = *src;
+ src++;
+ }
- if (size > 0)
- dest[idx] = '\0';
+ if (size > 0)
+ dest[idx] = '\0';
}
static void
-read_string_type_and_value (gchar * type, gchar * value, guint tsize, guint vsize, gchar del, gchar * src)
+read_string_type_and_value(gchar *type, gchar *value, guint tsize, guint vsize, gchar del, gchar *src)
{
- guint idx;
-
- idx = 0;
- while (*src != del && *src != '\0') {
- if (idx < tsize - 1)
- type[idx++] = *src;
- src++;
- }
-
- if (tsize > 0)
- type[idx] = '\0';
-
- src++;
- idx = 0;
- while (*src != '\0') {
- if (idx < vsize - 1)
- value[idx++] = *src;
- src++;
- }
- if (vsize > 0)
- value[idx] = '\0';
+ guint idx;
+
+ idx = 0;
+ while (*src != del && *src != '\0') {
+ if (idx < tsize - 1)
+ type[idx++] = *src;
+ src++;
+ }
+
+ if (tsize > 0)
+ type[idx] = '\0';
+
+ src++;
+ idx = 0;
+ while (*src != '\0') {
+ if (idx < vsize - 1)
+ value[idx++] = *src;
+ src++;
+ }
+ if (vsize > 0)
+ value[idx] = '\0';
}
static gboolean
-wfdconfig_parse_line (WFDMessage * msg, gchar * buffer)
+wfdconfig_parse_line(WFDMessage *msg, gchar *buffer)
{
- gchar type[8192] = {0};
- gchar value[8192] = {0};
- gchar temp[8192] = {0};
- gchar *p = buffer;
- gchar *v = value;
- gchar *result = NULL;
-
- #define WFD_SKIP_SPACE(q) if (*q && g_ascii_isspace (*q)) q++
- #define WFD_SKIP_EQUAL(q) if (*q && *q == '=') q++
- #define WFD_SKIP_COMMA(q) if (*q && g_ascii_ispunct (*q)) q++
- #define WFD_READ_STRING(field) read_string_space_ended (temp, sizeof (temp), v); v+=strlen(temp); REPLACE_STRING (field, temp)
- #define WFD_READ_CHAR_END_STRING(field, del) read_string_char_ended (temp, sizeof (temp), del, v); v+=strlen(temp); REPLACE_STRING (field, temp)
- #define WFD_READ_UINT32(field) read_string_space_ended (temp, sizeof (temp), v); v+=strlen(temp); field = strtoul (temp, NULL, 16)
- #define WFD_READ_UINT32_DIGIT(field) read_string_space_ended (temp, sizeof (temp), v); v+=strlen(temp); field = strtoul (temp, NULL, 10)
-
- //g_print("wfdconfig_parse_line input: %s\n", buffer);
- read_string_type_and_value (type, value, sizeof(type), sizeof(value), ':', p);
- //g_print("wfdconfig_parse_line type:%s value:%s\n", type, value);
- if(!g_strcmp0(type,"wfd_audio_codecs")) {
- msg->audio_codecs = g_new0 (WFDAudioCodeclist, 1);
- if(strlen(v)) {
- guint i=0;
- msg->audio_codecs->count= strlen(v)/16;
- msg->audio_codecs->list = g_new0 (WFDAudioCodec, msg->audio_codecs->count);
- for(;i<msg->audio_codecs->count;i++) {
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->audio_codecs->list[i].audio_format);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->audio_codecs->list[i].modes);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->audio_codecs->list[i].latency);
- WFD_SKIP_COMMA(v);
- }
- }
- } else if(!g_strcmp0(type,"wfd_video_formats")) {
- msg->video_formats = g_new0 (WFDVideoCodeclist, 1);
- if(strlen(v)) {
- msg->video_formats->count = 1;
- msg->video_formats->list = g_new0 (WFDVideoCodec, 1);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->native);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->preferred_display_mode_supported);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.profile);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.level);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.CEA_Support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.VESA_Support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.HH_Support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.latency);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.min_slice_size);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.slice_enc_params);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support);
- WFD_SKIP_SPACE(v);
- if(msg->video_formats->list->preferred_display_mode_supported == 1) {
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.max_hres);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_formats->list->H264_codec.max_vres);
- WFD_SKIP_SPACE(v);
- }
- }
- }else if(!g_strcmp0(type,"wfd_3d_video_formats")) {
- msg->video_3d_formats = g_new0 (WFD3DFormats, 1);
- if(strlen(v)) {
- msg->video_3d_formats->count = 1;
- msg->video_3d_formats->list = g_new0 (WFD3dCapList, 1);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->native);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->preferred_display_mode_supported);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.profile);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.level);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.video_3d_capability);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.latency);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.min_slice_size);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.slice_enc_params);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.frame_rate_control_support);
- WFD_SKIP_SPACE(v);
- if(msg->video_3d_formats->list->preferred_display_mode_supported == 1) {
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.max_hres);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.max_vres);
- WFD_SKIP_SPACE(v);
- }
- }
- } else if(!g_strcmp0(type,"wfd_content_protection")) {
- msg->content_protection = g_new0 (WFDContentProtection, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- msg->content_protection->hdcp2_spec = g_new0 (WFDHdcp2Spec, 1);
- if(strstr(v,"none")) {
- msg->content_protection->hdcp2_spec->hdcpversion=g_strdup("none");
- } else {
- WFD_READ_STRING(msg->content_protection->hdcp2_spec->hdcpversion);
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->content_protection->hdcp2_spec->TCPPort);
- }
- }
- } else if(!g_strcmp0(type,"wfd_display_edid")) {
- msg->display_edid = g_new0 (WFDDisplayEdid, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- if(strstr(v,"none")) {
- msg->display_edid->edid_supported = 0;
- } else {
- msg->display_edid->edid_supported = 1;
- WFD_READ_UINT32(msg->display_edid->edid_block_count);
- WFD_SKIP_SPACE(v);
- if(msg->display_edid->edid_block_count) {
- gchar *edid_string = v;
- int i=0, j=0, size =0;
- guint32 payload_size = EDID_BLOCK_SIZE * msg->display_edid->edid_block_count;
- msg->display_edid->edid_payload = g_malloc(payload_size);
- size = EDID_BLOCK_SIZE*msg->display_edid->edid_block_count*2;
- for (;i<size; j++) {
- int k=0,kk=0;
- if(edid_string[i]>0x29 && edid_string[i]<0x40) k=edid_string[i]-48;
- else if(edid_string[i]>0x60 && edid_string[i]<0x67) k=edid_string[i]-87;
- else if(edid_string[i]>0x40 && edid_string[i]<0x47) k=edid_string[i]-55;
-
- if(edid_string[i+1]>0x29 && edid_string[i+1]<0x40) kk=edid_string[i+1]-48;
- else if(edid_string[i+1]>0x60 && edid_string[i+1]<0x67) kk=edid_string[i+1]-87;
- else if(edid_string[i+1]>0x40 && edid_string[i+1]<0x47) kk=edid_string[i+1]-55;
-
- msg->display_edid->edid_payload[j] = (k<<4)|kk;
- i+=2;
- }
- //memcpy(msg->display_edid->edid_payload, v, payload_size);
- v += (payload_size*2);
- } else v += strlen(v);
- }
- }
- } else if(!g_strcmp0(type,"wfd_coupled_sink")) {
- msg->coupled_sink = g_new0 (WFDCoupledSink, 1);
- if(strlen(v)) {
- msg->coupled_sink->coupled_sink_cap = g_new0 (WFDCoupled_sink_cap, 1);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->coupled_sink->coupled_sink_cap->status);
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->coupled_sink->coupled_sink_cap->sink_address);
- }
- } else if(!g_strcmp0(type,"wfd_trigger_method")) {
- msg->trigger_method = g_new0 (WFDTriggerMethod, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->trigger_method->wfd_trigger_method);
- }
- } else if(!g_strcmp0(type,"wfd_presentation_URL")) {
- msg->presentation_url = g_new0 (WFDPresentationUrl, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->presentation_url->wfd_url0);
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->presentation_url->wfd_url1);
- }
- } else if(!g_strcmp0(type,"wfd_client_rtp_ports")) {
- msg->client_rtp_ports = g_new0 (WFDClientRtpPorts, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->client_rtp_ports->profile);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32_DIGIT(msg->client_rtp_ports->rtp_port0);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32_DIGIT(msg->client_rtp_ports->rtp_port1);
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->client_rtp_ports->mode);
- }
- } else if(!g_strcmp0(type,"wfd_route")) {
- msg->route = g_new0 (WFDRoute, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- WFD_READ_STRING(msg->route->destination);
- }
- } else if(!g_strcmp0(type,"wfd_I2C")) {
- msg->I2C = g_new0 (WFDI2C, 1);
- if(strlen(v)) {
- msg->I2C->I2CPresent = TRUE;
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32_DIGIT(msg->I2C->I2C_port);
- if(msg->I2C->I2C_port) msg->I2C->I2CPresent = TRUE;
- }
- } else if(!g_strcmp0(type,"wfd_av_format_change_timing")) {
- msg->av_format_change_timing = g_new0 (WFDAVFormatChangeTiming, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->av_format_change_timing->PTS);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->av_format_change_timing->DTS);
- }
- } else if(!g_strcmp0(type,"wfd_preferred_display_mode")) {
- msg->preferred_display_mode = g_new0 (WFDPreferredDisplayMode, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- if(!strstr(v,"none")) {
- msg->preferred_display_mode->displaymodesupported = FALSE;
- } else {
- WFD_READ_UINT32(msg->preferred_display_mode->p_clock);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->HB);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->HSPOL_HSOFF);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->HSW);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->V);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->VB);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->VSPOL_VSOFF);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->VSW);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->VBS3D);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->V2d_s3d_modes);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->P_depth);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.profile);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.level);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.CEA_Support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.VESA_Support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.HH_Support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.latency);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.min_slice_size);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.slice_enc_params);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.frame_rate_control_support);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.max_hres);
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.max_vres);
- WFD_SKIP_SPACE(v);
- }
- }
- } else if(!g_strcmp0(type,"wfd_uibc_capability")) {
- msg->uibc_capability = g_new0 (WFDUibcCapability, 1);
- if(strstr(v,"input_category_list")) {
- gchar *tstring = NULL;
- msg->uibc_capability->uibcsupported = TRUE;
- WFD_SKIP_SPACE(v);
- WFD_READ_CHAR_END_STRING(tstring, '=');
- if(!g_strcmp0(tstring,"input_category_list")) {
- gchar temp2[8192]={0};
- guint rem_len=0, read_len=0;
- WFD_READ_CHAR_END_STRING(tstring, ';');
- rem_len = strlen(tstring);
- do {
- WFD_SKIP_SPACE(v);
- read_string_char_ended (temp2, 8192, ',', tstring+read_len);
- read_len += (strlen(temp2)+1);
- if(strstr(temp2,"GENERIC")) msg->uibc_capability->input_category_list.input_cat |= WFD_UIBC_INPUT_CAT_GENERIC;
- else if(strstr(temp2,"HIDC")) msg->uibc_capability->input_category_list.input_cat |= WFD_UIBC_INPUT_CAT_HIDC;
- else msg->uibc_capability->input_category_list.input_cat |= WFD_UIBC_INPUT_CAT_UNKNOWN;
- } while(read_len < rem_len);
-
- result = strstr(v,"generic_cap_list");
- if(result != NULL){
- memset(temp2, 0, 8192);
- rem_len=0;
- read_len=0;
- v = result;
- WFD_READ_CHAR_END_STRING(tstring, '=');
- if(!g_strcmp0(tstring,"generic_cap_list")) {
- WFD_SKIP_SPACE(v);
- WFD_READ_CHAR_END_STRING(tstring, ';');
- rem_len = strlen(tstring);
- do {
- read_string_char_ended (temp2, 8192, ',', tstring+read_len);
- read_len += (strlen(temp2)+1);
- if(strstr(temp2,"Keyboard")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_KEYBOARD;
- else if(strstr(temp2,"Mouse")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_MOUSE;
- else if(strstr(temp2,"SingleTouch")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_SINGLETOUCH;
- else if(strstr(temp2,"MultiTouch")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_MULTITOUCH;
- else if(strstr(temp2,"Joystick")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_JOYSTICK;
- else if(strstr(temp2,"Camera")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_CAMERA;
- else if(strstr(temp2,"Gesture")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_GESTURE;
- else if(strstr(temp2,"RemoteControl")) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_REMOTECONTROL;
- else msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_UNKNOWN;
- } while(read_len < rem_len);
- }
- }
- result = strstr (v, "hidc_cap_list");
- if(result != NULL){
- v = result;
- WFD_SKIP_SPACE(v);
- WFD_READ_CHAR_END_STRING(tstring, '=');
- if(!g_strcmp0(tstring,"hidc_cap_list")) {
- gchar inp_type[8192];
- gchar inp_path[8192];
- memset(temp2, 0, 8192);
- rem_len=0;
- read_len=0;
- detailed_cap *temp_cap;
- WFD_READ_CHAR_END_STRING(tstring, ';');
- rem_len = strlen(tstring);
- msg->uibc_capability->hidc_cap_list.next = g_new0 (detailed_cap, 1);
- temp_cap = msg->uibc_capability->hidc_cap_list.next;
- do {
- msg->uibc_capability->hidc_cap_list.cap_count++;
- read_string_char_ended (temp2, 8192, ',', tstring+read_len);
- read_len += (strlen(temp2)+1);
- read_string_type_and_value (inp_type, inp_path, sizeof(inp_type), sizeof(inp_path), '/',temp2);
- if(strstr(inp_type,"Keyboard")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_KEYBOARD;
- else if(strstr(inp_type,"Mouse")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_MOUSE;
- else if(strstr(inp_type,"SingleTouch")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_SINGLETOUCH;
- else if(strstr(inp_type,"MultiTouch")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_MULTITOUCH;
- else if(strstr(inp_type,"Joystick")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_JOYSTICK;
- else if(strstr(inp_type,"Camera")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_CAMERA;
- else if(strstr(inp_type,"Gesture")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_GESTURE;
- else if(strstr(inp_type,"RemoteControl")) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_REMOTECONTROL;
- else temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_UNKNOWN;
-
- if(strstr(inp_path,"Infrared")) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_INFRARED;
- else if(strstr(inp_path,"USB")) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_USB;
- else if(strstr(inp_path,"BT")) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_BT;
- else if(strstr(inp_path,"Zigbee")) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_ZIGBEE;
- else if(strstr(inp_path,"Wi-Fi")) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_WIFI;
- else if(strstr(inp_path,"No-SP")) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_NOSP;
- else temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_UNKNOWN;
- if(read_len < rem_len) {
- temp_cap->next = g_new0 (detailed_cap, 1);
- temp_cap = temp_cap->next;
- }
- } while(read_len < rem_len);
- }
- }
- result = strstr(v,"port");
- if(result != NULL) {
- v = result;
- WFD_READ_CHAR_END_STRING(tstring, '=');
- if(!g_strcmp0(tstring,"port")) {
- WFD_SKIP_EQUAL(v);
- WFD_READ_CHAR_END_STRING(tstring, ';');
- if(!strstr(tstring,"none")) {
- msg->uibc_capability->tcp_port = strtoul (tstring, NULL, 10);
- }
- }
- }
- }
- } else if (strstr(v,"none")) {
- msg->uibc_capability->uibcsupported = FALSE;
- }
- } else if(!g_strcmp0(type,"wfd_uibc_setting")) {
- msg->uibc_setting = g_new0 (WFDUibcSetting, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- if(!g_strcmp0(v, "enable"))
- msg->uibc_setting->uibc_setting = TRUE;
- else
- msg->uibc_setting->uibc_setting = FALSE;
- }
- } else if(!g_strcmp0(type,"wfd_standby_resume_capability")) {
- msg->standby_resume_capability = g_new0 (WFDStandbyResumeCapability, 1);
- if(strlen(v)) {
- WFD_SKIP_SPACE(v);
- if(!g_strcmp0(v, "supported"))
- msg->standby_resume_capability->standby_resume_cap = TRUE;
- else
- msg->standby_resume_capability->standby_resume_cap = FALSE;
- }
- } else if(!g_strcmp0(type,"wfd_standby")) {
- msg->standby = g_new0 (WFDStandby, 1);
- msg->standby->wfd_standby = TRUE;
- } else if(!g_strcmp0(type,"wfd_connector_type")) {
- msg->connector_type = g_new0 (WFDConnectorType, 1);
- if(strlen(v)) {
- msg->connector_type->supported = TRUE;
- WFD_SKIP_SPACE(v);
- WFD_READ_UINT32(msg->connector_type->connector_type);
- }
- } else if(!g_strcmp0(type,"wfd_idr_request")) {
- msg->idr_request = g_new0 (WFDIdrRequest, 1);
- msg->idr_request->idr_request = TRUE;
- }
-
- return TRUE;
+ gchar type[8192] = {0};
+ gchar value[8192] = {0};
+ gchar temp[8192] = {0};
+ gchar *p = buffer;
+ gchar *v = value;
+ gchar *result = NULL;
+
+#define WFD_SKIP_SPACE(q) if (*q && g_ascii_isspace(*q)) q++;
+#define WFD_SKIP_EQUAL(q) if (*q && *q == '=') q++;
+#define WFD_SKIP_COMMA(q) if (*q && g_ascii_ispunct(*q)) q++;
+#define WFD_READ_STRING(field) read_string_space_ended(temp, sizeof(temp), v); v += strlen(temp); REPLACE_STRING(field, temp);
+#define WFD_READ_CHAR_END_STRING(field, del) read_string_char_ended(temp, sizeof(temp), del, v); v += strlen(temp); REPLACE_STRING(field, temp);
+#define WFD_READ_UINT32(field) read_string_space_ended(temp, sizeof(temp), v); v += strlen(temp); field = strtoul(temp, NULL, 16);
+#define WFD_READ_UINT32_DIGIT(field) read_string_space_ended(temp, sizeof(temp), v); v += strlen(temp); field = strtoul(temp, NULL, 10);
+
+ /*g_print("wfdconfig_parse_line input: %s\n", buffer); */
+ read_string_type_and_value(type, value, sizeof(type), sizeof(value), ':', p);
+ /*g_print("wfdconfig_parse_line type:%s value:%s\n", type, value); */
+ if (!g_strcmp0(type, STRING_WFD_AUDIO_CODECS)) {
+ msg->audio_codecs = g_new0(WFDAudioCodeclist, 1);
+ if (strlen(v)) {
+ guint i = 0;
+ msg->audio_codecs->count = strlen(v) / 16;
+ msg->audio_codecs->list = g_new0(WFDAudioCodec, msg->audio_codecs->count);
+ for (; i < msg->audio_codecs->count; i++) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->audio_codecs->list[i].audio_format);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->audio_codecs->list[i].modes);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->audio_codecs->list[i].latency);
+ WFD_SKIP_COMMA(v);
+ }
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_VIDEO_FORMATS)) {
+ msg->video_formats = g_new0(WFDVideoCodeclist, 1);
+ if (strlen(v)) {
+ msg->video_formats->count = 1;
+ msg->video_formats->list = g_new0(WFDVideoCodec, 1);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->native);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->preferred_display_mode_supported);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.profile);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.level);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.CEA_Support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.VESA_Support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.HH_Support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.latency);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.min_slice_size);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.slice_enc_params);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support);
+ WFD_SKIP_SPACE(v);
+ if (msg->video_formats->list->preferred_display_mode_supported == 1) {
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.max_hres);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_formats->list->H264_codec.max_vres);
+ WFD_SKIP_SPACE(v);
+ }
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_3D_VIDEO_FORMATS)) {
+ msg->video_3d_formats = g_new0(WFD3DFormats, 1);
+ if (strlen(v)) {
+ msg->video_3d_formats->count = 1;
+ msg->video_3d_formats->list = g_new0(WFD3dCapList, 1);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->native);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->preferred_display_mode_supported);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.profile);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.level);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.video_3d_capability);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.latency);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.min_slice_size);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.slice_enc_params);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.misc_params.frame_rate_control_support);
+ WFD_SKIP_SPACE(v);
+ if (msg->video_3d_formats->list->preferred_display_mode_supported == 1) {
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.max_hres);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->video_3d_formats->list->H264_codec.max_vres);
+ WFD_SKIP_SPACE(v);
+ }
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_CONTENT_PROTECTION)) {
+ msg->content_protection = g_new0(WFDContentProtection, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ msg->content_protection->hdcp2_spec = g_new0(WFDHdcp2Spec, 1);
+ if (strstr(v, STRING_WFD_NONE)) {
+ msg->content_protection->hdcp2_spec->hdcpversion = g_strdup(STRING_WFD_NONE);
+ } else {
+ WFD_READ_STRING(msg->content_protection->hdcp2_spec->hdcpversion);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->content_protection->hdcp2_spec->TCPPort);
+ }
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_DISPLAY_EDID)) {
+ msg->display_edid = g_new0(WFDDisplayEdid, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ if (strstr(v, STRING_WFD_NONE)) {
+ msg->display_edid->edid_supported = 0;
+ } else {
+ msg->display_edid->edid_supported = 1;
+ WFD_READ_UINT32(msg->display_edid->edid_block_count);
+ WFD_SKIP_SPACE(v);
+ if (msg->display_edid->edid_block_count) {
+ gchar *edid_string = v;
+ int i = 0, j = 0, size = 0;
+ guint32 payload_size = EDID_BLOCK_SIZE * msg->display_edid->edid_block_count;
+ msg->display_edid->edid_payload = g_malloc(payload_size);
+ size = EDID_BLOCK_SIZE * msg->display_edid->edid_block_count * 2;
+ for (; i < size; j++) {
+ int k = 0, kk = 0;
+ if (edid_string[i] > 0x29 && edid_string[i] < 0x40) k = edid_string[i] - 48;
+ else if (edid_string[i] > 0x60 && edid_string[i] < 0x67) k = edid_string[i] - 87;
+ else if (edid_string[i] > 0x40 && edid_string[i] < 0x47) k = edid_string[i] - 55;
+
+ if (edid_string[i + 1] > 0x29 && edid_string[i + 1] < 0x40) kk = edid_string[i + 1] - 48;
+ else if (edid_string[i + 1] > 0x60 && edid_string[i + 1] < 0x67) kk = edid_string[i + 1] - 87;
+ else if (edid_string[i + 1] > 0x40 && edid_string[i + 1] < 0x47) kk = edid_string[i + 1] - 55;
+
+ msg->display_edid->edid_payload[j] = (k << 4) | kk;
+ i += 2;
+ }
+ /*memcpy(msg->display_edid->edid_payload, v, payload_size); */
+ v += (payload_size * 2);
+ } else v += strlen(v);
+ }
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_COUPLED_SINK)) {
+ msg->coupled_sink = g_new0(WFDCoupledSink, 1);
+ if (strlen(v)) {
+ msg->coupled_sink->coupled_sink_cap = g_new0(WFDCoupled_sink_cap, 1);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->coupled_sink->coupled_sink_cap->status);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->coupled_sink->coupled_sink_cap->sink_address);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_TRIGGER_METHOD)) {
+ msg->trigger_method = g_new0(WFDTriggerMethod, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->trigger_method->wfd_trigger_method);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_PRESENTATION_URL)) {
+ msg->presentation_url = g_new0(WFDPresentationUrl, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->presentation_url->wfd_url0);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->presentation_url->wfd_url1);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_CLIENT_RTP_PORTS)) {
+ msg->client_rtp_ports = g_new0(WFDClientRtpPorts, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->client_rtp_ports->profile);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32_DIGIT(msg->client_rtp_ports->rtp_port0);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32_DIGIT(msg->client_rtp_ports->rtp_port1);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->client_rtp_ports->mode);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_ROUTE)) {
+ msg->route = g_new0(WFDRoute, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_STRING(msg->route->destination);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_I2C)) {
+ msg->I2C = g_new0(WFDI2C, 1);
+ if (strlen(v)) {
+ msg->I2C->I2CPresent = TRUE;
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32_DIGIT(msg->I2C->I2C_port);
+ if (msg->I2C->I2C_port) msg->I2C->I2CPresent = TRUE;
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_AV_FORMAT_CHANGE_TIMING)) {
+ msg->av_format_change_timing = g_new0(WFDAVFormatChangeTiming, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->av_format_change_timing->PTS);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->av_format_change_timing->DTS);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_PREFERRED_DISPLAY_MODE)) {
+ msg->preferred_display_mode = g_new0(WFDPreferredDisplayMode, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ if (!strstr(v, STRING_WFD_NONE)) {
+ msg->preferred_display_mode->displaymodesupported = FALSE;
+ } else {
+ WFD_READ_UINT32(msg->preferred_display_mode->p_clock);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->HB);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->HSPOL_HSOFF);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->HSW);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->V);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->VB);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->VSPOL_VSOFF);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->VSW);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->VBS3D);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->V2d_s3d_modes);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->P_depth);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.profile);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.level);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.CEA_Support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.VESA_Support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.HH_Support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.latency);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.min_slice_size);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.slice_enc_params);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.misc_params.frame_rate_control_support);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.max_hres);
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->preferred_display_mode->H264_codec.max_vres);
+ WFD_SKIP_SPACE(v);
+ }
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_UIBC_CAPABILITY)) {
+ msg->uibc_capability = g_new0(WFDUibcCapability, 1);
+ if (strstr(v, STRING_WFD_INPUT_CATEGORY_LIST)) {
+ gchar *tstring = NULL;
+ msg->uibc_capability->uibcsupported = TRUE;
+ WFD_SKIP_SPACE(v);
+ WFD_READ_CHAR_END_STRING(tstring, '=');
+ if (!g_strcmp0(tstring, STRING_WFD_INPUT_CATEGORY_LIST)) {
+ gchar temp2[8192] = {0};
+ guint rem_len = 0, read_len = 0;
+ WFD_READ_CHAR_END_STRING(tstring, ';');
+ rem_len = strlen(tstring);
+ do {
+ WFD_SKIP_SPACE(v);
+ read_string_char_ended(temp2, 8192, ',', tstring + read_len);
+ read_len += (strlen(temp2) + 1);
+ if (strstr(temp2, STRING_WFD_GENERIC)) msg->uibc_capability->input_category_list.input_cat |= WFD_UIBC_INPUT_CAT_GENERIC;
+ else if (strstr(temp2, STRING_WFD_HIDC)) msg->uibc_capability->input_category_list.input_cat |= WFD_UIBC_INPUT_CAT_HIDC;
+ else msg->uibc_capability->input_category_list.input_cat |= WFD_UIBC_INPUT_CAT_UNKNOWN;
+ } while (read_len < rem_len);
+
+ result = strstr(v, STRING_WFD_GENERIC_CAP_LIST);
+ if (result != NULL) {
+ memset(temp2, 0, 8192);
+ rem_len = 0;
+ read_len = 0;
+ v = result;
+ WFD_READ_CHAR_END_STRING(tstring, '=');
+ if (!g_strcmp0(tstring, STRING_WFD_GENERIC_CAP_LIST)) {
+ WFD_SKIP_SPACE(v);
+ WFD_READ_CHAR_END_STRING(tstring, ';');
+ rem_len = strlen(tstring);
+ do {
+ read_string_char_ended(temp2, 8192, ',', tstring + read_len);
+ read_len += (strlen(temp2) + 1);
+ if (strstr(temp2, STRING_WFD_KEYBOARD)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_KEYBOARD;
+ else if (strstr(temp2, STRING_WFD_MOUSE)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_MOUSE;
+ else if (strstr(temp2, STRING_WFD_SINGLE_TOUCH)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_SINGLETOUCH;
+ else if (strstr(temp2, STRING_WFD_MULTI_TOUCH)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_MULTITOUCH;
+ else if (strstr(temp2, STRING_WFD_JOYSTICK)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_JOYSTICK;
+ else if (strstr(temp2, STRING_WFD_CAMERA)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_CAMERA;
+ else if (strstr(temp2, STRING_WFD_GESTURE)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_GESTURE;
+ else if (strstr(temp2, STRING_WFD_REMOTE_CONTROL)) msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_REMOTECONTROL;
+ else msg->uibc_capability->generic_cap_list.inp_type |= WFD_UIBC_INPUT_TYPE_UNKNOWN;
+ } while (read_len < rem_len);
+ }
+ }
+ result = strstr(v, STRING_WFD_HIDC_CAP_LIST);
+ if (result != NULL) {
+ v = result;
+ WFD_SKIP_SPACE(v);
+ WFD_READ_CHAR_END_STRING(tstring, '=');
+ if (!g_strcmp0(tstring, STRING_WFD_HIDC_CAP_LIST)) {
+ gchar inp_type[8192];
+ gchar inp_path[8192];
+ memset(temp2, 0, 8192);
+ rem_len = 0;
+ read_len = 0;
+ detailed_cap *temp_cap;
+ WFD_READ_CHAR_END_STRING(tstring, ';');
+ rem_len = strlen(tstring);
+ msg->uibc_capability->hidc_cap_list.next = g_new0(detailed_cap, 1);
+ temp_cap = msg->uibc_capability->hidc_cap_list.next;
+ do {
+ msg->uibc_capability->hidc_cap_list.cap_count++;
+ read_string_char_ended(temp2, 8192, ',', tstring + read_len);
+ read_len += (strlen(temp2) + 1);
+ read_string_type_and_value(inp_type, inp_path, sizeof(inp_type), sizeof(inp_path), '/', temp2);
+ if (strstr(inp_type, STRING_WFD_KEYBOARD)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_KEYBOARD;
+ else if (strstr(inp_type, STRING_WFD_MOUSE)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_MOUSE;
+ else if (strstr(inp_type, STRING_WFD_SINGLE_TOUCH)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_SINGLETOUCH;
+ else if (strstr(inp_type, STRING_WFD_MULTI_TOUCH)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_MULTITOUCH;
+ else if (strstr(inp_type, STRING_WFD_JOYSTICK)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_JOYSTICK;
+ else if (strstr(inp_type, STRING_WFD_CAMERA)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_CAMERA;
+ else if (strstr(inp_type, STRING_WFD_GESTURE)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_GESTURE;
+ else if (strstr(inp_type, STRING_WFD_REMOTE_CONTROL)) temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_REMOTECONTROL;
+ else temp_cap->p.inp_type = WFD_UIBC_INPUT_TYPE_UNKNOWN;
+
+ if (strstr(inp_path, STRING_WFD_INFRARED)) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_INFRARED;
+ else if (strstr(inp_path, STRING_WFD_USB)) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_USB;
+ else if (strstr(inp_path, STRING_WFD_BT)) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_BT;
+ else if (strstr(inp_path, STRING_WFD_ZIGBEE)) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_ZIGBEE;
+ else if (strstr(inp_path, STRING_WFD_WIFI)) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_WIFI;
+ else if (strstr(inp_path, STRING_WFD_NO_SP)) temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_NOSP;
+ else temp_cap->p.inp_path = WFD_UIBC_INPUT_PATH_UNKNOWN;
+ if (read_len < rem_len) {
+ temp_cap->next = g_new0(detailed_cap, 1);
+ temp_cap = temp_cap->next;
+ }
+ } while (read_len < rem_len);
+ }
+ }
+ result = strstr(v, STRING_WFD_PORT);
+ if (result != NULL) {
+ v = result;
+ WFD_READ_CHAR_END_STRING(tstring, '=');
+ if (!g_strcmp0(tstring, STRING_WFD_PORT)) {
+ WFD_SKIP_EQUAL(v);
+ WFD_READ_CHAR_END_STRING(tstring, ';');
+ if (!strstr(tstring, STRING_WFD_NONE)) {
+ msg->uibc_capability->tcp_port = strtoul(tstring, NULL, 10);
+ }
+ }
+ }
+ }
+ } else if (strstr(v, STRING_WFD_NONE)) {
+ msg->uibc_capability->uibcsupported = FALSE;
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_UIBC_SETTING)) {
+ msg->uibc_setting = g_new0(WFDUibcSetting, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ if (!g_strcmp0(v, STRING_WFD_ENABLE))
+ msg->uibc_setting->uibc_setting = TRUE;
+ else
+ msg->uibc_setting->uibc_setting = FALSE;
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_STANDBY_RESUME_CAPABILITY)) {
+ msg->standby_resume_capability = g_new0(WFDStandbyResumeCapability, 1);
+ if (strlen(v)) {
+ WFD_SKIP_SPACE(v);
+ if (!g_strcmp0(v, STRING_WFD_SUPPORTED))
+ msg->standby_resume_capability->standby_resume_cap = TRUE;
+ else
+ msg->standby_resume_capability->standby_resume_cap = FALSE;
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_STANDBY)) {
+ msg->standby = g_new0(WFDStandby, 1);
+ msg->standby->wfd_standby = TRUE;
+ } else if (!g_strcmp0(type, STRING_WFD_CONNECTOR_TYPE)) {
+ msg->connector_type = g_new0(WFDConnectorType, 1);
+ if (strlen(v)) {
+ msg->connector_type->supported = TRUE;
+ WFD_SKIP_SPACE(v);
+ WFD_READ_UINT32(msg->connector_type->connector_type);
+ }
+ } else if (!g_strcmp0(type, STRING_WFD_IDR_REQUEST)) {
+ msg->idr_request = g_new0(WFDIdrRequest, 1);
+ msg->idr_request->idr_request = TRUE;
+ }
+
+ return TRUE;
}
/**
* Returns: #WFD_OK on success.
*/
WFDResult
-wfdconfig_message_parse_buffer (const guint8 * data, guint size, WFDMessage * msg)
+wfdconfig_message_parse_buffer(const guint8 *data, guint size, WFDMessage *msg)
{
- const gchar *p;
- gchar buffer[MAX_LINE_LEN] = {0};
- guint idx = 0;
-
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- g_return_val_if_fail (data != NULL, WFD_EINVAL);
- g_return_val_if_fail (size != 0, WFD_EINVAL);
-
- p = (const gchar *) data;
- while (TRUE) {
-
- if (*p == '\0')
- break;
-
- idx = 0;
- while (*p != '\n' && *p != '\r' && *p != '\0') {
- if (idx < sizeof (buffer) - 1)
- buffer[idx++] = *p;
- p++;
- }
- buffer[idx] = '\0';
- wfdconfig_parse_line (msg, buffer);
-
- if (*p == '\0')
- break;
- p+=2;
- }
-
- return WFD_OK;
+ const gchar *p;
+ gchar buffer[MAX_LINE_LEN] = {0};
+ guint idx = 0;
+
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(data != NULL, WFD_EINVAL);
+ g_return_val_if_fail(size != 0, WFD_EINVAL);
+
+ p = (const gchar *) data;
+ while (TRUE) {
+
+ if (*p == '\0')
+ break;
+
+ idx = 0;
+ while (*p != '\n' && *p != '\r' && *p != '\0') {
+ if (idx < sizeof(buffer) - 1)
+ buffer[idx++] = *p;
+ p++;
+ }
+ buffer[idx] = '\0';
+ wfdconfig_parse_line(msg, buffer);
+
+ if (*p == '\0')
+ break;
+ p += 2;
+ }
+
+ return WFD_OK;
}
/**
* Returns: a #WFDResult.
*/
WFDResult
-wfdconfig_message_dump (const WFDMessage * msg)
+wfdconfig_message_dump(const WFDMessage *msg)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- wfd_debug("===========WFD Message dump=========");
-
- if(msg->audio_codecs) {
- guint i=0;
- wfd_debug("Audio supported formats : \n");
- for(;i<msg->audio_codecs->count;i++) {
- wfd_debug("Codec: %s\n",msg->audio_codecs->list[i].audio_format);
- if(!strcmp(msg->audio_codecs->list[i].audio_format,"LPCM")) {
- if(msg->audio_codecs->list[i].modes & WFD_FREQ_44100)
- wfd_debug(" Freq: %d\n", 44100);
- if(msg->audio_codecs->list[i].modes & WFD_FREQ_48000)
- wfd_debug(" Freq: %d\n", 48000);
- wfd_debug(" Channels: %d\n", 2);
- }
- if(!strcmp(msg->audio_codecs->list[i].audio_format,"AAC")) {
- wfd_debug(" Freq: %d\n", 48000);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_2)
- wfd_debug(" Channels: %d\n", 2);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_4)
- wfd_debug(" Channels: %d\n", 4);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_6)
- wfd_debug(" Channels: %d\n", 6);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_8)
- wfd_debug(" Channels: %d\n", 8);
- }
- if(!strcmp(msg->audio_codecs->list[i].audio_format,"AC3")) {
- wfd_debug(" Freq: %d\n", 48000);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_2)
- wfd_debug(" Channels: %d\n", 2);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_4)
- wfd_debug(" Channels: %d\n", 4);
- if(msg->audio_codecs->list[i].modes & WFD_CHANNEL_6)
- wfd_debug(" Channels: %d\n", 6);
- }
- wfd_debug(" Bitwidth: %d\n", 16);
- wfd_debug(" Latency: %d\n", msg->audio_codecs->list[i].latency);
- }
- }
-
-
- if(msg->video_formats) {
- wfd_debug("Video supported formats : \n");
- if(msg->video_formats->list) {
- wfd_debug("Codec: H264\n");
- guint nativeindex = 0;
- if((msg->video_formats->list->native & 0x7) == WFD_VIDEO_CEA_RESOLUTION) {
- wfd_debug (" Native type: CEA\n");
- } else if((msg->video_formats->list->native & 0x7) == WFD_VIDEO_VESA_RESOLUTION) {
- wfd_debug (" Native type: VESA\n");
- } else if((msg->video_formats->list->native & 0x7) == WFD_VIDEO_HH_RESOLUTION) {
- wfd_debug (" Native type: HH\n");
- }
- nativeindex = msg->video_formats->list->native >> 3;
- wfd_debug (" Resolution: %d\n", (1 << nativeindex));
-
- if(msg->video_formats->list->H264_codec.profile & WFD_H264_BASE_PROFILE) {
- wfd_debug (" Profile: BASE\n");
- } else if(msg->video_formats->list->H264_codec.profile & WFD_H264_HIGH_PROFILE) {
- wfd_debug (" Profile: HIGH\n");
- } if(msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_3_1) {
- wfd_debug (" Level: 3.1\n");
- } else if(msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_3_2) {
- wfd_debug (" Level: 3.2\n");
- } else if(msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_4) {
- wfd_debug (" Level: 4\n");
- } else if(msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_4_1) {
- wfd_debug (" Level: 4.1\n");
- } else if(msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_4_2) {
- wfd_debug (" Level: 4.2\n");
- }
- wfd_debug (" Latency: %d\n", msg->video_formats->list->H264_codec.misc_params.latency);
- wfd_debug (" min_slice_size: %x\n", msg->video_formats->list->H264_codec.misc_params.min_slice_size);
- wfd_debug (" slice_enc_params: %x\n", msg->video_formats->list->H264_codec.misc_params.slice_enc_params);
- wfd_debug (" frame_rate_control_support: %x\n", msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support);
- if(msg->video_formats->list->H264_codec.max_hres) {
- wfd_debug (" Max Width: %04d\n", msg->video_formats->list->H264_codec.max_hres);
- }
- if(msg->video_formats->list->H264_codec.max_vres) {
- wfd_debug (" Max Height: %04d\n", msg->video_formats->list->H264_codec.max_vres);
- }
- }
- }
-
- if(msg->video_3d_formats) {
- wfd_debug ("wfd_3d_formats");
- wfd_debug ("\r\n");
- }
-
- if(msg->content_protection) {
- wfd_debug ("wfd_content_protection");
- wfd_debug ("\r\n");
- }
-
- if(msg->display_edid) {
- wfd_debug ("wfd_display_edid");
- wfd_debug ("\r\n");
- }
-
- if(msg->coupled_sink) {
- wfd_debug ("wfd_coupled_sink");
- wfd_debug ("\r\n");
- }
-
- if(msg->trigger_method) {
- wfd_debug (" Trigger type: %s\n", msg->trigger_method->wfd_trigger_method);
- }
-
- if(msg->presentation_url) {
- wfd_debug ("wfd_presentation_URL");
- wfd_debug ("\r\n");
- }
-
- if(msg->client_rtp_ports) {
- wfd_debug(" Client RTP Ports : \n");
- if(msg->client_rtp_ports->profile) {
- wfd_debug ("%s\n", msg->client_rtp_ports->profile);
- wfd_debug (" %d\n", msg->client_rtp_ports->rtp_port0);
- wfd_debug (" %d\n", msg->client_rtp_ports->rtp_port1);
- wfd_debug (" %s\n", msg->client_rtp_ports->mode);
- }
- wfd_debug("\r\n");
- }
-
- if(msg->route) {
- wfd_debug ("wfd_route");
- wfd_debug ("\r\n");
- }
-
- if(msg->I2C) {
- wfd_debug ("wfd_I2C");
- wfd_debug ("\r\n");
- }
-
- if(msg->av_format_change_timing) {
- wfd_debug ("wfd_av_format_change_timing");
- wfd_debug ("\r\n");
- }
-
- if(msg->preferred_display_mode) {
- wfd_debug ("wfd_preferred_display_mode");
- wfd_debug ("\r\n");
- }
-
- if(msg->uibc_capability) {
- wfd_debug ("wfd_uibc_capability \r\n");
- wfd_debug ("input category list:");
- if(msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_GENERIC)
- wfd_debug ("GENERIC");
- if(msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_HIDC)
- wfd_debug ("HIDC");
- if(!msg->uibc_capability->input_category_list.input_cat)
- wfd_debug ("none");
- if(msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_GENERIC) {
- wfd_debug ("generic cap list: ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_KEYBOARD)
- wfd_debug("keyboard ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MOUSE)
- wfd_debug("mouse ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_SINGLETOUCH)
- wfd_debug("single-touch ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MULTITOUCH)
- wfd_debug("multi-touch ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_JOYSTICK)
- wfd_debug("joystick ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_CAMERA)
- wfd_debug("camera ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_GESTURE)
- wfd_debug("gesture ");
- if(msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_REMOTECONTROL)
- wfd_debug("remote control ");
- if(!msg->uibc_capability->generic_cap_list.inp_type)
- wfd_debug("none ");
- }
- if(msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_HIDC) {
- wfd_debug ("hidc cap list:");
- if(msg->uibc_capability->hidc_cap_list.cap_count) {
- detailed_cap *temp_cap = msg->uibc_capability->hidc_cap_list.next;
- while (temp_cap) {
- if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_KEYBOARD) {
- wfd_debug("keyboard ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_MOUSE) {
- wfd_debug("mouse ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_SINGLETOUCH) {
- wfd_debug("single-touch ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_MULTITOUCH) {
- wfd_debug("multi-touch ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_JOYSTICK) {
- wfd_debug("joystick ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_CAMERA) {
- wfd_debug("camera ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_GESTURE) {
- wfd_debug("gesture ");
- } else if(temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_REMOTECONTROL) {
- wfd_debug("remote control ");
- } else if(!temp_cap->p.inp_type) {
- wfd_debug("none ");
- }
- if(temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_INFRARED) {
- wfd_debug("infrared");
- } else if(temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_USB) {
- wfd_debug("usb");
- } else if(temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_BT) {
- wfd_debug("bluetooth");
- } else if(temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_WIFI) {
- wfd_debug("Wi-Fi");
- } else if(temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_ZIGBEE) {
- wfd_debug("Zigbee");
- } else if(temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_NOSP) {
- wfd_debug("No-SP");
- } else if(!temp_cap->p.inp_path) {
- wfd_debug("none");
- }
- temp_cap = temp_cap->next;
- }
- }
- }
- if(msg->uibc_capability->tcp_port)
- wfd_debug("tcp port:%u", msg->uibc_capability->tcp_port);
- if(!msg->uibc_capability->tcp_port)
- wfd_debug ("tcp port: none");
- wfd_debug ("\r\n");
- }
-
- if(msg->uibc_setting) {
- wfd_debug ("wfd_uibc_setting: ");
- if(msg->uibc_setting->uibc_setting) {
- wfd_debug("true");
- } else wfd_debug("false");
- wfd_debug ("\r\n");
- }
-
- if(msg->standby_resume_capability) {
- wfd_debug ("wfd_standby_resume_capability");
- wfd_debug ("\r\n");
- }
-
- if(msg->standby) {
- wfd_debug ("wfd_standby");
- wfd_debug ("\r\n");
- }
-
- if(msg->connector_type) {
- wfd_debug ("wfd_connector_type");
- wfd_debug ("\r\n");
- }
-
- if(msg->idr_request) {
- wfd_debug ("wfd_idr_request");
- wfd_debug ("\r\n");
- }
-
- wfd_debug("===============================================\n");
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ wfd_debug("===========WFD Message dump=========");
+
+ if (msg->audio_codecs) {
+ guint i = 0;
+ wfd_debug("Audio supported formats : ");
+ for (; i < msg->audio_codecs->count; i++) {
+ wfd_debug("Codec: %s", msg->audio_codecs->list[i].audio_format);
+ if (!strcmp(msg->audio_codecs->list[i].audio_format, STRING_WFD_LPCM)) {
+ if (msg->audio_codecs->list[i].modes & WFD_FREQ_44100)
+ wfd_debug(" Freq: %d", 44100);
+ if (msg->audio_codecs->list[i].modes & WFD_FREQ_48000)
+ wfd_debug(" Freq: %d", 48000);
+ wfd_debug(" Channels: %d", 2);
+ }
+ if (!strcmp(msg->audio_codecs->list[i].audio_format, STRING_WFD_AAC)) {
+ wfd_debug(" Freq: %d", 48000);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_2)
+ wfd_debug(" Channels: %d", 2);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_4)
+ wfd_debug(" Channels: %d", 4);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_6)
+ wfd_debug(" Channels: %d", 6);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_8)
+ wfd_debug(" Channels: %d", 8);
+ }
+ if (!strcmp(msg->audio_codecs->list[i].audio_format, STRING_WFD_AC3)) {
+ wfd_debug(" Freq: %d", 48000);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_2)
+ wfd_debug(" Channels: %d", 2);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_4)
+ wfd_debug(" Channels: %d", 4);
+ if (msg->audio_codecs->list[i].modes & WFD_CHANNEL_6)
+ wfd_debug(" Channels: %d", 6);
+ }
+ wfd_debug(" Bitwidth: %d", 16);
+ wfd_debug(" Latency: %d", msg->audio_codecs->list[i].latency);
+ }
+ }
+
+
+ if (msg->video_formats) {
+ wfd_debug("Video supported formats : ");
+ if (msg->video_formats->list) {
+ wfd_debug("Codec: H264");
+ guint nativeindex = 0;
+ if ((msg->video_formats->list->native & 0x7) == WFD_VIDEO_CEA_RESOLUTION) {
+ wfd_debug(" Native type: CEA");
+ } else if ((msg->video_formats->list->native & 0x7) == WFD_VIDEO_VESA_RESOLUTION) {
+ wfd_debug(" Native type: VESA");
+ } else if ((msg->video_formats->list->native & 0x7) == WFD_VIDEO_HH_RESOLUTION) {
+ wfd_debug(" Native type: HH");
+ }
+ nativeindex = msg->video_formats->list->native >> 3;
+ wfd_debug(" Resolution: %d", (1 << nativeindex));
+
+ if (msg->video_formats->list->H264_codec.profile & WFD_H264_BASE_PROFILE) {
+ wfd_debug(" Profile: BASE");
+ } else if (msg->video_formats->list->H264_codec.profile & WFD_H264_HIGH_PROFILE) {
+ wfd_debug(" Profile: HIGH");
+ }
+ if (msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_3_1) {
+ wfd_debug(" Level: 3.1");
+ } else if (msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_3_2) {
+ wfd_debug(" Level: 3.2");
+ } else if (msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_4) {
+ wfd_debug(" Level: 4");
+ } else if (msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_4_1) {
+ wfd_debug(" Level: 4.1");
+ } else if (msg->video_formats->list->H264_codec.level & WFD_H264_LEVEL_4_2) {
+ wfd_debug(" Level: 4.2");
+ }
+ wfd_debug(" Latency: %d", msg->video_formats->list->H264_codec.misc_params.latency);
+ wfd_debug(" min_slice_size: %x", msg->video_formats->list->H264_codec.misc_params.min_slice_size);
+ wfd_debug(" slice_enc_params: %x", msg->video_formats->list->H264_codec.misc_params.slice_enc_params);
+ wfd_debug(" frame_rate_control_support: %x", msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support);
+ if (msg->video_formats->list->H264_codec.max_hres) {
+ wfd_debug(" Max Width: %04d", msg->video_formats->list->H264_codec.max_hres);
+ }
+ if (msg->video_formats->list->H264_codec.max_vres) {
+ wfd_debug(" Max Height: %04d", msg->video_formats->list->H264_codec.max_vres);
+ }
+ }
+ }
+
+ if (msg->video_3d_formats) {
+ wfd_debug("wfd_3d_formats");
+ }
+
+ if (msg->content_protection) {
+ wfd_debug(STRING_WFD_CONTENT_PROTECTION);
+ }
+
+ if (msg->display_edid) {
+ wfd_debug(STRING_WFD_DISPLAY_EDID);
+ }
+
+ if (msg->coupled_sink) {
+ wfd_debug(STRING_WFD_COUPLED_SINK);
+ }
+
+ if (msg->trigger_method) {
+ wfd_debug(" Trigger type: %s", msg->trigger_method->wfd_trigger_method);
+ }
+
+ if (msg->presentation_url) {
+ wfd_debug(STRING_WFD_PRESENTATION_URL);
+ }
+
+ if (msg->client_rtp_ports) {
+ wfd_debug(" Client RTP Ports : ");
+ if (msg->client_rtp_ports->profile) {
+ wfd_debug("%s", msg->client_rtp_ports->profile);
+ wfd_debug(" %d", msg->client_rtp_ports->rtp_port0);
+ wfd_debug(" %d", msg->client_rtp_ports->rtp_port1);
+ wfd_debug(" %s", msg->client_rtp_ports->mode);
+ }
+ }
+
+ if (msg->route) {
+ wfd_debug(STRING_WFD_ROUTE);
+ }
+
+ if (msg->I2C) {
+ wfd_debug(STRING_WFD_I2C);
+ }
+
+ if (msg->av_format_change_timing) {
+ wfd_debug(STRING_WFD_AV_FORMAT_CHANGE_TIMING);
+ }
+
+ if (msg->preferred_display_mode) {
+ wfd_debug(STRING_WFD_PREFERRED_DISPLAY_MODE);
+ }
+
+ if (msg->uibc_capability) {
+ wfd_debug("wfd_uibc_capability \r");
+ wfd_debug("input category list:");
+ if (msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_GENERIC)
+ wfd_debug(STRING_WFD_GENERIC);
+ if (msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_HIDC)
+ wfd_debug(STRING_WFD_HIDC);
+ if (!msg->uibc_capability->input_category_list.input_cat)
+ wfd_debug(STRING_WFD_NONE);
+ if (msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_GENERIC) {
+ wfd_debug("generic cap list: ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_KEYBOARD)
+ wfd_debug("keyboard ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MOUSE)
+ wfd_debug("mouse ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_SINGLETOUCH)
+ wfd_debug("single-touch ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_MULTITOUCH)
+ wfd_debug("multi-touch ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_JOYSTICK)
+ wfd_debug("joystick ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_CAMERA)
+ wfd_debug("camera ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_GESTURE)
+ wfd_debug("gesture ");
+ if (msg->uibc_capability->generic_cap_list.inp_type & WFD_UIBC_INPUT_TYPE_REMOTECONTROL)
+ wfd_debug("remote control ");
+ if (!msg->uibc_capability->generic_cap_list.inp_type)
+ wfd_debug("none ");
+ }
+ if (msg->uibc_capability->input_category_list.input_cat & WFD_UIBC_INPUT_CAT_HIDC) {
+ wfd_debug("hidc cap list:");
+ if (msg->uibc_capability->hidc_cap_list.cap_count) {
+ detailed_cap *temp_cap = msg->uibc_capability->hidc_cap_list.next;
+ while (temp_cap) {
+ if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_KEYBOARD) {
+ wfd_debug("keyboard ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_MOUSE) {
+ wfd_debug("mouse ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_SINGLETOUCH) {
+ wfd_debug("single-touch ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_MULTITOUCH) {
+ wfd_debug("multi-touch ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_JOYSTICK) {
+ wfd_debug("joystick ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_CAMERA) {
+ wfd_debug("camera ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_GESTURE) {
+ wfd_debug("gesture ");
+ } else if (temp_cap->p.inp_type & WFD_UIBC_INPUT_TYPE_REMOTECONTROL) {
+ wfd_debug("remote control ");
+ } else if (!temp_cap->p.inp_type) {
+ wfd_debug("none ");
+ }
+ if (temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_INFRARED) {
+ wfd_debug(STRING_WFD_INFRARED);
+ } else if (temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_USB) {
+ wfd_debug(STRING_WFD_USB);
+ } else if (temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_BT) {
+ wfd_debug(STRING_WFD_BT);
+ } else if (temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_WIFI) {
+ wfd_debug(STRING_WFD_WIFI);
+ } else if (temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_ZIGBEE) {
+ wfd_debug(STRING_WFD_ZIGBEE);
+ } else if (temp_cap->p.inp_path & WFD_UIBC_INPUT_PATH_NOSP) {
+ wfd_debug(STRING_WFD_NO_SP);
+ } else if (!temp_cap->p.inp_path) {
+ wfd_debug(STRING_WFD_NONE);
+ }
+ temp_cap = temp_cap->next;
+ }
+ }
+ }
+ if (msg->uibc_capability->tcp_port)
+ wfd_debug("tcp port:%u", msg->uibc_capability->tcp_port);
+ if (!msg->uibc_capability->tcp_port)
+ wfd_debug("tcp port: none");
+ }
+
+ if (msg->uibc_setting) {
+ wfd_debug("wfd_uibc_setting: ");
+ if (msg->uibc_setting->uibc_setting) {
+ wfd_debug("true");
+ } else wfd_debug("false");
+ }
+
+ if (msg->standby_resume_capability) {
+ wfd_debug(STRING_WFD_STANDBY_RESUME_CAPABILITY);
+ }
+
+ if (msg->standby) {
+ wfd_debug(STRING_WFD_STANDBY);
+ }
+
+ if (msg->connector_type) {
+ wfd_debug(STRING_WFD_CONNECTOR_TYPE);
+ }
+
+ if (msg->idr_request) {
+ wfd_debug(STRING_WFD_IDR_REQUEST);
+ }
+
+ wfd_debug("===============================================");
+ return WFD_OK;
}
WFDResult wfdconfig_set_supported_audio_format(WFDMessage *msg, WFDAudioFormats aCodec, guint aFreq, guint aChanels,
- guint aBitwidth, guint32 aLatency)
+ guint aBitwidth, guint32 aLatency)
{
- guint temp = aCodec;
- guint i = 0;
- guint pcm = 0, aac = 0, ac3 = 0;
-
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->audio_codecs)
- msg->audio_codecs = g_new0 (WFDAudioCodeclist, 1);
-
- if(aCodec != WFD_AUDIO_UNKNOWN) {
- while(temp) {
- msg->audio_codecs->count++;
- temp >>= 1;
- }
- msg->audio_codecs->list = g_new0 (WFDAudioCodec, msg->audio_codecs->count);
- for(; i<msg->audio_codecs->count; i++) {
- if((aCodec & WFD_AUDIO_LPCM) && (!pcm)) {
- msg->audio_codecs->list[i].audio_format = g_strdup("LPCM");
- msg->audio_codecs->list[i].modes = aFreq;
- msg->audio_codecs->list[i].latency = aLatency;
- pcm = 1;
- } else if((aCodec & WFD_AUDIO_AAC) && (!aac)) {
- msg->audio_codecs->list[i].audio_format = g_strdup("AAC");
- msg->audio_codecs->list[i].modes = aChanels;
- msg->audio_codecs->list[i].latency = aLatency;
- aac = 1;
- } else if((aCodec & WFD_AUDIO_AC3) && (!ac3)) {
- msg->audio_codecs->list[i].audio_format = g_strdup("AC3");
- msg->audio_codecs->list[i].modes = aChanels;
- msg->audio_codecs->list[i].latency = aLatency;
- ac3 = 1;
- }
- }
- }
- return WFD_OK;
+ guint temp = aCodec;
+ guint i = 0;
+ guint pcm = 0, aac = 0, ac3 = 0;
+
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->audio_codecs)
+ msg->audio_codecs = g_new0(WFDAudioCodeclist, 1);
+
+ if (aCodec != WFD_AUDIO_UNKNOWN) {
+ while (temp) {
+ msg->audio_codecs->count++;
+ temp >>= 1;
+ }
+ msg->audio_codecs->list = g_new0(WFDAudioCodec, msg->audio_codecs->count);
+ for (; i < msg->audio_codecs->count; i++) {
+ if ((aCodec & WFD_AUDIO_LPCM) && (!pcm)) {
+ msg->audio_codecs->list[i].audio_format = g_strdup(STRING_WFD_LPCM);
+ msg->audio_codecs->list[i].modes = aFreq;
+ msg->audio_codecs->list[i].latency = aLatency;
+ pcm = 1;
+ } else if ((aCodec & WFD_AUDIO_AAC) && (!aac)) {
+ msg->audio_codecs->list[i].audio_format = g_strdup(STRING_WFD_AAC);
+ msg->audio_codecs->list[i].modes = aChanels;
+ msg->audio_codecs->list[i].latency = aLatency;
+ aac = 1;
+ } else if ((aCodec & WFD_AUDIO_AC3) && (!ac3)) {
+ msg->audio_codecs->list[i].audio_format = g_strdup(STRING_WFD_AC3);
+ msg->audio_codecs->list[i].modes = aChanels;
+ msg->audio_codecs->list[i].latency = aLatency;
+ ac3 = 1;
+ }
+ }
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_prefered_audio_format(WFDMessage *msg, WFDAudioFormats aCodec, WFDAudioFreq aFreq, WFDAudioChannels aChanels,
- guint aBitwidth, guint32 aLatency)
+ guint aBitwidth, guint32 aLatency)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->audio_codecs)
- msg->audio_codecs = g_new0 (WFDAudioCodeclist, 1);
-
- msg->audio_codecs->list = g_new0 (WFDAudioCodec, 1);
- msg->audio_codecs->count = 1;
- if(aCodec == WFD_AUDIO_LPCM) {
- msg->audio_codecs->list->audio_format = g_strdup("LPCM");
- msg->audio_codecs->list->modes = aFreq;
- msg->audio_codecs->list->latency = aLatency;
- } else if(aCodec == WFD_AUDIO_AAC) {
- msg->audio_codecs->list->audio_format = g_strdup("AAC");
- msg->audio_codecs->list->modes = aChanels;
- msg->audio_codecs->list->latency = aLatency;
- } else if(aCodec == WFD_AUDIO_AC3) {
- msg->audio_codecs->list->audio_format = g_strdup("AC3");
- msg->audio_codecs->list->modes = aChanels;
- msg->audio_codecs->list->latency = aLatency;
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->audio_codecs)
+ msg->audio_codecs = g_new0(WFDAudioCodeclist, 1);
+
+ msg->audio_codecs->list = g_new0(WFDAudioCodec, 1);
+ msg->audio_codecs->count = 1;
+ if (aCodec == WFD_AUDIO_LPCM) {
+ msg->audio_codecs->list->audio_format = g_strdup(STRING_WFD_LPCM);
+ msg->audio_codecs->list->modes = aFreq;
+ msg->audio_codecs->list->latency = aLatency;
+ } else if (aCodec == WFD_AUDIO_AAC) {
+ msg->audio_codecs->list->audio_format = g_strdup(STRING_WFD_AAC);
+ msg->audio_codecs->list->modes = aChanels;
+ msg->audio_codecs->list->latency = aLatency;
+ } else if (aCodec == WFD_AUDIO_AC3) {
+ msg->audio_codecs->list->audio_format = g_strdup(STRING_WFD_AC3);
+ msg->audio_codecs->list->modes = aChanels;
+ msg->audio_codecs->list->latency = aLatency;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_get_supported_audio_format(WFDMessage *msg, guint *aCodec, guint *aFreq, guint *aChanels,
- guint *aBitwidth, guint32 *aLatency)
+ guint *aBitwidth, guint32 *aLatency)
{
- guint i = 0;
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- g_return_val_if_fail (msg->audio_codecs != NULL, WFD_EINVAL);
-
- for(; i<msg->audio_codecs->count; i++) {
- if(!g_strcmp0(msg->audio_codecs->list[i].audio_format,"LPCM")) {
- *aCodec |= WFD_AUDIO_LPCM;
- *aFreq |= msg->audio_codecs->list[i].modes;
- *aChanels |= WFD_CHANNEL_2;
- *aBitwidth = 16;
- *aLatency = msg->audio_codecs->list[i].latency;
- } else if(!g_strcmp0(msg->audio_codecs->list[i].audio_format,"AAC")) {
- *aCodec |= WFD_AUDIO_AAC;
- *aFreq |= WFD_FREQ_48000;
- *aChanels |= msg->audio_codecs->list[i].modes;
- *aBitwidth = 16;
- *aLatency = msg->audio_codecs->list[i].latency;
- } else if(!g_strcmp0(msg->audio_codecs->list[i].audio_format,"AC3")) {
- *aCodec |= WFD_AUDIO_AC3;
- *aFreq |= WFD_FREQ_48000;
- *aChanels |= msg->audio_codecs->list[i].modes;
- *aBitwidth = 16;
- *aLatency = msg->audio_codecs->list[i].latency;
- }
- }
- return WFD_OK;
+ guint i = 0;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg->audio_codecs != NULL, WFD_EINVAL);
+
+ for (; i < msg->audio_codecs->count; i++) {
+ if (!g_strcmp0(msg->audio_codecs->list[i].audio_format, STRING_WFD_LPCM)) {
+ *aCodec |= WFD_AUDIO_LPCM;
+ *aFreq |= msg->audio_codecs->list[i].modes;
+ *aChanels |= WFD_CHANNEL_2;
+ *aBitwidth = 16;
+ *aLatency = msg->audio_codecs->list[i].latency;
+ } else if (!g_strcmp0(msg->audio_codecs->list[i].audio_format, STRING_WFD_AAC)) {
+ *aCodec |= WFD_AUDIO_AAC;
+ *aFreq |= WFD_FREQ_48000;
+ *aChanels |= msg->audio_codecs->list[i].modes;
+ *aBitwidth = 16;
+ *aLatency = msg->audio_codecs->list[i].latency;
+ } else if (!g_strcmp0(msg->audio_codecs->list[i].audio_format, STRING_WFD_AC3)) {
+ *aCodec |= WFD_AUDIO_AC3;
+ *aFreq |= WFD_FREQ_48000;
+ *aChanels |= msg->audio_codecs->list[i].modes;
+ *aBitwidth = 16;
+ *aLatency = msg->audio_codecs->list[i].latency;
+ }
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_get_prefered_audio_format(WFDMessage *msg, WFDAudioFormats *aCodec, WFDAudioFreq *aFreq, WFDAudioChannels *aChanels,
- guint *aBitwidth, guint32 *aLatency)
+ guint *aBitwidth, guint32 *aLatency)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!g_strcmp0(msg->audio_codecs->list->audio_format,"LPCM")) {
- *aCodec = WFD_AUDIO_LPCM;
- *aFreq = msg->audio_codecs->list->modes;
- *aChanels = WFD_CHANNEL_2;
- *aBitwidth = 16;
- *aLatency = msg->audio_codecs->list->latency;
- } else if(!g_strcmp0(msg->audio_codecs->list->audio_format,"AAC")) {
- *aCodec = WFD_AUDIO_AAC;
- *aFreq = WFD_FREQ_48000;
- *aChanels = msg->audio_codecs->list->modes;
- *aBitwidth = 16;
- *aLatency = msg->audio_codecs->list->latency;
- } else if(!g_strcmp0(msg->audio_codecs->list->audio_format,"AC3")) {
- *aCodec = WFD_AUDIO_AC3;
- *aFreq = WFD_FREQ_48000;
- *aChanels = msg->audio_codecs->list->modes;
- *aBitwidth = 16;
- *aLatency = msg->audio_codecs->list->latency;
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!g_strcmp0(msg->audio_codecs->list->audio_format, STRING_WFD_LPCM)) {
+ *aCodec = WFD_AUDIO_LPCM;
+ *aFreq = msg->audio_codecs->list->modes;
+ *aChanels = WFD_CHANNEL_2;
+ *aBitwidth = 16;
+ *aLatency = msg->audio_codecs->list->latency;
+ } else if (!g_strcmp0(msg->audio_codecs->list->audio_format, STRING_WFD_AAC)) {
+ *aCodec = WFD_AUDIO_AAC;
+ *aFreq = WFD_FREQ_48000;
+ *aChanels = msg->audio_codecs->list->modes;
+ *aBitwidth = 16;
+ *aLatency = msg->audio_codecs->list->latency;
+ } else if (!g_strcmp0(msg->audio_codecs->list->audio_format, STRING_WFD_AC3)) {
+ *aCodec = WFD_AUDIO_AC3;
+ *aFreq = WFD_FREQ_48000;
+ *aChanels = msg->audio_codecs->list->modes;
+ *aBitwidth = 16;
+ *aLatency = msg->audio_codecs->list->latency;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_supported_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
- WFDVideoNativeResolution vNative, guint64 vNativeResolution,
- guint64 vCEAResolution, guint64 vVESAResolution, guint64 vHHResolution,
- guint vProfile, guint vLevel, guint32 vLatency, guint32 vMaxHeight,
- guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control)
+ WFDVideoNativeResolution vNative, guint64 vNativeResolution,
+ guint64 vCEAResolution, guint64 vVESAResolution, guint64 vHHResolution,
+ guint vProfile, guint vLevel, guint32 vLatency, guint32 vMaxHeight,
+ guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control)
{
- guint nativeindex = 0;
- guint64 temp = vNativeResolution;
-
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->video_formats)
- msg->video_formats = g_new0 (WFDVideoCodeclist, 1);
-
- if(vCodec != WFD_VIDEO_UNKNOWN) {
- msg->video_formats->list = g_new0 (WFDVideoCodec, 1);
- while(temp) {
- nativeindex++;
- temp >>= 1;
- }
-
- msg->video_formats->list->native = nativeindex-1;
- msg->video_formats->list->native <<= 3;
-
- if(vNative == WFD_VIDEO_VESA_RESOLUTION)
- msg->video_formats->list->native |= 1;
- else if(vNative == WFD_VIDEO_HH_RESOLUTION)
- msg->video_formats->list->native |= 2;
-
- msg->video_formats->list->preferred_display_mode_supported = 1;
- msg->video_formats->list->H264_codec.profile = vProfile;
- msg->video_formats->list->H264_codec.level = vLevel;
- msg->video_formats->list->H264_codec.max_hres = vMaxWidth;
- msg->video_formats->list->H264_codec.max_vres = vMaxHeight;
- msg->video_formats->list->H264_codec.misc_params.CEA_Support = vCEAResolution;
- msg->video_formats->list->H264_codec.misc_params.VESA_Support = vVESAResolution;
- msg->video_formats->list->H264_codec.misc_params.HH_Support = vHHResolution;
- msg->video_formats->list->H264_codec.misc_params.latency = vLatency;
- msg->video_formats->list->H264_codec.misc_params.min_slice_size = min_slice_size;
- msg->video_formats->list->H264_codec.misc_params.slice_enc_params = slice_enc_params;
- msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support = frame_rate_control;
- }
- return WFD_OK;
+ guint nativeindex = 0;
+ guint64 temp = vNativeResolution;
+
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->video_formats)
+ msg->video_formats = g_new0(WFDVideoCodeclist, 1);
+
+ if (vCodec != WFD_VIDEO_UNKNOWN) {
+ msg->video_formats->list = g_new0(WFDVideoCodec, 1);
+ while (temp) {
+ nativeindex++;
+ temp >>= 1;
+ }
+
+ msg->video_formats->list->native = nativeindex - 1;
+ msg->video_formats->list->native <<= 3;
+
+ if (vNative == WFD_VIDEO_VESA_RESOLUTION)
+ msg->video_formats->list->native |= 1;
+ else if (vNative == WFD_VIDEO_HH_RESOLUTION)
+ msg->video_formats->list->native |= 2;
+
+ msg->video_formats->list->preferred_display_mode_supported = 1;
+ msg->video_formats->list->H264_codec.profile = vProfile;
+ msg->video_formats->list->H264_codec.level = vLevel;
+ msg->video_formats->list->H264_codec.max_hres = vMaxWidth;
+ msg->video_formats->list->H264_codec.max_vres = vMaxHeight;
+ msg->video_formats->list->H264_codec.misc_params.CEA_Support = vCEAResolution;
+ msg->video_formats->list->H264_codec.misc_params.VESA_Support = vVESAResolution;
+ msg->video_formats->list->H264_codec.misc_params.HH_Support = vHHResolution;
+ msg->video_formats->list->H264_codec.misc_params.latency = vLatency;
+ msg->video_formats->list->H264_codec.misc_params.min_slice_size = min_slice_size;
+ msg->video_formats->list->H264_codec.misc_params.slice_enc_params = slice_enc_params;
+ msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support = frame_rate_control;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_prefered_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
- WFDVideoNativeResolution vNative, guint64 vNativeResolution,
- WFDVideoCEAResolution vCEAResolution, WFDVideoVESAResolution vVESAResolution,
- WFDVideoHHResolution vHHResolution, WFDVideoH264Profile vProfile,
- WFDVideoH264Level vLevel, guint32 vLatency, guint32 vMaxHeight,
- guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control)
+ WFDVideoNativeResolution vNative, guint64 vNativeResolution,
+ WFDVideoCEAResolution vCEAResolution, WFDVideoVESAResolution vVESAResolution,
+ WFDVideoHHResolution vHHResolution, WFDVideoH264Profile vProfile,
+ WFDVideoH264Level vLevel, guint32 vLatency, guint32 vMaxHeight,
+ guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control)
{
- guint nativeindex = 0;
- guint64 temp = vNativeResolution;
-
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->video_formats)
- msg->video_formats = g_new0 (WFDVideoCodeclist, 1);
- msg->video_formats->list = g_new0 (WFDVideoCodec, 1);
-
- while(temp) {
- nativeindex++;
- temp >>= 1;
- }
-
- if(nativeindex) msg->video_formats->list->native = nativeindex-1;
- msg->video_formats->list->native <<= 3;
-
- if(vNative == WFD_VIDEO_VESA_RESOLUTION)
- msg->video_formats->list->native |= 1;
- else if(vNative == WFD_VIDEO_HH_RESOLUTION)
- msg->video_formats->list->native |= 2;
-
- msg->video_formats->list->preferred_display_mode_supported = 0;
- msg->video_formats->list->H264_codec.profile = vProfile;
- msg->video_formats->list->H264_codec.level = vLevel;
- msg->video_formats->list->H264_codec.max_hres = vMaxWidth;
- msg->video_formats->list->H264_codec.max_vres = vMaxHeight;
- msg->video_formats->list->H264_codec.misc_params.CEA_Support = vCEAResolution;
- msg->video_formats->list->H264_codec.misc_params.VESA_Support = vVESAResolution;
- msg->video_formats->list->H264_codec.misc_params.HH_Support = vHHResolution;
- msg->video_formats->list->H264_codec.misc_params.latency = vLatency;
- msg->video_formats->list->H264_codec.misc_params.min_slice_size = min_slice_size;
- msg->video_formats->list->H264_codec.misc_params.slice_enc_params = slice_enc_params;
- msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support = frame_rate_control;
- return WFD_OK;
+ guint nativeindex = 0;
+ guint64 temp = vNativeResolution;
+
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->video_formats)
+ msg->video_formats = g_new0(WFDVideoCodeclist, 1);
+ msg->video_formats->list = g_new0(WFDVideoCodec, 1);
+
+ while (temp) {
+ nativeindex++;
+ temp >>= 1;
+ }
+
+ if (nativeindex) msg->video_formats->list->native = nativeindex - 1;
+ msg->video_formats->list->native <<= 3;
+
+ if (vNative == WFD_VIDEO_VESA_RESOLUTION)
+ msg->video_formats->list->native |= 1;
+ else if (vNative == WFD_VIDEO_HH_RESOLUTION)
+ msg->video_formats->list->native |= 2;
+
+ msg->video_formats->list->preferred_display_mode_supported = 0;
+ msg->video_formats->list->H264_codec.profile = vProfile;
+ msg->video_formats->list->H264_codec.level = vLevel;
+ msg->video_formats->list->H264_codec.max_hres = vMaxWidth;
+ msg->video_formats->list->H264_codec.max_vres = vMaxHeight;
+ msg->video_formats->list->H264_codec.misc_params.CEA_Support = vCEAResolution;
+ msg->video_formats->list->H264_codec.misc_params.VESA_Support = vVESAResolution;
+ msg->video_formats->list->H264_codec.misc_params.HH_Support = vHHResolution;
+ msg->video_formats->list->H264_codec.misc_params.latency = vLatency;
+ msg->video_formats->list->H264_codec.misc_params.min_slice_size = min_slice_size;
+ msg->video_formats->list->H264_codec.misc_params.slice_enc_params = slice_enc_params;
+ msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support = frame_rate_control;
+ return WFD_OK;
}
WFDResult wfdconfig_get_supported_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
- WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
- guint64 *vCEAResolution, guint64 *vVESAResolution, guint64 *vHHResolution,
- guint *vProfile, guint *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
- guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control)
+ WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
+ guint64 *vCEAResolution, guint64 *vVESAResolution, guint64 *vHHResolution,
+ guint *vProfile, guint *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
+ guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control)
{
- guint nativeindex = 0;
-
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- g_return_val_if_fail (msg->video_formats != NULL, WFD_EINVAL);
- g_return_val_if_fail (msg->video_formats->list != NULL, WFD_EINVAL);
-
- *vCodec = WFD_VIDEO_H264;
- *vNative = msg->video_formats->list->native & 0x7;
- nativeindex = msg->video_formats->list->native >> 3;
- *vNativeResolution = (guint64)1 << nativeindex;
- *vProfile = msg->video_formats->list->H264_codec.profile;
- *vLevel = msg->video_formats->list->H264_codec.level;
- *vMaxWidth = msg->video_formats->list->H264_codec.max_hres;
- *vMaxHeight = msg->video_formats->list->H264_codec.max_vres;
- *vCEAResolution = msg->video_formats->list->H264_codec.misc_params.CEA_Support;
- *vVESAResolution = msg->video_formats->list->H264_codec.misc_params.VESA_Support;
- *vHHResolution = msg->video_formats->list->H264_codec.misc_params.HH_Support;
- *vLatency = msg->video_formats->list->H264_codec.misc_params.latency;
- *min_slice_size = msg->video_formats->list->H264_codec.misc_params.min_slice_size;
- *slice_enc_params = msg->video_formats->list->H264_codec.misc_params.slice_enc_params;
- *frame_rate_control = msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support;
- return WFD_OK;
+ guint nativeindex = 0;
+
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg->video_formats != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg->video_formats->list != NULL, WFD_EINVAL);
+
+ *vCodec = WFD_VIDEO_H264;
+ *vNative = msg->video_formats->list->native & 0x7;
+ nativeindex = msg->video_formats->list->native >> 3;
+ *vNativeResolution = (guint64)1 << nativeindex;
+ *vProfile = msg->video_formats->list->H264_codec.profile;
+ *vLevel = msg->video_formats->list->H264_codec.level;
+ *vMaxWidth = msg->video_formats->list->H264_codec.max_hres;
+ *vMaxHeight = msg->video_formats->list->H264_codec.max_vres;
+ *vCEAResolution = msg->video_formats->list->H264_codec.misc_params.CEA_Support;
+ *vVESAResolution = msg->video_formats->list->H264_codec.misc_params.VESA_Support;
+ *vHHResolution = msg->video_formats->list->H264_codec.misc_params.HH_Support;
+ *vLatency = msg->video_formats->list->H264_codec.misc_params.latency;
+ *min_slice_size = msg->video_formats->list->H264_codec.misc_params.min_slice_size;
+ *slice_enc_params = msg->video_formats->list->H264_codec.misc_params.slice_enc_params;
+ *frame_rate_control = msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support;
+ return WFD_OK;
}
WFDResult wfdconfig_get_prefered_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
- WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
- WFDVideoCEAResolution *vCEAResolution, WFDVideoVESAResolution *vVESAResolution,
- WFDVideoHHResolution *vHHResolution, WFDVideoH264Profile *vProfile,
- WFDVideoH264Level *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
- guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control)
+ WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
+ WFDVideoCEAResolution *vCEAResolution, WFDVideoVESAResolution *vVESAResolution,
+ WFDVideoHHResolution *vHHResolution, WFDVideoH264Profile *vProfile,
+ WFDVideoH264Level *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
+ guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control)
{
- guint nativeindex = 0;
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- g_return_val_if_fail (msg->video_formats != NULL, WFD_EINVAL);
- g_return_val_if_fail (msg->video_formats->list != NULL, WFD_EINVAL);
-
- *vCodec = WFD_VIDEO_H264;
- *vNative = msg->video_formats->list->native & 0x7;
- nativeindex = msg->video_formats->list->native >> 3;
- *vNativeResolution = (guint64)1 << nativeindex;
- *vProfile = msg->video_formats->list->H264_codec.profile;
- *vLevel = msg->video_formats->list->H264_codec.level;
- *vMaxWidth = msg->video_formats->list->H264_codec.max_hres;
- *vMaxHeight = msg->video_formats->list->H264_codec.max_vres;
- *vCEAResolution = msg->video_formats->list->H264_codec.misc_params.CEA_Support;
- *vVESAResolution = msg->video_formats->list->H264_codec.misc_params.VESA_Support;
- *vHHResolution = msg->video_formats->list->H264_codec.misc_params.HH_Support;
- *vLatency = msg->video_formats->list->H264_codec.misc_params.latency;
- *min_slice_size = msg->video_formats->list->H264_codec.misc_params.min_slice_size;
- *slice_enc_params = msg->video_formats->list->H264_codec.misc_params.slice_enc_params;
- *frame_rate_control = msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support;
- return WFD_OK;
+ guint nativeindex = 0;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg->video_formats != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg->video_formats->list != NULL, WFD_EINVAL);
+
+ *vCodec = WFD_VIDEO_H264;
+ *vNative = msg->video_formats->list->native & 0x7;
+ nativeindex = msg->video_formats->list->native >> 3;
+ *vNativeResolution = (guint64)1 << nativeindex;
+ *vProfile = msg->video_formats->list->H264_codec.profile;
+ *vLevel = msg->video_formats->list->H264_codec.level;
+ *vMaxWidth = msg->video_formats->list->H264_codec.max_hres;
+ *vMaxHeight = msg->video_formats->list->H264_codec.max_vres;
+ *vCEAResolution = msg->video_formats->list->H264_codec.misc_params.CEA_Support;
+ *vVESAResolution = msg->video_formats->list->H264_codec.misc_params.VESA_Support;
+ *vHHResolution = msg->video_formats->list->H264_codec.misc_params.HH_Support;
+ *vLatency = msg->video_formats->list->H264_codec.misc_params.latency;
+ *min_slice_size = msg->video_formats->list->H264_codec.misc_params.min_slice_size;
+ *slice_enc_params = msg->video_formats->list->H264_codec.misc_params.slice_enc_params;
+ *frame_rate_control = msg->video_formats->list->H264_codec.misc_params.frame_rate_control_support;
+ return WFD_OK;
}
WFDResult wfdconfig_set_contentprotection_type(WFDMessage *msg, WFDHDCPProtection hdcpversion, guint32 TCPPort)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->content_protection) msg->content_protection = g_new0 (WFDContentProtection, 1);
- if(hdcpversion == WFD_HDCP_NONE) return WFD_OK;
- msg->content_protection->hdcp2_spec = g_new0 (WFDHdcp2Spec, 1);
- if(hdcpversion == WFD_HDCP_2_0) msg->content_protection->hdcp2_spec->hdcpversion = g_strdup("HDCP2.0");
- else if(hdcpversion == WFD_HDCP_2_1) msg->content_protection->hdcp2_spec->hdcpversion = g_strdup("HDCP2.1");
- char str[11]={0,};
- snprintf(str, 11, "port=%d", TCPPort);
- msg->content_protection->hdcp2_spec->TCPPort = g_strdup(str);
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->content_protection) msg->content_protection = g_new0(WFDContentProtection, 1);
+ if (hdcpversion == WFD_HDCP_NONE) return WFD_OK;
+ msg->content_protection->hdcp2_spec = g_new0(WFDHdcp2Spec, 1);
+ if (hdcpversion == WFD_HDCP_2_0) msg->content_protection->hdcp2_spec->hdcpversion = g_strdup(STRING_WFD_HDCP2_0);
+ else if (hdcpversion == WFD_HDCP_2_1) msg->content_protection->hdcp2_spec->hdcpversion = g_strdup(STRING_WFD_HDCP2_1);
+ char str[11] = {0, };
+ snprintf(str, 11, "port=%d", TCPPort);
+ msg->content_protection->hdcp2_spec->TCPPort = g_strdup(str);
+ return WFD_OK;
}
WFDResult wfdconfig_get_contentprotection_type(WFDMessage *msg, WFDHDCPProtection *hdcpversion, guint32 *TCPPort)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->content_protection && msg->content_protection->hdcp2_spec) {
- char *result = NULL;
- char *ptr = NULL;
- if(!g_strcmp0(msg->content_protection->hdcp2_spec->hdcpversion,"none")) {
- wfd_warning("HDCP none");
- *hdcpversion = WFD_HDCP_NONE;
- *TCPPort = 0;
- return WFD_OK;
- }
- if(!g_strcmp0(msg->content_protection->hdcp2_spec->hdcpversion,"HDCP2.0")) *hdcpversion = WFD_HDCP_2_0;
- else if(!g_strcmp0(msg->content_protection->hdcp2_spec->hdcpversion,"HDCP2.1")) *hdcpversion = WFD_HDCP_2_1;
- else {
- wfd_warning("Unknown protection type");
- *hdcpversion = WFD_HDCP_NONE;
- *TCPPort = 0;
- return WFD_OK;
- }
-
- result = strtok_r(msg->content_protection->hdcp2_spec->TCPPort, "=", &ptr);
- while (result !=NULL) {
- result = strtok_r(NULL, "=", &ptr);
- *TCPPort = atoi (result);
- break;
- }
- } else *hdcpversion = WFD_HDCP_NONE;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->content_protection && msg->content_protection->hdcp2_spec) {
+ char *result = NULL;
+ char *ptr = NULL;
+ if (!g_strcmp0(msg->content_protection->hdcp2_spec->hdcpversion, STRING_WFD_NONE)) {
+ wfd_warning("HDCP none");
+ *hdcpversion = WFD_HDCP_NONE;
+ *TCPPort = 0;
+ return WFD_OK;
+ }
+ if (!g_strcmp0(msg->content_protection->hdcp2_spec->hdcpversion, STRING_WFD_HDCP2_0)) *hdcpversion = WFD_HDCP_2_0;
+ else if (!g_strcmp0(msg->content_protection->hdcp2_spec->hdcpversion, STRING_WFD_HDCP2_1)) *hdcpversion = WFD_HDCP_2_1;
+ else {
+ wfd_warning("Unknown protection type");
+ *hdcpversion = WFD_HDCP_NONE;
+ *TCPPort = 0;
+ return WFD_OK;
+ }
+
+ result = strtok_r(msg->content_protection->hdcp2_spec->TCPPort, STRING_WFD_EQUALS, &ptr);
+ while (result != NULL) {
+ result = strtok_r(NULL, STRING_WFD_EQUALS, &ptr);
+ *TCPPort = atoi(result);
+ break;
+ }
+ } else *hdcpversion = WFD_HDCP_NONE;
+ return WFD_OK;
}
WFDResult wfdconfig_set_display_EDID(WFDMessage *msg, gboolean edid_supported, guint32 edid_blockcount, gchar *edid_playload)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->display_edid) msg->display_edid = g_new0 (WFDDisplayEdid, 1);
- msg->display_edid->edid_supported = edid_supported;
- if(!edid_supported) return WFD_OK;
- msg->display_edid->edid_block_count = edid_blockcount;
- if(edid_blockcount) {
- msg->display_edid->edid_payload = g_malloc(128 * edid_blockcount);
- if(!msg->display_edid->edid_payload)
- memcpy(msg->display_edid->edid_payload, edid_playload, 128 * edid_blockcount);
- } else msg->display_edid->edid_payload = g_strdup("none");
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->display_edid) msg->display_edid = g_new0(WFDDisplayEdid, 1);
+ msg->display_edid->edid_supported = edid_supported;
+ if (!edid_supported) return WFD_OK;
+ msg->display_edid->edid_block_count = edid_blockcount;
+ if (edid_blockcount) {
+ msg->display_edid->edid_payload = g_malloc(128 * edid_blockcount);
+ if (!msg->display_edid->edid_payload)
+ memcpy(msg->display_edid->edid_payload, edid_playload, 128 * edid_blockcount);
+ } else msg->display_edid->edid_payload = g_strdup(STRING_WFD_NONE);
+ return WFD_OK;
}
WFDResult wfdconfig_get_display_EDID(WFDMessage *msg, gboolean *edid_supported, guint32 *edid_blockcount, gchar **edid_playload)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->display_edid ) {
- if(msg->display_edid->edid_supported) {
- *edid_blockcount = msg->display_edid->edid_block_count;
- if(msg->display_edid->edid_block_count) {
- char * temp;
- temp = g_malloc(EDID_BLOCK_SIZE * msg->display_edid->edid_block_count);
- if(temp) {
- memset(temp, 0, EDID_BLOCK_SIZE * msg->display_edid->edid_block_count);
- memcpy(temp, msg->display_edid->edid_payload, EDID_BLOCK_SIZE * msg->display_edid->edid_block_count);
- *edid_playload = temp;
- *edid_supported = TRUE;
- }
- } else *edid_playload = g_strdup("none");
- }
- } else *edid_supported = FALSE;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->display_edid) {
+ if (msg->display_edid->edid_supported) {
+ *edid_blockcount = msg->display_edid->edid_block_count;
+ if (msg->display_edid->edid_block_count) {
+ char *temp;
+ temp = g_malloc(EDID_BLOCK_SIZE * msg->display_edid->edid_block_count);
+ if (temp) {
+ memset(temp, 0, EDID_BLOCK_SIZE * msg->display_edid->edid_block_count);
+ memcpy(temp, msg->display_edid->edid_payload, EDID_BLOCK_SIZE * msg->display_edid->edid_block_count);
+ *edid_playload = temp;
+ *edid_supported = TRUE;
+ }
+ } else *edid_playload = g_strdup(STRING_WFD_NONE);
+ }
+ } else *edid_supported = FALSE;
+ return WFD_OK;
}
WFDResult wfdconfig_set_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus status, gchar *sink_address)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->coupled_sink) msg->coupled_sink = g_new0 (WFDCoupledSink, 1);
- if(status == WFD_SINK_UNKNOWN) return WFD_OK;
- msg->coupled_sink->coupled_sink_cap = g_new0 (WFDCoupled_sink_cap, 1);
- msg->coupled_sink->coupled_sink_cap->status = status;
- msg->coupled_sink->coupled_sink_cap->sink_address = g_strdup(sink_address);
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->coupled_sink) msg->coupled_sink = g_new0(WFDCoupledSink, 1);
+ if (status == WFD_SINK_UNKNOWN) return WFD_OK;
+ msg->coupled_sink->coupled_sink_cap = g_new0(WFDCoupled_sink_cap, 1);
+ msg->coupled_sink->coupled_sink_cap->status = status;
+ msg->coupled_sink->coupled_sink_cap->sink_address = g_strdup(sink_address);
+ return WFD_OK;
}
WFDResult wfdconfig_get_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus *status, gchar **sink_address)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->coupled_sink && msg->coupled_sink->coupled_sink_cap) {
- *status = msg->coupled_sink->coupled_sink_cap->status;
- *sink_address = g_strdup(msg->coupled_sink->coupled_sink_cap->sink_address);
- } else *status = WFD_SINK_UNKNOWN;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->coupled_sink && msg->coupled_sink->coupled_sink_cap) {
+ *status = msg->coupled_sink->coupled_sink_cap->status;
+ *sink_address = g_strdup(msg->coupled_sink->coupled_sink_cap->sink_address);
+ } else *status = WFD_SINK_UNKNOWN;
+ return WFD_OK;
}
WFDResult wfdconfig_set_trigger_type(WFDMessage *msg, WFDTrigger trigger)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->trigger_method)
- msg->trigger_method = g_new0 (WFDTriggerMethod, 1);
- if(trigger == WFD_TRIGGER_SETUP)
- msg->trigger_method->wfd_trigger_method = g_strdup("SETUP");
- else if(trigger == WFD_TRIGGER_PAUSE)
- msg->trigger_method->wfd_trigger_method = g_strdup("PAUSE");
- else if(trigger == WFD_TRIGGER_TEARDOWN)
- msg->trigger_method->wfd_trigger_method = g_strdup("TEARDOWN");
- else if(trigger == WFD_TRIGGER_PLAY)
- msg->trigger_method->wfd_trigger_method = g_strdup("PLAY");
- else
- return WFD_EINVAL;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->trigger_method)
+ msg->trigger_method = g_new0(WFDTriggerMethod, 1);
+ if (trigger == WFD_TRIGGER_SETUP)
+ msg->trigger_method->wfd_trigger_method = g_strdup(STRING_WFD_SETUP);
+ else if (trigger == WFD_TRIGGER_PAUSE)
+ msg->trigger_method->wfd_trigger_method = g_strdup(STRING_WFD_PAUSE);
+ else if (trigger == WFD_TRIGGER_TEARDOWN)
+ msg->trigger_method->wfd_trigger_method = g_strdup(STRING_WFD_TEARDOWN);
+ else if (trigger == WFD_TRIGGER_PLAY)
+ msg->trigger_method->wfd_trigger_method = g_strdup(STRING_WFD_PLAY);
+ else
+ return WFD_EINVAL;
+ return WFD_OK;
}
WFDResult wfdconfig_get_trigger_type(WFDMessage *msg, WFDTrigger *trigger)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!g_strcmp0(msg->trigger_method->wfd_trigger_method, "SETUP"))
- *trigger = WFD_TRIGGER_SETUP;
- else if(!g_strcmp0(msg->trigger_method->wfd_trigger_method, "PAUSE"))
- *trigger = WFD_TRIGGER_PAUSE;
- else if(!g_strcmp0(msg->trigger_method->wfd_trigger_method, "TEARDOWN"))
- *trigger = WFD_TRIGGER_TEARDOWN;
- else if(!g_strcmp0(msg->trigger_method->wfd_trigger_method, "PLAY"))
- *trigger = WFD_TRIGGER_PLAY;
- else {
- *trigger = WFD_TRIGGER_UNKNOWN;
- return WFD_EINVAL;
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!g_strcmp0(msg->trigger_method->wfd_trigger_method, STRING_WFD_SETUP))
+ *trigger = WFD_TRIGGER_SETUP;
+ else if (!g_strcmp0(msg->trigger_method->wfd_trigger_method, STRING_WFD_PAUSE))
+ *trigger = WFD_TRIGGER_PAUSE;
+ else if (!g_strcmp0(msg->trigger_method->wfd_trigger_method, STRING_WFD_TEARDOWN))
+ *trigger = WFD_TRIGGER_TEARDOWN;
+ else if (!g_strcmp0(msg->trigger_method->wfd_trigger_method, STRING_WFD_PLAY))
+ *trigger = WFD_TRIGGER_PLAY;
+ else {
+ *trigger = WFD_TRIGGER_UNKNOWN;
+ return WFD_EINVAL;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_presentation_url(WFDMessage *msg, gchar *wfd_url0, gchar *wfd_url1)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->presentation_url) msg->presentation_url = g_new0 (WFDPresentationUrl, 1);
- if(wfd_url0) msg->presentation_url->wfd_url0 = g_strdup(wfd_url0);
- if(wfd_url1) msg->presentation_url->wfd_url1 = g_strdup(wfd_url1);
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->presentation_url) msg->presentation_url = g_new0(WFDPresentationUrl, 1);
+ if (wfd_url0) msg->presentation_url->wfd_url0 = g_strdup(wfd_url0);
+ if (wfd_url1) msg->presentation_url->wfd_url1 = g_strdup(wfd_url1);
+ return WFD_OK;
}
WFDResult wfdconfig_get_presentation_url(WFDMessage *msg, gchar **wfd_url0, gchar **wfd_url1)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->presentation_url) {
- *wfd_url0 = g_strdup(msg->presentation_url->wfd_url0);
- *wfd_url1 = g_strdup(msg->presentation_url->wfd_url1);
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->presentation_url) {
+ *wfd_url0 = g_strdup(msg->presentation_url->wfd_url0);
+ *wfd_url1 = g_strdup(msg->presentation_url->wfd_url1);
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode trans, WFDRTSPProfile profile,
- WFDRTSPLowerTrans lowertrans, guint32 rtp_port0, guint32 rtp_port1)
+ WFDRTSPLowerTrans lowertrans, guint32 rtp_port0, guint32 rtp_port1)
{
- GString *lines;
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
-
- if(!msg->client_rtp_ports)
- msg->client_rtp_ports = g_new0 (WFDClientRtpPorts, 1);
-
- if(trans != WFD_RTSP_TRANS_UNKNOWN) {
- lines = g_string_new ("");
- if(trans == WFD_RTSP_TRANS_RTP) g_string_append_printf (lines,"RTP");
- else if(trans == WFD_RTSP_TRANS_RDT) g_string_append_printf (lines,"RDT");
-
- if(profile == WFD_RTSP_PROFILE_AVP) g_string_append_printf (lines,"/AVP");
- else if(profile == WFD_RTSP_PROFILE_SAVP) g_string_append_printf (lines,"/SAVP");
-
- if(lowertrans == WFD_RTSP_LOWER_TRANS_UDP) g_string_append_printf (lines,"/UDP;unicast");
- else if(lowertrans == WFD_RTSP_LOWER_TRANS_UDP_MCAST) g_string_append_printf (lines,"/UDP;multicast");
- else if(lowertrans == WFD_RTSP_LOWER_TRANS_TCP) g_string_append_printf (lines,"/TCP;unicast");
- else if(lowertrans == WFD_RTSP_LOWER_TRANS_HTTP) g_string_append_printf (lines,"/HTTP");
-
- msg->client_rtp_ports->profile = g_string_free (lines, FALSE);
- msg->client_rtp_ports->rtp_port0 = rtp_port0;
- msg->client_rtp_ports->rtp_port1 = rtp_port1;
- msg->client_rtp_ports->mode = g_strdup("mode=play");
- }
- return WFD_OK;
+ GString *lines;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+
+ if (!msg->client_rtp_ports)
+ msg->client_rtp_ports = g_new0(WFDClientRtpPorts, 1);
+
+ if (trans != WFD_RTSP_TRANS_UNKNOWN) {
+ lines = g_string_new("");
+ if (trans == WFD_RTSP_TRANS_RTP) g_string_append_printf(lines, STRING_WFD_RTP);
+ else if (trans == WFD_RTSP_TRANS_RDT) g_string_append_printf(lines, STRING_WFD_RDT);
+
+ if (profile != WFD_RTSP_PROFILE_UNKNOWN) g_string_append_printf(lines, STRING_WFD_SLASH);
+
+ if (profile == WFD_RTSP_PROFILE_AVP) g_string_append_printf(lines, STRING_WFD_AVP);
+ else if (profile == WFD_RTSP_PROFILE_SAVP) g_string_append_printf(lines, STRING_WFD_SAVP);
+
+ if (lowertrans != WFD_RTSP_LOWER_TRANS_UNKNOWN) g_string_append_printf(lines, STRING_WFD_SLASH);
+
+ if (lowertrans == WFD_RTSP_LOWER_TRANS_UDP) {
+ g_string_append_printf(lines, STRING_WFD_UDP);
+ g_string_append_printf(lines, STRING_WFD_SEMI_COLON);
+ g_string_append_printf(lines, STRING_WFD_UNICAST);
+ } else if (lowertrans == WFD_RTSP_LOWER_TRANS_UDP_MCAST) {
+ g_string_append_printf(lines, STRING_WFD_UDP);
+ g_string_append_printf(lines, STRING_WFD_SEMI_COLON);
+ g_string_append_printf(lines, STRING_WFD_MULTICAST);
+ } else if (lowertrans == WFD_RTSP_LOWER_TRANS_TCP) {
+ g_string_append_printf(lines, STRING_WFD_TCP);
+ g_string_append_printf(lines, STRING_WFD_SEMI_COLON);
+ g_string_append_printf(lines, STRING_WFD_UNICAST);
+ } else if (lowertrans == WFD_RTSP_LOWER_TRANS_HTTP) {
+ g_string_append_printf(lines, STRING_WFD_TCP_HTTP);
+ }
+
+ msg->client_rtp_ports->profile = g_string_free(lines, FALSE);
+ msg->client_rtp_ports->rtp_port0 = rtp_port0;
+ msg->client_rtp_ports->rtp_port1 = rtp_port1;
+ msg->client_rtp_ports->mode = g_strdup("mode=play");
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_get_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode *trans, WFDRTSPProfile *profile,
- WFDRTSPLowerTrans *lowertrans, guint32 *rtp_port0, guint32 *rtp_port1)
+ WFDRTSPLowerTrans *lowertrans, guint32 *rtp_port0, guint32 *rtp_port1)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- g_return_val_if_fail (msg->client_rtp_ports != NULL, WFD_EINVAL);
-
- if(g_strrstr(msg->client_rtp_ports->profile, "RTP")) *trans = WFD_RTSP_TRANS_RTP;
- if(g_strrstr(msg->client_rtp_ports->profile, "RDT")) *trans = WFD_RTSP_TRANS_RDT;
- if(g_strrstr(msg->client_rtp_ports->profile, "AVP")) *profile = WFD_RTSP_PROFILE_AVP;
- if(g_strrstr(msg->client_rtp_ports->profile, "SAVP")) *profile = WFD_RTSP_PROFILE_SAVP;
- if(g_strrstr(msg->client_rtp_ports->profile, "UDP;unicast")) *lowertrans = WFD_RTSP_LOWER_TRANS_UDP;
- if(g_strrstr(msg->client_rtp_ports->profile, "UDP;multicast")) *lowertrans = WFD_RTSP_LOWER_TRANS_UDP_MCAST;
- if(g_strrstr(msg->client_rtp_ports->profile, "TCP;unicast")) *lowertrans = WFD_RTSP_LOWER_TRANS_TCP;
- if(g_strrstr(msg->client_rtp_ports->profile, "HTTP")) *lowertrans = WFD_RTSP_LOWER_TRANS_HTTP;
-
- *rtp_port0 = msg->client_rtp_ports->rtp_port0;
- *rtp_port1 = msg->client_rtp_ports->rtp_port1;
-
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ g_return_val_if_fail(msg->client_rtp_ports != NULL, WFD_EINVAL);
+
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_RTP)) *trans = WFD_RTSP_TRANS_RTP;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_RDT)) *trans = WFD_RTSP_TRANS_RDT;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_AVP)) *profile = WFD_RTSP_PROFILE_AVP;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_SAVP)) *profile = WFD_RTSP_PROFILE_SAVP;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_UDP) &&
+ g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_UNICAST)) *lowertrans = WFD_RTSP_LOWER_TRANS_UDP;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_UDP) &&
+ g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_MULTICAST)) *lowertrans = WFD_RTSP_LOWER_TRANS_UDP_MCAST;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_TCP) &&
+ g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_UNICAST)) *lowertrans = WFD_RTSP_LOWER_TRANS_TCP;
+ if (g_strrstr(msg->client_rtp_ports->profile, STRING_WFD_TCP_HTTP)) *lowertrans = WFD_RTSP_LOWER_TRANS_HTTP;
+
+ *rtp_port0 = msg->client_rtp_ports->rtp_port0;
+ *rtp_port1 = msg->client_rtp_ports->rtp_port1;
+
+ return WFD_OK;
}
WFDResult wfdconfig_set_audio_sink_type(WFDMessage *msg, WFDSinkType sinktype)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->route) msg->route = g_new0 (WFDRoute, 1);
- if(sinktype == WFD_PRIMARY_SINK) msg->route->destination = g_strdup("primary");
- else if(sinktype == WFD_SECONDARY_SINK) msg->route->destination = g_strdup("secondary");
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->route) msg->route = g_new0(WFDRoute, 1);
+ if (sinktype == WFD_PRIMARY_SINK) msg->route->destination = g_strdup(STRING_WFD_PRIMARY);
+ else if (sinktype == WFD_SECONDARY_SINK) msg->route->destination = g_strdup(STRING_WFD_SECONDARY);
+ return WFD_OK;
}
WFDResult wfdconfig_get_audio_sink_type(WFDMessage *msg, WFDSinkType *sinktype)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->route) {
- if(!g_strcmp0(msg->route->destination,"primary")) *sinktype = WFD_PRIMARY_SINK;
- else if(!g_strcmp0(msg->route->destination,"secondary")) *sinktype = WFD_SECONDARY_SINK;
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->route) {
+ if (!g_strcmp0(msg->route->destination, STRING_WFD_PRIMARY)) *sinktype = WFD_PRIMARY_SINK;
+ else if (!g_strcmp0(msg->route->destination, STRING_WFD_SECONDARY)) *sinktype = WFD_SECONDARY_SINK;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_I2C_port(WFDMessage *msg, gboolean i2csupport, guint32 i2cport)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->I2C) msg->I2C = g_new0 (WFDI2C, 1);
- msg->I2C->I2CPresent = i2csupport;
- msg->I2C->I2C_port = i2cport;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->I2C) msg->I2C = g_new0(WFDI2C, 1);
+ msg->I2C->I2CPresent = i2csupport;
+ msg->I2C->I2C_port = i2cport;
+ return WFD_OK;
}
WFDResult wfdconfig_get_I2C_port(WFDMessage *msg, gboolean *i2csupport, guint32 *i2cport)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->I2C && msg->I2C->I2CPresent) {
- *i2csupport = msg->I2C->I2CPresent;
- *i2cport = msg->I2C->I2C_port;
- } else *i2csupport = FALSE;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->I2C && msg->I2C->I2CPresent) {
+ *i2csupport = msg->I2C->I2CPresent;
+ *i2cport = msg->I2C->I2C_port;
+ } else *i2csupport = FALSE;
+ return WFD_OK;
}
WFDResult wfdconfig_set_av_format_change_timing(WFDMessage *msg, guint64 PTS, guint64 DTS)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->av_format_change_timing) msg->av_format_change_timing = g_new0 (WFDAVFormatChangeTiming, 1);
- msg->av_format_change_timing->PTS = PTS;
- msg->av_format_change_timing->DTS = DTS;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->av_format_change_timing) msg->av_format_change_timing = g_new0(WFDAVFormatChangeTiming, 1);
+ msg->av_format_change_timing->PTS = PTS;
+ msg->av_format_change_timing->DTS = DTS;
+ return WFD_OK;
}
WFDResult wfdconfig_get_av_format_change_timing(WFDMessage *msg, guint64 *PTS, guint64 *DTS)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->av_format_change_timing) {
- *PTS = msg->av_format_change_timing->PTS;
- *DTS = msg->av_format_change_timing->DTS;
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->av_format_change_timing) {
+ *PTS = msg->av_format_change_timing->PTS;
+ *DTS = msg->av_format_change_timing->DTS;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_uibc_capability(WFDMessage *msg, guint32 input_category, guint32 inp_type, WFDHIDCTypePathPair *inp_pair,
- guint32 inp_type_path_count, guint32 tcp_port)
+ guint32 inp_type_path_count, guint32 tcp_port)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->uibc_capability) msg->uibc_capability = g_new0 (WFDUibcCapability, 1);
- msg->uibc_capability->uibcsupported = TRUE;
- msg->uibc_capability->input_category_list.input_cat = input_category;
- msg->uibc_capability->generic_cap_list.inp_type = inp_type;
- msg->uibc_capability->hidc_cap_list.cap_count = inp_type_path_count;
- if(msg->uibc_capability->hidc_cap_list.cap_count) {
- detailed_cap *temp_cap;
- guint i=0;
- msg->uibc_capability->hidc_cap_list.next = g_new0 (detailed_cap, 1);
- temp_cap = msg->uibc_capability->hidc_cap_list.next;
- for(;i<inp_type_path_count;) {
- temp_cap->p.inp_type = inp_pair[i].inp_type;
- temp_cap->p.inp_path = inp_pair[i].inp_path;
- i++;
- if(i<inp_type_path_count) {
- temp_cap->next = g_new0 (detailed_cap, 1);
- temp_cap = temp_cap->next;
- }
- }
- }
- msg->uibc_capability->tcp_port = tcp_port;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->uibc_capability) msg->uibc_capability = g_new0(WFDUibcCapability, 1);
+ msg->uibc_capability->uibcsupported = TRUE;
+ msg->uibc_capability->input_category_list.input_cat = input_category;
+ msg->uibc_capability->generic_cap_list.inp_type = inp_type;
+ msg->uibc_capability->hidc_cap_list.cap_count = inp_type_path_count;
+ if (msg->uibc_capability->hidc_cap_list.cap_count) {
+ detailed_cap *temp_cap;
+ guint i = 0;
+ msg->uibc_capability->hidc_cap_list.next = g_new0(detailed_cap, 1);
+ temp_cap = msg->uibc_capability->hidc_cap_list.next;
+ for (; i < inp_type_path_count;) {
+ temp_cap->p.inp_type = inp_pair[i].inp_type;
+ temp_cap->p.inp_path = inp_pair[i].inp_path;
+ i++;
+ if (i < inp_type_path_count) {
+ temp_cap->next = g_new0(detailed_cap, 1);
+ temp_cap = temp_cap->next;
+ }
+ }
+ }
+ msg->uibc_capability->tcp_port = tcp_port;
+ return WFD_OK;
}
WFDResult wfdconfig_get_uibc_capability(WFDMessage *msg, guint32 *input_category, guint32 *inp_type, WFDHIDCTypePathPair **inp_pair,
- guint32 *inp_type_path_count, guint32 *tcp_port)
+ guint32 *inp_type_path_count, guint32 *tcp_port)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->uibc_capability && msg->uibc_capability->uibcsupported) {
- *input_category = msg->uibc_capability->input_category_list.input_cat;
- *inp_type = msg->uibc_capability->generic_cap_list.inp_type;
- *inp_type_path_count = msg->uibc_capability->hidc_cap_list.cap_count;
- if(msg->uibc_capability->hidc_cap_list.cap_count) {
- detailed_cap *temp_cap;
- guint i = 0;
- *inp_pair = g_new0 (WFDHIDCTypePathPair, msg->uibc_capability->hidc_cap_list.cap_count);
- temp_cap = msg->uibc_capability->hidc_cap_list.next;
- while(temp_cap) {
- (*(inp_pair))[i].inp_type = temp_cap->p.inp_type;
- (*(inp_pair))[i].inp_path = temp_cap->p.inp_path;
- temp_cap = temp_cap->next;
- i++;
- }
- }
- *tcp_port = msg->uibc_capability->tcp_port;
- }
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->uibc_capability && msg->uibc_capability->uibcsupported) {
+ *input_category = msg->uibc_capability->input_category_list.input_cat;
+ *inp_type = msg->uibc_capability->generic_cap_list.inp_type;
+ *inp_type_path_count = msg->uibc_capability->hidc_cap_list.cap_count;
+ if (msg->uibc_capability->hidc_cap_list.cap_count) {
+ detailed_cap *temp_cap;
+ guint i = 0;
+ *inp_pair = g_new0(WFDHIDCTypePathPair, msg->uibc_capability->hidc_cap_list.cap_count);
+ temp_cap = msg->uibc_capability->hidc_cap_list.next;
+ while (temp_cap) {
+ (*(inp_pair))[i].inp_type = temp_cap->p.inp_type;
+ (*(inp_pair))[i].inp_path = temp_cap->p.inp_path;
+ temp_cap = temp_cap->next;
+ i++;
+ }
+ }
+ *tcp_port = msg->uibc_capability->tcp_port;
+ }
+ return WFD_OK;
}
WFDResult wfdconfig_set_uibc_status(WFDMessage *msg, gboolean uibc_enable)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->uibc_setting) msg->uibc_setting = g_new0 (WFDUibcSetting, 1);
- msg->uibc_setting->uibc_setting = uibc_enable;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->uibc_setting) msg->uibc_setting = g_new0(WFDUibcSetting, 1);
+ msg->uibc_setting->uibc_setting = uibc_enable;
+ return WFD_OK;
}
WFDResult wfdconfig_get_uibc_status(WFDMessage *msg, gboolean *uibc_enable)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->uibc_setting) *uibc_enable = msg->uibc_setting->uibc_setting;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->uibc_setting) *uibc_enable = msg->uibc_setting->uibc_setting;
+ return WFD_OK;
}
#ifdef STANDBY_RESUME_CAPABILITY
WFDResult wfdconfig_set_standby_resume_capability(WFDMessage *msg, gboolean supported)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->standby_resume_capability) msg->standby_resume_capability = g_new0 (WFDStandbyResumeCapability, 1);
- msg->standby_resume_capability->standby_resume_cap = supported;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->standby_resume_capability) msg->standby_resume_capability = g_new0(WFDStandbyResumeCapability, 1);
+ msg->standby_resume_capability->standby_resume_cap = supported;
+ return WFD_OK;
}
WFDResult wfdconfig_get_standby_resume_capability(WFDMessage *msg, gboolean *supported)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->standby_resume_capability) *supported = msg->standby_resume_capability->standby_resume_cap;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->standby_resume_capability) *supported = msg->standby_resume_capability->standby_resume_cap;
+ return WFD_OK;
}
#endif
WFDResult wfdconfig_set_standby(WFDMessage *msg, gboolean standby_enable)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->standby) msg->standby = g_new0 (WFDStandby, 1);
- msg->standby->wfd_standby = standby_enable;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->standby) msg->standby = g_new0(WFDStandby, 1);
+ msg->standby->wfd_standby = standby_enable;
+ return WFD_OK;
}
WFDResult wfdconfig_get_standby(WFDMessage *msg, gboolean *standby_enable)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->standby) *standby_enable = msg->standby->wfd_standby;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->standby) *standby_enable = msg->standby->wfd_standby;
+ return WFD_OK;
}
WFDResult wfdconfig_set_connector_type(WFDMessage *msg, WFDConnector connector)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->connector_type) msg->connector_type = g_new0 (WFDConnectorType, 1);
- msg->connector_type->connector_type = connector;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->connector_type) msg->connector_type = g_new0(WFDConnectorType, 1);
+ msg->connector_type->connector_type = connector;
+ return WFD_OK;
}
WFDResult wfdconfig_get_connector_type(WFDMessage *msg, WFDConnector *connector)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(msg->connector_type) *connector = msg->connector_type->connector_type;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (msg->connector_type) *connector = msg->connector_type->connector_type;
+ return WFD_OK;
}
WFDResult wfdconfig_set_idr_request(WFDMessage *msg)
{
- g_return_val_if_fail (msg != NULL, WFD_EINVAL);
- if(!msg->idr_request) msg->idr_request = g_new0 (WFDIdrRequest, 1);
- msg->idr_request->idr_request = TRUE;
- return WFD_OK;
+ g_return_val_if_fail(msg != NULL, WFD_EINVAL);
+ if (!msg->idr_request) msg->idr_request = g_new0(WFDIdrRequest, 1);
+ msg->idr_request->idr_request = TRUE;
+ return WFD_OK;
}