def test_selector(): _log = Logger("sel-test", Level.INFO) # _i2c_scanner = I2CScanner(Level.WARN) # if not _i2c_scanner.has_address([0x0F]): # _log.warning('test ignored: no rotary encoder found.') # return _selector = None try: # read YAML configuration _loader = ConfigLoader(Level.INFO) filename = 'config.yaml' _config = _loader.configure(filename) _selector = Selector(_config, Level.INFO) _count = 0 _updates = 0 _rate = Rate(20) _last_value = 0 _limit = 45 _log.info('live-updating from rotary encoder...') while _updates < _limit: _value = _selector.read() if _value != _last_value: _updates += 1 _log.info(Style.BRIGHT + 'returned value: {:d}; updates remaining: {:d}'. format(_value, _limit - _updates)) else: _log.info(Style.DIM + 'returned value: {:d}; updates remaining: {:d}'. format(_value, _limit - _updates)) _last_value = _value _count += 1 if _count % 33 == 0: _log.info('waiting…') _rate.wait() finally: if _selector: _selector.reset()
args = parser.parse_args() LOG_FN = 'log/scl_agent_%s.log' % str(args.sw_id) \ if args.log2file else None LEVEL = logging.DEBUG if args.debug else logging.INFO logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y%m%d %H:%M:%S', level=LEVEL, filename=LOG_FN, filemode='w') logger = logging.getLogger(__name__) timer = Timer(logger) streams = scl.Streams(logger) selector = Selector() scl2sw = scl.Scl2Sw(local_ctrl_host, local_ctrl_port, streams, logger) if args.channel == 'udp': scl2scl = scl.Scl2SclUdp(streams, logger, agent_list[args.sw_id], scl_agent_port, scl_proxy_port) else: scl2scl = scl.Scl2SclTcp(streams, logger, agent_list[args.sw_id], proxy_list, scl_proxy_port, timer) timer.start() # another thread, daemonize while True: timer.wait(selector) scl2scl.wait(selector) scl2sw.wait(selector) lists = selector.block()