def SetParameter(self, request: SetParameterRequest, context: Any) -> None: """ Sends a SetParameterValues message. Used for testing only. Different data models will have different names for the same parameter. Whatever name that the data model uses, we call the 'parameter path', eg. "Device.DeviceInfo.X_BAICELLS_COM_GPS_Status" We denote 'ParameterName' to be a standard string name for equivalent parameters between different data models """ # Parse the request if request.HasField('value_int'): value = (request.value_int, 'int') elif request.HasField('value_bool'): value = (request.value_bool, 'boolean') elif request.HasField('value_string'): value = (request.value_string, 'string') else: context.set_details('SetParameter: Unsupported type %d', request.type) context.set_code(grpc.StatusCode.INVALID_ARGUMENT) return # Update the handler so it will set the parameter value parameter_path = request.parameter_name handler = self._get_handler(request.device_serial) data_model = handler.data_model param_name = data_model.get_parameter_name_from_path(parameter_path) handler.set_parameter_asap(param_name, value)
def set_parameter(client, args): message = SetParameterRequest() message.device_serial = args.device_serial message.parameter_name = args.parameter_name if args.data_type == 'bool': if args.value.lower() == 'true': message.value_bool = True elif args.value.lower() == 'false': message.value_bool = False else: raise TypeError("Bool values should be True or False") elif args.data_type == 'string': message.value_string = str(args.value) elif args.data_type == 'int': message.value_int = int(args.value) else: raise TypeError('Unknown type %s' % args.data_type) client.SetParameter(message)