mirror of
https://github.com/albfan/miraclecast.git
synced 2025-03-09 23:38:56 +00:00
miracle-wfdctl: first revision which can create TCP connection of WFD session between peers, controled through DBus
In this revision, the procedure of session negotiation is not yet completed but only TCP connection can be established between peers. You can try it by run script `res/miracle-wfdctl-demo` to see how it work.
This commit is contained in:
parent
45e7fea3e5
commit
c590adbd2f
14 changed files with 1694 additions and 291 deletions
|
@ -6,7 +6,6 @@ execute_process(
|
|||
OUTPUT_VARIABLE DBUS_SYSTEM_SERVICES_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd
|
||||
OUTPUT_VARIABLE SYSTEMD_SYSTEM_UNIT_DIR
|
||||
|
@ -17,26 +16,44 @@ configure_file(
|
|||
miracle-wifid.service.cmake
|
||||
miracle-wifid.service
|
||||
)
|
||||
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/miracle-wifid.service
|
||||
DESTINATION ${SYSTEMD_SYSTEM_UNIT_DIR}/
|
||||
)
|
||||
|
||||
install(
|
||||
CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink miracle-wifid.service ${SYSTEMD_SYSTEM_UNIT_DIR}/dbus-org.freedesktop.miracle.wifi.service)"
|
||||
)
|
||||
|
||||
configure_file(
|
||||
miracle-wfdctl.service.cmake
|
||||
miracle-wfdctl.service
|
||||
)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/miracle-wfdctl.service
|
||||
DESTINATION ${SYSTEMD_SYSTEM_UNIT_DIR}/
|
||||
)
|
||||
install(
|
||||
CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink miracle-wfdctl.service ${SYSTEMD_SYSTEM_UNIT_DIR}/dbus-org.freedesktop.miracle.wfd.service)"
|
||||
)
|
||||
|
||||
configure_file(
|
||||
org.freedesktop.miracle.wifi.service.cmake
|
||||
org.freedesktop.miracle.wifi.service
|
||||
)
|
||||
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/org.freedesktop.miracle.wifi.service
|
||||
DESTINATION ${DBUS_SYSTEM_SERVICES_DIR}/
|
||||
)
|
||||
|
||||
configure_file(
|
||||
org.freedesktop.miracle.wfd.service.cmake
|
||||
org.freedesktop.miracle.wfd.service
|
||||
)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/org.freedesktop.miracle.wfd.service
|
||||
DESTINATION ${DBUS_SYSTEM_SERVICES_DIR}/
|
||||
)
|
||||
|
||||
install(
|
||||
PROGRAMS miracle-gst gstplayer uibc-viewer
|
||||
DESTINATION bin
|
||||
|
|
34
res/miracle-wfdctl-demo
Executable file
34
res/miracle-wfdctl-demo
Executable file
|
@ -0,0 +1,34 @@
|
|||
#!/bin/bash
|
||||
PS4="> ${0##*/}: "
|
||||
set -x
|
||||
set -e
|
||||
|
||||
if (( $# < 1 )); then
|
||||
echo Usage: ${0##*/} link-index peer-p2p-mac
|
||||
echo eg. sudo ${0##*/} 3 ac:a2:13:6e:f8:2f
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ${#2} != 17 ]]; then
|
||||
echo Invalid peer-p2p-mac: $2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
link_index="_3${1:0:1}${1:1}"
|
||||
p2p_mac="${2//:/_3a}_40$1"
|
||||
wfd_subelems=0000060010107c7032
|
||||
|
||||
busctl set-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Devices/2 org.freedesktop.NetworkManager.Device Managed "b" false
|
||||
killall miracle-wifid || true
|
||||
killall miracle-wfdctl || true
|
||||
miracle-wfdctl &
|
||||
|
||||
sleep 1
|
||||
busctl set-property org.freedesktop.miracle.wifi /org/freedesktop/miracle/wifi/link/$link_index org.freedesktop.miracle.wifi.Link Managed 'b' true
|
||||
sleep 1
|
||||
busctl set-property org.freedesktop.miracle.wifi /org/freedesktop/miracle/wifi/link/$link_index org.freedesktop.miracle.wifi.Link WfdSubelements "s" "$wfd_subelems"
|
||||
busctl set-property org.freedesktop.miracle.wifi /org/freedesktop/miracle/wifi/link/$link_index org.freedesktop.miracle.wifi.Link P2PScanning 'b' true
|
||||
sleep 10
|
||||
busctl call org.freedesktop.miracle.wifi /org/freedesktop/miracle/wifi/peer/$p2p_mac org.freedesktop.miracle.wifi.Peer Connect ss auto ''
|
||||
sleep 10
|
||||
busctl call org.freedesktop.miracle.wfd /org/freedesktop/miracle/wfd/sink/$p2p_mac org.freedesktop.miracle.wfd.Sink StartSession
|
11
res/miracle-wfdctl.service.cmake
Normal file
11
res/miracle-wfdctl.service.cmake
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Miraclecast WiFi Display Control
|
||||
|
||||
[Service]
|
||||
BusName=org.freedesktop.miracle.wfd
|
||||
Environment=PATH=/sbin:/usr/bin
|
||||
Environment=LOG_LEVEL=trace
|
||||
ExecStart=@CMAKE_INSTALL_PREFIX@/bin/miracle-wfdctl
|
||||
|
||||
[Install]
|
||||
Allias=dbus-org.freedesktop.miracle.wfd.service
|
|
@ -23,21 +23,28 @@
|
|||
<policy context="default">
|
||||
<deny send_destination="org.freedesktop.miracle"/>
|
||||
<deny send_destination="org.freedesktop.miracle.wifi"/>
|
||||
<deny send_destination="org.freedesktop.miracle.wfd"/>
|
||||
|
||||
<allow send_destination="org.freedesktop.miracle"
|
||||
send_interface="org.freedesktop.DBus.Introspectable"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wifi"
|
||||
send_interface="org.freedesktop.DBus.Introspectable"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wfd"
|
||||
send_interface="org.freedesktop.DBus.Introspectable"/>
|
||||
|
||||
<allow send_destination="org.freedesktop.miracle"
|
||||
send_interface="org.freedesktop.DBus.Peer"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wifi"
|
||||
send_interface="org.freedesktop.DBus.Peer"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wfd"
|
||||
send_interface="org.freedesktop.DBus.Peer"/>
|
||||
|
||||
<allow send_destination="org.freedesktop.miracle"
|
||||
send_interface="org.freedesktop.DBus.ObjectManager"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wifi"
|
||||
send_interface="org.freedesktop.DBus.ObjectManager"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wfd"
|
||||
send_interface="org.freedesktop.DBus.ObjectManager"/>
|
||||
|
||||
<allow send_destination="org.freedesktop.miracle"
|
||||
send_interface="org.freedesktop.DBus.Properties"
|
||||
|
@ -45,6 +52,9 @@
|
|||
<allow send_destination="org.freedesktop.miracle.wifi"
|
||||
send_interface="org.freedesktop.DBus.Properties"
|
||||
send_member="Get"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wfd"
|
||||
send_interface="org.freedesktop.DBus.Properties"
|
||||
send_member="Get"/>
|
||||
|
||||
<allow send_destination="org.freedesktop.miracle"
|
||||
send_interface="org.freedesktop.DBus.Properties"
|
||||
|
@ -52,9 +62,13 @@
|
|||
<allow send_destination="org.freedesktop.miracle.wifi"
|
||||
send_interface="org.freedesktop.DBus.Properties"
|
||||
send_member="GetAll"/>
|
||||
<allow send_destination="org.freedesktop.miracle.wfd"
|
||||
send_interface="org.freedesktop.DBus.Properties"
|
||||
send_member="GetAll"/>
|
||||
|
||||
<allow receive_sender="org.freedesktop.miracle"/>
|
||||
<allow receive_sender="org.freedesktop.miracle.wifi"/>
|
||||
<allow receive_sender="org.freedesktop.miracle.wfd"/>
|
||||
</policy>
|
||||
|
||||
</busconfig>
|
||||
|
|
5
res/org.freedesktop.miracle.wfd.service.cmake
Normal file
5
res/org.freedesktop.miracle.wfd.service.cmake
Normal file
|
@ -0,0 +1,5 @@
|
|||
[D-BUS Service]
|
||||
Name=org.freedesktop.miracle.wfd
|
||||
Exec=/bin/sh -c 'PATH=/sbin:/usr/bin LOG_LEVEL=trace @CMAKE_INSTALL_PREFIX@/bin/miracle-wfdctl'
|
||||
User=root
|
||||
SystemdService=dbus-org.freedesktop.miracle.wfd.service
|
Loading…
Add table
Add a link
Reference in a new issue