#!/usr/bin/python3

import dbus
import sys

bus = dbus.SystemBus()

if len(sys.argv) == 3:
	path = sys.argv[1]
	alphabet = sys.argv[2]
elif len(sys.argv) == 2:
	manager = dbus.Interface(bus.get_object('org.ofono', '/'),
						'org.ofono.Manager')
	modems = manager.GetModems()
	path = modems[0][0]
	alphabet = sys.argv[1]
else:
	print("%s [PATH] turkish|spanish|portuguese|bengali|gujarati|hindi \
		      |kannada|malayalam|oriya|punjabi|tamil|telugu|urdu" %
			(sys.argv[0]))
	sys.exit(1)

print("Setting alphabet for modem %s..." % path)
sms = dbus.Interface(bus.get_object('org.ofono', path),
					'org.ofono.MessageManager')

sms.SetProperty("Alphabet", dbus.String(alphabet));
