#!/usr/bin/python
#
# A crappy script to change the volume on my sony BT speaker
# and probably other crap using AVRCP
#
# Distrubted under the "I don't give a crap what you do with it" license!
#
# pee@erkkila.org
#
#

import gobject

import logging
import sys
import dbus
import dbus.service
import dbus.mainloop.glib

if __name__ == '__main__':

	logging.basicConfig(level=logging.INFO)
	log = logging.getLogger('btv')

	if len(sys.argv) != 3:
		log.error("Use: ptv.py <XX:XX:XX:XX:XX:XX> <up|down>")
		sys.exit(1)

#	deviceID = "00:1D:BA:A5:EB:AD"
	deviceID = sys.argv[1]
	log.info("DeviceID:%s", deviceID)

	command = sys.argv[2].lower()
	log.debug("Command:%s", command)

	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

	bus = dbus.SystemBus()
	manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager")

	adapterPath = manager.DefaultAdapter()
	log.debug('default adapter path: %s',adapterPath)

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

	devicePath = ""
	try:
		devicePath = adapter.FindDevice(deviceID)
	except org.bluez.Error.DoesNotExist:
		log.info("Creating device %s", deviceID)
		devicePath = adapter.CreateDevice(deviceID)
	except org.bluez.Error.InvalidArguments, err:
		log.error('ERROR: %s\n' % str(err))
		sys.exit(1)

	audio = dbus.Interface(bus.get_object("org.bluez", devicePath), "org.bluez.Audio")

	try:
		audio.Connect()
#
# FUCK PYTHON!
#
#	except org.bluez.Error.AlreadyConnected:
#	except org.bluez.Error.DoesNotExist:
#	except org.bluez.Error.AlreadyConnected, ae:
#		log.debug("Already connection")
	except Exception, err:
		log.error("Error: %s\n", str(err))
#		sys.exit(1)

#	device = dbus.Interface(bus.get_object("org.bluez", devicePath), "org.bluez.Device")
	
	control = dbus.Interface(bus.get_object("org.bluez", devicePath), "org.bluez.Control")

	if command == "up":
		control.VolumeUp()
	elif command == "down":
		control.VolumeDown()
	else:
		log.error("Unknown command:%s:", command)








