def __processModeSelectionCommand(self, operation): new_module = self.actionDict[operation][self.ACTION_OPERATION_ID_INDEX] if new_module != self.status_dict["current_mode"]: cmd = [CommandType.INPUT ] + createCommand().setModule("nova").setOperation( "set_mode").setModeArg(new_module).build() self.move_commands.append(cmd) self.status_dict["current_mode"] = new_module
def __writeCoordinates(self, center_x, center_y): x = int(center_x * NovaConfig.FACE_DETECTION_COORDINATE_CORRECTION_X) y = int(center_y * NovaConfig.FACE_DETECTION_COORDINATE_CORRECTION_Y) cmd = createCommand().setModule("track_object").setOperation( "set_coordinates").setArgs([x, y]).build() self.serial_comm.writeCommand(cmd) self.commands_send += 1
def __togglePIDcontrollerOnOff(self, module): if module in self.pid_index: asset = self.__determinePIDasset(module) print( f"Toggled PID controller {asset} for module {module} auto/manual" ) cmd = [CommandType.INPUT] + createCommand().setModule( module).setAsset(asset).setOperation("toggle_auto").build() self.move_commands.append(cmd)
def __processMoveCommand(self, move, positive_direction): degrees = NovaConfig.EXTERNAL_INPUT_STEPSIZE_DEGREES if positive_direction else -NovaConfig.EXTERNAL_INPUT_STEPSIZE_DEGREES asset = self.actionDict[move][self.ACTION_OPERATION_ID_INDEX] args = [degrees] cmd = [ CommandType.INPUT ] + createCommand().setModule("external_input").setAsset( asset).setOperation("set_degree_steps").setArgs(args).build() self.move_commands.append(cmd)
def __createCommandFromMouseMove(self, mouse_mode, axis, direction, degrees): parts_of_id = ['MOUSE', mouse_mode, axis, direction] mouse_event_id = '_'.join(parts_of_id) move = self.mouse_index[mouse_event_id] asset = self.actionDict[move][self.ACTION_OPERATION_ID_INDEX] args = [degrees] cmd = [ CommandType.INPUT ] + createCommand().setModule("external_input").setAsset( asset).setOperation("set_degree_steps").setArgs(args).build() self.move_commands.append(cmd)
def __calculateMouseWheelMove(self, flags): if flags < 0: direction = 'PLUS' else: direction = 'MINUS' degrees = NovaConfig.EXTERNAL_INPUT_STEPSIZE_DEGREES if direction == 'PLUS' else -NovaConfig.EXTERNAL_INPUT_STEPSIZE_DEGREES move = self.mouse_index['MOUSE_SCROLL_' + direction] asset = self.actionDict[move][self.ACTION_OPERATION_ID_INDEX] args = [degrees] cmd = [ CommandType.INPUT ] + createCommand().setModule("external_input").setAsset( asset).setOperation("set_degree_steps").setArgs(args).build() self.move_commands.append(cmd)
def __processTunePIDCommand(self, move): module = self.status_dict["current_mode"] if move == NovaMove.TUNE_CYCLE_PID_CONTROLLER_IN_MODULE: self.__togglePIDcontrollerToTune(module) elif move == NovaMove.TOGGLE_PID_MANUAL_AUTO: self.__togglePIDcontrollerOnOff(module) else: # actual tuning of pid settings (up | down) asset = self.__determinePIDasset(module) pid_values = self.__determinePIDvalues(move, module, asset) args = list( int(x * 1000) for x in pid_values ) # nova command protocol allows only to send 'int', not 'decimal' cmd = [CommandType.INPUT ] + createCommand().setModule(module).setAsset( asset).setOperation("set_tuning").setArgs(args).build() self.move_commands.append(cmd)