1
0
Fork 0
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:
Derek Dai 2017-01-24 15:43:25 +08:00
parent 45e7fea3e5
commit c590adbd2f
No known key found for this signature in database
GPG key ID: E109CC97553EF009
14 changed files with 1694 additions and 291 deletions

View file

@ -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
View 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

View 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

View file

@ -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>

View 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