blob: 98230289f93fee3575e6337a5d103eb3653960e2 [file] [log] [blame]
import vhal_consts_2_0 as c
from vhal_emulator import Vhal
import argparse
import json
import sys
import array
vhal_types = c.vhal_types_2_0
def propType(con):
return getattr(c,con)
def parseVal(val, valType):
if valType in vhal_types.TYPE_STRING:
return str(val)
elif valType in vhal_types.TYPE_INT32:
return int(val)
elif valType in vhal_types.TYPE_INT32S:
return map(int, val.split(','))
elif valType in vhal_types.TYPE_INT64:
return long(val)
elif valType in vhal_types.TYPE_INT64S:
return map(long, val.split(','))
elif valType in vhal_types.TYPE_FLOAT:
return float(val)
elif valType in vhal_types.TYPE_FLOATS:
return map(float, val.split(','))
elif valType in vhal_types.TYPE_MIXED:
print val
return json.loads(val)
else:
raise ValueError('Property value type not recognized:', valType)
return
def main():
parser = argparse.ArgumentParser(
description='Execute vehicle simulation to simulate actual car sceanrios.')
parser.add_argument(
'-s',
type=str,
action='store',
dest='device',
default=None,
help='Device serial number. Optional')
parser.add_argument(
'--property',
type=propType,
default=c.VEHICLEPROPERTY_EV_CHARGE_PORT_OPEN,
help='Property name from vhal_consts_2_0.py, e.g. VEHICLEPROPERTY_EV_CHARGE_PORT_OPEN')
parser.add_argument(
'--area',
default=0,
type=int,
help='Area id for the property, "0" for global')
parser.add_argument(
'--value',
type=str,
help='Property value. If the value is MIXED type, you should provide the JSON string \
of the value, e.g. \'{"int32_values": [0, 291504647], "int64_values": [1000000], \
"float_values": [0.0, 30, 0.1]}\' which is for fake data generation controlling \
property in default VHAL. If the value is array, use comma to split values')
args = parser.parse_args()
if not args.property:
print 'Project is required. Use --help to see options.'
sys.exit(1)
executeCommand(args);
def executeCommand(args):
# Create an instance of vhal class. Need to pass the vhal_types constants.
v = Vhal(c.vhal_types_2_0, args.device);
# Get the property config (if desired)
# property = args.property;
print args.property
#i = c.VEHICLEPROPERTY_EV_CHARGE_PORT_OPEN
v.getConfig(args.property);
# Get the response message to getConfig()
reply = v.rxMsg();
print(reply);
value = parseVal(args.value, reply.config[0].value_type)
v.setProperty(args.property, args.area, value);
# Get the response message to setProperty()
reply = v.rxMsg();
print(reply);
if __name__=="__main__":
main()