attenuation-control: Add scripts to control the attenuation
Xmlrpc client/server application to control the digital attenuators installed in the lava testbed. Implements AR_VUL-64. Signed-off-by: Thomas Klaehn <thomas.klaehn@u-blox.com>
This commit is contained in:
0
source/attenuation_control_client/__init__.py
Normal file
0
source/attenuation_control_client/__init__.py
Normal file
65
source/attenuation_control_client/__main__.py
Normal file
65
source/attenuation_control_client/__main__.py
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import sys
|
||||
from xmlrpc.client import ServerProxy
|
||||
|
||||
DEFAULT_PORT = "8231"
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='%(levelname)s %(message)s')
|
||||
LOG = logging.getLogger("att_ctrl_client")
|
||||
|
||||
def parse_args():
|
||||
"""Command line argument parser"""
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("host", help="Hostname or ip address the server is \
|
||||
serving on. (e.g. 'attctrl:8231 or 192.168.1.16'")
|
||||
parser.add_argument('attenuator', help="Attenuator to be set [0..7]")
|
||||
parser.add_argument('attenuation', help="Attenuation to be set [0.0 .. 31.5]")
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
def host_port(data):
|
||||
'''Determine hostname/address and port.
|
||||
|
||||
Args:
|
||||
data (str): Hostname/address with optional port (e.g. 'localhost:1234'
|
||||
or '192.168.0.1').
|
||||
|
||||
Returns:
|
||||
str: Hostname/address
|
||||
str: Port
|
||||
'''
|
||||
tmp = data.split(":")
|
||||
port = DEFAULT_PORT
|
||||
host = tmp[0]
|
||||
|
||||
if len(tmp) > 1:
|
||||
port = tmp[1]
|
||||
return host, port
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
host, port = host_port(args.host)
|
||||
client = ServerProxy('http://{}:{}'.format(host, port))
|
||||
|
||||
try:
|
||||
dev = int(args.attenuator)
|
||||
except ValueError:
|
||||
LOG.error("attenuator needs to be convertible into int.")
|
||||
return 1
|
||||
try:
|
||||
val = float(args.attenuation)
|
||||
except ValueError:
|
||||
LOG.error("attenuation needs to be convertible into float.")
|
||||
return 1
|
||||
|
||||
ret = client.set_attenuation(dev, val)
|
||||
|
||||
LOG.info("xmlrpcclient: set_attenuation result: {}.".format(ret))
|
||||
return ret
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
Reference in New Issue
Block a user