#define TEST_MENU_WEBRTC_MEDIA_SOURCE 0x00002000
#define TEST_MENU_WEBRTC_MEDIA_RENDER 0x00004000
#define TEST_MENU_WEBRTC_DATA_CHANNEL 0x00008000
-#define TEST_MENU_APP_SIGNALING 0x0000F000
+#define TEST_MENU_APP_SIGNALING 0x00010000
enum {
CURRENT_STATUS_MAINMENU,
g_menu_state = CURRENT_STATUS_MAINMENU;
}
-static void interpret(char *cmd)
+static void test_webrtc_common(char *cmd)
{
int value;
- if (!cmd)
- return;
-
switch (g_menu_state) {
- case CURRENT_STATUS_MAINMENU:
- interpret_main_menu_cmd(cmd);
+ case CURRENT_STATUS_SET_STUN_SERVER: {
+ _webrtc_set_stun_server(0, cmd);
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_ADD_TURN_SERVER: {
+ _webrtc_add_turn_server(0, cmd);
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_SET_BUNDLE_POLICY: {
+ value = atoi(cmd);
+ _webrtc_set_bundle_policy(0, value);
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_SET_ICE_TRANSPORT_POLICY: {
+ value = atoi(cmd);
+ _webrtc_set_ice_transport_policy(0, value);
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_SET_LOCAL_DESCRIPTION: {
+ value = atoi(cmd);
+ if (value == 1)
+ _webrtc_set_local_description(&g_conns[0], true);
+ else if (value == 2)
+ _webrtc_set_local_description(&g_conns[0], false);
+ else
+ g_print("invalid value[%d]\n", value);
+
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_SET_RTP_PACKET_DROP_PROBABILITY: {
+ static bool sender;
+ switch (g_cnt) {
+ case 0:
+ value = atoi(cmd);
+ if (value != 1 && value != 2) {
+ g_print("invalid value[%d]\n", value);
+ reset_menu_state();
+ break;
+ }
+ sender = (value == 1);
+ g_cnt++;
+ break;
+ case 1: {
+ float fvalue = strtof(cmd, NULL);
+ _webrtc_set_rtp_packet_drop_probability(sender, fvalue);
+ sender = false;
+ g_cnt = 0;
+ reset_menu_state();
+ break;
+ }
+ }
+ break;
+ }
+ case CURRENT_STATUS_GET_RTP_PACKET_DROP_PROBABILITY: {
+ value = atoi(cmd);
+ if (value != 1 && value != 2) {
+ g_print("invalid value[%d]\n", value);
+ reset_menu_state();
+ break;
+ }
+ _webrtc_get_rtp_packet_drop_probability((value == 1));
+ reset_menu_state();
break;
+ }
+ }
+}
+
+static void test_webrtc_media_source(char *cmd)
+{
+ int value;
+
+ switch (g_menu_state) {
case CURRENT_STATUS_ADD_MEDIA_SOURCE: {
value = atoi(cmd);
_webrtc_add_media_source(0, value - 1, NULL);
reset_menu_state();
break;
}
+ case CURRENT_STATUS_FILE_SOURCE_SET_PATH: {
+ static unsigned int id;
+ value = atoi(cmd);
+
+ switch (g_cnt) {
+ case 0:
+ id = value;
+ g_cnt++;
+ break;
+ case 1:
+ _set_media_path(0, id, cmd);
+ id = 0;
+ g_cnt = 0;
+ reset_menu_state();
+ break;
+ }
+ break;
+ }
+ case CURRENT_STATUS_FILE_SOURCE_SET_LOOPING: {
+ static unsigned int id;
+ value = atoi(cmd);
+ switch (g_cnt) {
+ case 0:
+ id = value;
+ g_cnt++;
+ break;
+ case 1:
+ _webrtc_file_source_set_looping(0, id, value);
+ id = 0;
+ g_cnt = 0;
+ reset_menu_state();
+ break;
+ }
+ break;
+ }
+ case CURRENT_STATUS_FILE_SOURCE_GET_LOOPING: {
+ value = atoi(cmd);
+ _webrtc_file_source_get_looping(0, value);
+ reset_menu_state();
+ break;
+ }
case CURRENT_STATUS_MEDIA_PACKET_SOURCE_SET_BUFFER_STATE_CHANGED_CB: {
value = atoi(cmd);
_webrtc_media_packet_source_set_buffer_state_changed_cb(0, value);
}
break;
}
+ case CURRENT_STATUS_START_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE: {
+ value = atoi(cmd);
+ _start_pushing_packet(0, value);
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_STOP_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE: {
+ value = atoi(cmd);
+ _stop_pushing_packet(0, value);
+ reset_menu_state();
+ break;
+ }
+ case CURRENT_STATUS_SET_CROP_SCREEN_SOURCE: {
+ static unsigned int id;
+ static int x, y, w, h;
+ static int is_vertical;
+ value = atoi(cmd);
+
+ switch (g_cnt) {
+ case 0:
+ id = value;
+ g_cnt++;
+ break;
+ case 1:
+ x = value;
+ g_cnt++;
+ break;
+ case 2:
+ y = value;
+ g_cnt++;
+ break;
+ case 3:
+ w = value;
+ g_cnt++;
+ break;
+ case 4:
+ h = value;
+ g_cnt++;
+ break;
+ case 5:
+ is_vertical = value;
+ int width, height;
+ _webrtc_screen_source_set_crop(0, id, x, y, w, h, is_vertical, &width, &height);
+ x = y = w = h = is_vertical = 0;
+ g_cnt = 0;
+ reset_menu_state();
+ break;
+ }
+ break;
+ }
+ case CURRENT_STATUS_UNSET_CROP_SCREEN_SOURCE: {
+ value = atoi(cmd);
+ _webrtc_screen_source_unset_crop(0, value);
+ reset_menu_state();
+ break;
+ }
+ }
+}
+
+static void test_webrtc_media_render(char *cmd)
+{
+ int value;
+
+ switch (g_menu_state) {
case CURRENT_STATUS_SET_DISPLAY_TYPE: {
value = atoi(cmd);
_webrtc_set_display_type(0, value - 1);
reset_menu_state();
break;
}
+ }
+}
+
+static void test_webrtc_data_channel(char *cmd)
+{
+ switch (g_menu_state) {
case CURRENT_STATUS_DATA_CHANNEL_SEND_STRING: {
_webrtc_data_channel_send_string(cmd, false);
reset_menu_state();
reset_menu_state();
break;
}
- case CURRENT_STATUS_SET_STUN_SERVER: {
- _webrtc_set_stun_server(0, cmd);
- reset_menu_state();
- break;
- }
- case CURRENT_STATUS_ADD_TURN_SERVER: {
- _webrtc_add_turn_server(0, cmd);
- reset_menu_state();
- break;
- }
- case CURRENT_STATUS_SET_BUNDLE_POLICY: {
- value = atoi(cmd);
- _webrtc_set_bundle_policy(0, value);
- reset_menu_state();
- break;
- }
- case CURRENT_STATUS_SET_ICE_TRANSPORT_POLICY: {
- value = atoi(cmd);
- _webrtc_set_ice_transport_policy(0, value);
- reset_menu_state();
- break;
}
- case CURRENT_STATUS_SET_LOCAL_DESCRIPTION: {
- value = atoi(cmd);
- if (value == 1)
- _webrtc_set_local_description(&g_conns[0], true);
- else if (value == 2)
- _webrtc_set_local_description(&g_conns[0], false);
- else
- g_print("invalid value[%d]\n", value);
+}
- reset_menu_state();
- break;
- }
- case CURRENT_STATUS_SET_RTP_PACKET_DROP_PROBABILITY: {
- static bool sender;
- switch (g_cnt) {
- case 0:
- value = atoi(cmd);
- if (value != 1 && value != 2) {
- g_print("invalid value[%d]\n", value);
- reset_menu_state();
- break;
- }
- sender = (value == 1);
- g_cnt++;
- break;
- case 1: {
- float fvalue = strtof(cmd, NULL);
- _webrtc_set_rtp_packet_drop_probability(sender, fvalue);
- sender = false;
- g_cnt = 0;
- reset_menu_state();
- break;
- }
- }
- break;
- }
- case CURRENT_STATUS_GET_RTP_PACKET_DROP_PROBABILITY: {
- value = atoi(cmd);
- if (value != 1 && value != 2) {
- g_print("invalid value[%d]\n", value);
- reset_menu_state();
- break;
- }
- _webrtc_get_rtp_packet_drop_probability((value == 1));
- reset_menu_state();
- break;
- }
+static void app_setting_and_signaling(char *cmd)
+{
+ int value;
+
+ switch (g_menu_state) {
case CURRENT_STATUS_SETTING_SIGNALING_SERVER: {
_setting_uri(g_signaling_server.url, cmd);
reset_menu_state();
reset_menu_state();
break;
}
- case CURRENT_STATUS_START_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE: {
- value = atoi(cmd);
- _start_pushing_packet(0, value);
- reset_menu_state();
- break;
- }
- case CURRENT_STATUS_STOP_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE: {
- value = atoi(cmd);
- _stop_pushing_packet(0, value);
- reset_menu_state();
- break;
- }
- case CURRENT_STATUS_FILE_SOURCE_SET_PATH: {
- static unsigned int id;
- value = atoi(cmd);
-
- switch (g_cnt) {
- case 0:
- id = value;
- g_cnt++;
- break;
- case 1:
- _set_media_path(0, id, cmd);
- id = 0;
- g_cnt = 0;
- reset_menu_state();
- break;
- }
- break;
- }
- case CURRENT_STATUS_FILE_SOURCE_SET_LOOPING: {
- static unsigned int id;
- value = atoi(cmd);
- switch (g_cnt) {
- case 0:
- id = value;
- g_cnt++;
- break;
- case 1:
- _webrtc_file_source_set_looping(0, id, value);
- id = 0;
- g_cnt = 0;
- reset_menu_state();
- break;
- }
- break;
- }
- case CURRENT_STATUS_FILE_SOURCE_GET_LOOPING: {
- value = atoi(cmd);
- _webrtc_file_source_get_looping(0, value);
- reset_menu_state();
- break;
- }
case CURRENT_STATUS_CREATE_PRIVATE_SIGNALING_SERVER: {
value = atoi(cmd);
_webrtc_signaling_server_create(value);
}
break;
}
- case CURRENT_STATUS_SET_CROP_SCREEN_SOURCE: {
- static unsigned int id;
- static int x;
- static int y;
- static int w;
- static int h;
- static int is_vertical;
- value = atoi(cmd);
-
- switch (g_cnt) {
- case 0:
- id = value;
- g_cnt++;
- break;
- case 1:
- x = value;
- g_cnt++;
- break;
- case 2:
- y = value;
- g_cnt++;
- break;
- case 3:
- w = value;
- g_cnt++;
- break;
- case 4:
- h = value;
- g_cnt++;
- break;
- case 5:
- is_vertical = value;
- int width, height;
- _webrtc_screen_source_set_crop(0, id, x, y, w, h, is_vertical, &width, &height);
- x = y = w = h = is_vertical = 0;
- g_cnt = 0;
- reset_menu_state();
- break;
- }
- break;
- }
- case CURRENT_STATUS_UNSET_CROP_SCREEN_SOURCE: {
- value = atoi(cmd);
- _webrtc_screen_source_unset_crop(0, value);
- reset_menu_state();
- break;
}
+}
+
+static void interpret(char *cmd)
+{
+ if (!cmd)
+ return;
+
+ if (g_menu_state == CURRENT_STATUS_MAINMENU) {
+ interpret_main_menu_cmd(cmd);
+
+ } else {
+ if (g_menu_state & TEST_MENU_WEBRTC_COMMON)
+ test_webrtc_common(cmd);
+
+ else if (g_menu_state & TEST_MENU_WEBRTC_MEDIA_SOURCE)
+ test_webrtc_media_source(cmd);
+
+ else if (g_menu_state & TEST_MENU_WEBRTC_MEDIA_RENDER)
+ test_webrtc_media_render(cmd);
+
+ else if (g_menu_state & TEST_MENU_WEBRTC_DATA_CHANNEL)
+ test_webrtc_data_channel(cmd);
+
+ else if (g_menu_state & TEST_MENU_APP_SIGNALING)
+ app_setting_and_signaling(cmd);
}
if (g_menu_state != CURRENT_STATUS_TERMINATE)