import argparse
import asyncio
import logging
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
import hidiocore.client
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
class MyHidIoClient(hidiocore.client.HidIoClient):
async def on_connect(self, cap, cap_auth):
logger.info("Connected!")
print("Connected API Call", await cap.alive().a_wait())
async def on_disconnect(self):
logger.info("Disconnected!")
def on_nodesupdate(self, nodes):
print("Nodes Update", nodes)
async def main(args):
client = MyHidIoClient('Python example.py')
_tasks = [ asyncio.gather(
*[client.connect(auth=hidiocore.client.HidIoClient.AUTH_BASIC)],
return_exceptions=True
)
]
while client.retry_connection_status():
if client.capability_hidioserver():
try:
print("API Call", await asyncio.wait_for(
client.capability_hidioserver().alive().a_wait(),
timeout=2.0
))
print("API Call", await asyncio.wait_for(
client.nodes(),
timeout=2.0
))
if args.single:
return
except asyncio.TimeoutError:
logger.info("Alive timeout.")
continue
await asyncio.sleep(5)
parser = argparse.ArgumentParser(description='Example HID-IO client library for Python')
parser.add_argument('--single', action='store_true')
args = parser.parse_args()
try:
loop = asyncio.get_event_loop()
loop.run_until_complete(main(args))
except KeyboardInterrupt:
logger.warning("Ctrl+C detected, exiting...")
sys.exit(1)