| 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() |