#!/usr/bin/python

from __future__ import absolute_import, print_function, unicode_literals

import sys
import time
import dbus
import socket
from optparse import OptionParser, make_option

bus = dbus.SystemBus()

manager = dbus.Interface(bus.get_object("org.bluez", "/"),
						"org.bluez.Manager")
option_list = [
		make_option("-i", "--device", action="store",
				type="string", dest="dev_id"),
		]
parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

if options.dev_id:
	adapter_path = manager.FindAdapter(options.dev_id)
else:
	adapter_path = manager.DefaultAdapter()

adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
							"org.bluez.Adapter")

if (len(args) < 1):
	print("Usage: %s <socket_name> [service]" % (sys.argv[0]))
	sys.exit(1)

socket_name = args[0]

if (len(args) < 2):
	service = "spp"
else:
	service = args[1]

sk = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sk.bind(socket_name)
sk.listen(1)

proxy_manager = dbus.Interface(bus.get_object("org.bluez", adapter_path),
						"org.bluez.SerialProxyManager")
proxy_path = proxy_manager.CreateProxy(service, socket_name)

proxy = dbus.Interface(bus.get_object("org.bluez", proxy_path),
							"org.bluez.SerialProxy")
proxy.Enable()

conn, addr = sk.accept()

print("Waiting for message")

while 1:
	data = conn.recv(1024)
	if data:
		print(data)
		break

proxy.Disable()
proxy_manager.RemoveProxy(proxy_path)
conn.close()
