Added cleanup code; Update SMBus emulator

This commit is contained in:
Marius Schiffer
2015-08-28 00:44:36 +02:00
parent ebf7871bdc
commit 4c60dcdc4f
2 changed files with 15 additions and 7 deletions

View File

@@ -26,6 +26,10 @@ import asyncio
from ledd import controller, VERSION from ledd import controller, VERSION
from ledd.decorators import add_action from ledd.decorators import add_action
from multiprocessing import Process
log = logging.getLogger(__name__)
clients = {} # task -> (reader, writer)
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@@ -60,19 +64,18 @@ class Daemon:
self.controllers = controller.Controller.from_db(self.sqldb) self.controllers = controller.Controller.from_db(self.sqldb)
log.debug(self.controllers) log.debug(self.controllers)
logging.getLogger("asyncio").setLevel(logging.DEBUG) logging.getLogger("asyncio").setLevel(logging.DEBUG)
self.loop = asyncio.get_event_loop() self.loop = asyncio.get_event_loop()
self.loop.set_debug(True)
coro = self.loop.create_server(LedDProtocol, coro = self.loop.create_server(LedDProtocol,
self.config.get(self.daemonSection, 'host', fallback='0.0.0.0'), self.config.get(self.daemonSection, 'host', fallback='0.0.0.0'),
self.config.get(self.daemonSection, 'port', fallback=1425)) self.config.get(self.daemonSection, 'port', fallback=1425))
self.loop.run_until_complete(coro) server = self.loop.run_until_complete(coro)
self.loop.run_forever() self.loop.run_forever()
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit):
log.info("Exiting") log.info("Exiting")
self.sqldb.close() self.sqldb.close()
self.loop.run_until_complete(server.wait_closed())
self.loop.close() self.loop.close()
sys.exit(0) sys.exit(0)
@@ -244,7 +247,7 @@ class LedDProtocol(asyncio.Protocol):
self.transport = transport self.transport = transport
def data_received(self, data): def data_received(self, data):
log.info("Received: %s", data.decode()) log.info("Received: %s\nfrom: ", data.decode(), self.transport.get_extra_info("peername"))
self.select_task(data) self.select_task(data)
def select_task(self, data): def select_task(self, data):

View File

@@ -27,17 +27,22 @@ if "smbus" not in (name for loader, name, ispkg in iter_modules()):
self.i2c_address = i2c_address self.i2c_address = i2c_address
self.channels = {} self.channels = {}
def write_word_data(self, cmd, val): def write_word_data(self, cmd, val, *args):
if (cmd - 6) % 4 == 0: if (cmd - 6) % 4 == 0:
self.channels[(cmd - 6) / 4] = val self.channels[(cmd - 6) / 4] = val
def read_word_data(self, cmd): def read_word_data(self, addr, cmd, *args):
return 0
return self.channels[(cmd - 8) / 4] return self.channels[(cmd - 8) / 4]
class SMBusModule:
SMBus = SMBus
import sys import sys
sys.modules['smbus'] = SMBus sys.modules['smbus'] = SMBusModule
sys.modules['smbus'].SMBus = SMBus
import ledd.daemon import ledd.daemon
if __name__ == "__main__": if __name__ == "__main__":