From 626c69d96e03e7b704402f544c0db27d7faff154 Mon Sep 17 00:00:00 2001 From: Avinash Pandey Date: Wed, 20 Sep 2023 16:30:37 +0530 Subject: [PATCH 1/4] modified wifi supplicant for windows 10 --- src/ctl/sinkctl.c | 41 +++++++++++++++++++++++++++++++++++++ src/wifi/wifid-supplicant.c | 10 ++++++++- src/wifi/wifid.c | 2 +- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/ctl/sinkctl.c b/src/ctl/sinkctl.c index cecf667..1dbbc8f 100644 --- a/src/ctl/sinkctl.c +++ b/src/ctl/sinkctl.c @@ -490,7 +490,48 @@ static void spawn_gst(struct ctl_sink *s) sink_pid = pid; } } +void launch_vlc_player(struct ctl_sink *s) { + char *argv[64]; + char resolution[64]; + char port[64]; + char uibc_portStr[64]; + int i = 0; + argv[i++] = player; + sprintf(port, "rtp://@:%d", rstp_port); + argv[i++] = port; + + if (s->hres && s->vres) { + sprintf(resolution, "%dx%d", s->hres, s->vres); + argv[i++] = "-r"; + argv[i++] = resolution; + } + + argv[i] = NULL; + + i = 0; + size_t size = 0; + while (argv[i]) { + size += strlen(argv[i++]) + 1; + } + + char* player_command = malloc(size); + i = 0; + strcpy(player_command, argv[i++]); + while (argv[i]) { + strcat(player_command, " "); + strcat(player_command, argv[i++]); + } + log_debug("player command: %s", player_command); + if (execvpe(argv[0], argv, environ) < 0) { + cli_debug("stream player failed (%d): %m", errno); + int i = 0; + cli_debug("printing environment: "); + while (environ[i]) { + cli_debug("%s", environ[i++]); + } + } +} void launch_player(struct ctl_sink *s) { char *argv[64]; char resolution[64]; diff --git a/src/wifi/wifid-supplicant.c b/src/wifi/wifid-supplicant.c index 9d8ef91..97a6346 100644 --- a/src/wifi/wifid-supplicant.c +++ b/src/wifi/wifid-supplicant.c @@ -2629,8 +2629,16 @@ static int supplicant_write_config(struct supplicant *s) "config_methods=%s\n" "driver_param=%s\n" "ap_scan=%s\n" + "persistent_reconnect=1\n" + "p2p_cli_probe=1\n" + "p2p_go_intent=0\n" + "disable_scan_offload=1\n" + "network={\n" + "\tssid=\"mrpixel\"\n" + "\tpsk=b5ee7c4a2a062bec0aecd029b8218054ce6761873af15a7349730bf5a32e0ba8\n" + "}\n" "# End of configuration\n", - s->l->friendly_name ?: "unknown", + "DIRECT-AnuragTesting", "1-0050F204-1", s->l->config_methods ?: "pbc", "p2p_device=1", diff --git a/src/wifi/wifid.c b/src/wifi/wifid.c index 86fb3ff..cd72bb5 100644 --- a/src/wifi/wifid.c +++ b/src/wifi/wifid.c @@ -44,7 +44,7 @@ #define STR(x) #x const char *interface_name = NULL; const char *config_methods = NULL; -unsigned int arg_wpa_loglevel = LOG_NOTICE; +unsigned int arg_wpa_loglevel = LOG_DEBUG; bool arg_wpa_syslog = false; bool use_dev = false; bool lazy_managed = false; From 6a4e9fc0849929356e31fac1d3fca56a24e59381 Mon Sep 17 00:00:00 2001 From: Avinash Pandey Date: Thu, 21 Sep 2023 01:00:06 +0530 Subject: [PATCH 2/4] vlc auto start and end --- .gitignore | 2 ++ res/miracle-vlc | 2 +- res/run-vlc.sh | 2 ++ src/ctl/sinkctl.c | 76 ++++++++++++++++++++++------------------------- 4 files changed, 40 insertions(+), 42 deletions(-) create mode 100755 res/run-vlc.sh diff --git a/.gitignore b/.gitignore index dd6862d..9ef78e9 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,6 @@ cmake_install.cmake CMakeCache.txt libmiracle-shared.a install_manifest.txt +.miracle-sink.history +/tags /build/ diff --git a/res/miracle-vlc b/res/miracle-vlc index a4e61c7..d2d18ef 100755 --- a/res/miracle-vlc +++ b/res/miracle-vlc @@ -63,7 +63,7 @@ while getopts "r:d:as:p:h" optname esac done -RUN="vlc rtp://@:$PORT" +RUN="cvlc --no-osd --fullscreen --no-video-title-show --network-caching=50 rtp://@:$PORT" echo "running: $RUN" exec ${RUN} diff --git a/res/run-vlc.sh b/res/run-vlc.sh new file mode 100755 index 0000000..b43ed46 --- /dev/null +++ b/res/run-vlc.sh @@ -0,0 +1,2 @@ +export DISPLAY=:0 && su -c "cvlc --no-osd --no-video-title-show --network-caching=200 rtp://@:7236" letsving +#export DISPLAY=:0 && su -c "cvlc --no-osd --no-video-title-show --network-caching=200 --no-ts-trust-pcr --h264-fps=23 rtp://@:7236" letsving diff --git a/src/ctl/sinkctl.c b/src/ctl/sinkctl.c index 1dbbc8f..41f69df 100644 --- a/src/ctl/sinkctl.c +++ b/src/ctl/sinkctl.c @@ -68,6 +68,7 @@ static struct ctl_peer *running_peer; static struct ctl_peer *pending_peer; void launch_player(struct ctl_sink *s); +void launch_vlc_player(struct ctl_sink *s); char *gst_scale_res; int gst_audio_en = 1; @@ -490,48 +491,8 @@ static void spawn_gst(struct ctl_sink *s) sink_pid = pid; } } -void launch_vlc_player(struct ctl_sink *s) { - char *argv[64]; - char resolution[64]; - char port[64]; - char uibc_portStr[64]; - int i = 0; - argv[i++] = player; - sprintf(port, "rtp://@:%d", rstp_port); - argv[i++] = port; - if (s->hres && s->vres) { - sprintf(resolution, "%dx%d", s->hres, s->vres); - argv[i++] = "-r"; - argv[i++] = resolution; - } - - argv[i] = NULL; - - i = 0; - size_t size = 0; - while (argv[i]) { - size += strlen(argv[i++]) + 1; - } - - char* player_command = malloc(size); - i = 0; - strcpy(player_command, argv[i++]); - while (argv[i]) { - strcat(player_command, " "); - strcat(player_command, argv[i++]); - } - log_debug("player command: %s", player_command); - if (execvpe(argv[0], argv, environ) < 0) { - cli_debug("stream player failed (%d): %m", errno); - int i = 0; - cli_debug("printing environment: "); - while (environ[i]) { - cli_debug("%s", environ[i++]); - } - } -} void launch_player(struct ctl_sink *s) { char *argv[64]; char resolution[64]; @@ -617,9 +578,40 @@ void launch_uibc_daemon(int port) { static void kill_gst(void) { + char *argv[64]; + int i = 0, vlc_pid = 0; + if (sink_pid <= 0) return; + cli_debug("killing vlc_pid 1 : %d", vlc_pid); + char *command = "pgrep vlc"; + cli_debug("killing vlc_pid 2: %d", vlc_pid); + FILE* file = popen(command, "r"); + cli_debug("killing vlc_pid 3: %d", vlc_pid); + + while (fscanf(file, "%d", &vlc_pid) != EOF) { + cli_debug("killing vlc_pid 4: %d", vlc_pid); + kill(vlc_pid, SIGTERM); + } + + pclose(file); + + + /* + argv[i++] = "kill-vlc.sh"; + argv[i++] = "-c"; + + //kill all the vlc players spawned + sprintf(command, "ps -x | grep \"rtp://@:%d", rstp_port); + argv[i++] = command; + + argv[i] = NULL; + + cli_debug("command used to kill vlc : %s", argv[0]); + execvpe(argv[0], argv, environ);*/ + + cli_debug("killing pid : %d", sink_pid); kill(sink_pid, SIGTERM); sink_pid = 0; } @@ -638,6 +630,8 @@ void ctl_fn_sink_disconnected(struct ctl_sink *s) } else { cli_notice("SINK disconnected"); sink_connected = false; + kill_gst(); + cli_notice("Killed Player"); } } @@ -674,8 +668,8 @@ void ctl_fn_peer_free(struct ctl_peer *p) if (p == running_peer) { cli_printf("no longer running on peer %s\n", running_peer->label); - stop_timeout(&sink_timeout); kill_gst(); + stop_timeout(&sink_timeout); ctl_sink_close(sink); running_peer = NULL; stop_timeout(&scan_timeout); From 655d81857750b287acb4893bbda88d940292c45e Mon Sep 17 00:00:00 2001 From: Avinash Pandey Date: Thu, 21 Sep 2023 16:28:20 +0530 Subject: [PATCH 3/4] cleaning --- src/ctl/sinkctl.c | 28 ++++++++-------------------- src/wifi/wifid-supplicant.c | 6 +----- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/ctl/sinkctl.c b/src/ctl/sinkctl.c index 41f69df..aa369d8 100644 --- a/src/ctl/sinkctl.c +++ b/src/ctl/sinkctl.c @@ -68,7 +68,6 @@ static struct ctl_peer *running_peer; static struct ctl_peer *pending_peer; void launch_player(struct ctl_sink *s); -void launch_vlc_player(struct ctl_sink *s); char *gst_scale_res; int gst_audio_en = 1; @@ -584,32 +583,20 @@ static void kill_gst(void) if (sink_pid <= 0) return; - cli_debug("killing vlc_pid 1 : %d", vlc_pid); + cli_debug("killing vlc [start]"); char *command = "pgrep vlc"; - cli_debug("killing vlc_pid 2: %d", vlc_pid); + cli_debug("killing vlc [using command : pgrep vlc]"); FILE* file = popen(command, "r"); - cli_debug("killing vlc_pid 3: %d", vlc_pid); + cli_debug("killing vlc [opening file]"); while (fscanf(file, "%d", &vlc_pid) != EOF) { - cli_debug("killing vlc_pid 4: %d", vlc_pid); + cli_debug("killing vlc [pid : %d]", vlc_pid); kill(vlc_pid, SIGTERM); + cli_debug("killed vlc [pid : %d]", vlc_pid); } pclose(file); - - - /* - argv[i++] = "kill-vlc.sh"; - argv[i++] = "-c"; - - //kill all the vlc players spawned - sprintf(command, "ps -x | grep \"rtp://@:%d", rstp_port); - argv[i++] = command; - - argv[i] = NULL; - - cli_debug("command used to kill vlc : %s", argv[0]); - execvpe(argv[0], argv, environ);*/ + cli_debug(" Closed file, kill [end]"); cli_debug("killing pid : %d", sink_pid); kill(sink_pid, SIGTERM); @@ -630,6 +617,7 @@ void ctl_fn_sink_disconnected(struct ctl_sink *s) } else { cli_notice("SINK disconnected"); sink_connected = false; + cli_notice("Killing Player..."); kill_gst(); cli_notice("Killed Player"); } @@ -668,8 +656,8 @@ void ctl_fn_peer_free(struct ctl_peer *p) if (p == running_peer) { cli_printf("no longer running on peer %s\n", running_peer->label); - kill_gst(); stop_timeout(&sink_timeout); + kill_gst(); ctl_sink_close(sink); running_peer = NULL; stop_timeout(&scan_timeout); diff --git a/src/wifi/wifid-supplicant.c b/src/wifi/wifid-supplicant.c index 97a6346..d8991a3 100644 --- a/src/wifi/wifid-supplicant.c +++ b/src/wifi/wifid-supplicant.c @@ -2633,12 +2633,8 @@ static int supplicant_write_config(struct supplicant *s) "p2p_cli_probe=1\n" "p2p_go_intent=0\n" "disable_scan_offload=1\n" - "network={\n" - "\tssid=\"mrpixel\"\n" - "\tpsk=b5ee7c4a2a062bec0aecd029b8218054ce6761873af15a7349730bf5a32e0ba8\n" - "}\n" "# End of configuration\n", - "DIRECT-AnuragTesting", + s->l->friendly_name ?: "uknown", "1-0050F204-1", s->l->config_methods ?: "pbc", "p2p_device=1", From f882e55e87326b9049cb1bab95ef748e2576d8d0 Mon Sep 17 00:00:00 2001 From: Avinash Pandey Date: Thu, 21 Sep 2023 16:31:39 +0530 Subject: [PATCH 4/4] typo fix --- src/wifi/wifid-supplicant.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wifi/wifid-supplicant.c b/src/wifi/wifid-supplicant.c index d8991a3..ba3a3c5 100644 --- a/src/wifi/wifid-supplicant.c +++ b/src/wifi/wifid-supplicant.c @@ -2634,7 +2634,7 @@ static int supplicant_write_config(struct supplicant *s) "p2p_go_intent=0\n" "disable_scan_offload=1\n" "# End of configuration\n", - s->l->friendly_name ?: "uknown", + s->l->friendly_name ?: "unknown", "1-0050F204-1", s->l->config_methods ?: "pbc", "p2p_device=1",