Mercurial > ~darius > hgwebdir.cgi > epro
diff velib_python/test/fixture_vedbus.py @ 8:9c0435a617db
Import velib_python
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Sun, 05 Dec 2021 14:35:36 +1030 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/velib_python/test/fixture_vedbus.py Sun Dec 05 14:35:36 2021 +1030 @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from dbus.mainloop.glib import DBusGMainLoop +import dbus +import dbus.service +import inspect +import platform +import pprint +import sys +import os + +# our own packages +sys.path.insert(1, os.path.join(os.path.dirname(__file__), '../')) +from gi.repository import GLib +from vedbus import VeDbusItemExport + +# Dictionary containing all objects exported to dbus +dbusObjects = {} + +def changerequest(path, newvalue): + if newvalue < 100: + return True + else: + return False + +def gettext(path, value): + return 'gettexted %s %s' % (path, value) + +def main(argv): + global dbusObjects + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + # Connect to session bus whenever present, else use the system bus + dbusConn = dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus() + + # Register ourserves on the dbus as a service + name = dbus.service.BusName("com.victronenergy.dbusexample", dbusConn) + + # Create the management objects, as specified in the ccgx dbus-api document + + # Keep a reference in the global dictionary. Without this they would be removed by + # garbage collector again. + dbusObjects['string'] = VeDbusItemExport(dbusConn, '/String', 'this is a string') + dbusObjects['int'] = VeDbusItemExport(dbusConn, '/Int', 40000) + dbusObjects['negativeInt'] = VeDbusItemExport(dbusConn, '/NegativeInt', -10) + dbusObjects['float'] = VeDbusItemExport(dbusConn, '/Float', 1.5) + dbusObjects['invalid'] = VeDbusItemExport(dbusConn, '/Invalid', None) + dbusObjects['byte'] = VeDbusItemExport(dbusConn, '/Byte', dbus.Byte(84)) + dbusObjects['writeable'] = VeDbusItemExport(dbusConn, '/Writeable', 'original', writeable=True) + dbusObjects['not-writeable'] = VeDbusItemExport(dbusConn, '/NotWriteable', 'original', writeable=False) + + dbusObjects['not-writeable with cb'] = VeDbusItemExport(dbusConn, '/WriteableUpTo100', + 'original', writeable=True, onchangecallback=changerequest) + + dbusObjects['gettextcallback'] = VeDbusItemExport(dbusConn, '/Gettextcallback', + '10', gettextcallback=gettext, writeable=True) + + mainloop = GLib.MainLoop() + print("up and running") + sys.stdout.flush() + + mainloop.run() + +main("")