diff --git a/MAVSDK_SERVER_VERSION b/MAVSDK_SERVER_VERSION index b648a6dd..e5d4cf33 100644 --- a/MAVSDK_SERVER_VERSION +++ b/MAVSDK_SERVER_VERSION @@ -1 +1 @@ -v3.17.4 +v4.0.5 diff --git a/mavsdk/action.py b/mavsdk/action.py index 29c15d9f..5c114d69 100644 --- a/mavsdk/action.py +++ b/mavsdk/action.py @@ -532,7 +532,7 @@ async def return_to_launch(self): """ Send command to return to the launch (takeoff) position and land. - This switches the drone into [Return mode](https://docs.px4.io/master/en/flight_modes/return.html) which + This switches the drone into [Return mode](https://docs.px4.io/main/en/flight_modes_mc/return.html) which generally means it will rise up to a certain altitude to clear any obstacles before heading back to the launch (takeoff) position and land there. @@ -600,6 +600,60 @@ async def goto_location( yaw_deg, ) + async def goto_location_fixedwing( + self, latitude_deg, longitude_deg, absolute_altitude_m, loiter_radius_m + ): + """ + Send command to the drone to fly to a location for fixed-wing aircraft. + + This sends a MAV_CMD_DO_REPOSITION command with a loiter radius. + + The latitude and longitude are given in degrees (WGS84 frame) and the altitude + in meters AMSL (above mean sea level). + + The loiter radius defines the radius of the loiter circle in meters, and its sign + controls the direction: positive is clockwise, negative is counter-clockwise. + A value of 0 is ignored by the autopilot. + + Parameters + ---------- + latitude_deg : double + Latitude (in degrees) + + longitude_deg : double + Longitude (in degrees) + + absolute_altitude_m : float + Altitude AMSL (in meters) + + loiter_radius_m : float + Loiter radius (in meters). Positive: clockwise, negative: counter-clockwise, 0: ignored. + + Raises + ------ + ActionError + If the request fails. The error contains the reason for the failure. + """ + + request = action_pb2.GotoLocationFixedwingRequest() + request.latitude_deg = latitude_deg + request.longitude_deg = longitude_deg + request.absolute_altitude_m = absolute_altitude_m + request.loiter_radius_m = loiter_radius_m + response = await self._stub.GotoLocationFixedwing(request) + + result = self._extract_result(response) + + if result.result != ActionResult.Result.SUCCESS: + raise ActionError( + result, + "goto_location_fixedwing()", + latitude_deg, + longitude_deg, + absolute_altitude_m, + loiter_radius_m, + ) + async def do_orbit( self, radius_m, @@ -964,3 +1018,50 @@ async def set_gps_global_origin( longitude_deg, absolute_altitude_m, ) + + async def set_home( + self, use_current_location, latitude_deg, longitude_deg, absolute_altitude_m + ): + """ + Set home. + + Sets the home position. + + Parameters + ---------- + use_current_location : bool + Use current location + + latitude_deg : double + Latitude (in degrees) + + longitude_deg : double + Longitude (in degrees) + + absolute_altitude_m : float + Altitude AMSL (in meters) + + Raises + ------ + ActionError + If the request fails. The error contains the reason for the failure. + """ + + request = action_pb2.SetHomeRequest() + request.use_current_location = use_current_location + request.latitude_deg = latitude_deg + request.longitude_deg = longitude_deg + request.absolute_altitude_m = absolute_altitude_m + response = await self._stub.SetHome(request) + + result = self._extract_result(response) + + if result.result != ActionResult.Result.SUCCESS: + raise ActionError( + result, + "set_home()", + use_current_location, + latitude_deg, + longitude_deg, + absolute_altitude_m, + ) diff --git a/mavsdk/action_pb2.py b/mavsdk/action_pb2.py index 1e8ca3e2..97c5a7e0 100644 --- a/mavsdk/action_pb2.py +++ b/mavsdk/action_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x13\x61\x63tion/action.proto\x12\x11mavsdk.rpc.action\x1a\x14mavsdk_options.proto"\x0c\n\nArmRequest"E\n\x0b\x41rmResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x11\n\x0f\x41rmForceRequest"J\n\x10\x41rmForceResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x0f\n\rDisarmRequest"H\n\x0e\x44isarmResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x10\n\x0eTakeoffRequest"I\n\x0fTakeoffResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\r\n\x0bLandRequest"F\n\x0cLandResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x0f\n\rRebootRequest"H\n\x0eRebootResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x11\n\x0fShutdownRequest"J\n\x10ShutdownResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x12\n\x10TerminateRequest"K\n\x11TerminateResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\r\n\x0bKillRequest"F\n\x0cKillResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x17\n\x15ReturnToLaunchRequest"P\n\x16ReturnToLaunchResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"p\n\x13GotoLocationRequest\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x0f\n\x07yaw_deg\x18\x04 \x01(\x02"N\n\x14GotoLocationResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\xd7\x01\n\x0e\x44oOrbitRequest\x12\x10\n\x08radius_m\x18\x01 \x01(\x02\x12\x13\n\x0bvelocity_ms\x18\x02 \x01(\x02\x12\x39\n\x0cyaw_behavior\x18\x03 \x01(\x0e\x32#.mavsdk.rpc.action.OrbitYawBehavior\x12\x1d\n\x0clatitude_deg\x18\x05 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x06 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x07 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN"I\n\x0f\x44oOrbitResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\r\n\x0bHoldRequest"F\n\x0cHoldResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"2\n\x12SetActuatorRequest\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02"M\n\x13SetActuatorResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"R\n\x0fSetRelayRequest\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x30\n\x07setting\x18\x02 \x01(\x0e\x32\x1f.mavsdk.rpc.action.RelayCommand"J\n\x10SetRelayResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x1e\n\x1cTransitionToFixedwingRequest"W\n\x1dTransitionToFixedwingResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult" \n\x1eTransitionToMulticopterRequest"Y\n\x1fTransitionToMulticopterResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x1b\n\x19GetTakeoffAltitudeRequest"f\n\x1aGetTakeoffAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult\x12\x10\n\x08\x61ltitude\x18\x02 \x01(\x02"-\n\x19SetTakeoffAltitudeRequest\x12\x10\n\x08\x61ltitude\x18\x01 \x01(\x02"T\n\x1aSetTakeoffAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult""\n GetReturnToLaunchAltitudeRequest"x\n!GetReturnToLaunchAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult\x12\x1b\n\x13relative_altitude_m\x18\x02 \x01(\x02"?\n SetReturnToLaunchAltitudeRequest\x12\x1b\n\x13relative_altitude_m\x18\x01 \x01(\x02"[\n!SetReturnToLaunchAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"+\n\x16SetCurrentSpeedRequest\x12\x11\n\tspeed_m_s\x18\x01 \x01(\x02"Q\n\x17SetCurrentSpeedResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"e\n\x19SetGpsGlobalOriginRequest\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02"T\n\x1aSetGpsGlobalOriginResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x8d\x04\n\x0c\x41\x63tionResult\x12\x36\n\x06result\x18\x01 \x01(\x0e\x32&.mavsdk.rpc.action.ActionResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xb0\x03\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x02\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x19\n\x15RESULT_COMMAND_DENIED\x10\x05\x12.\n*RESULT_COMMAND_DENIED_LANDED_STATE_UNKNOWN\x10\x06\x12$\n RESULT_COMMAND_DENIED_NOT_LANDED\x10\x07\x12\x12\n\x0eRESULT_TIMEOUT\x10\x08\x12*\n&RESULT_VTOL_TRANSITION_SUPPORT_UNKNOWN\x10\t\x12%\n!RESULT_NO_VTOL_TRANSITION_SUPPORT\x10\n\x12\x1a\n\x16RESULT_PARAMETER_ERROR\x10\x0b\x12\x16\n\x12RESULT_UNSUPPORTED\x10\x0c\x12\x11\n\rRESULT_FAILED\x10\r\x12\x1b\n\x17RESULT_INVALID_ARGUMENT\x10\x0e*\xf3\x01\n\x10OrbitYawBehavior\x12\x32\n.ORBIT_YAW_BEHAVIOR_HOLD_FRONT_TO_CIRCLE_CENTER\x10\x00\x12+\n\'ORBIT_YAW_BEHAVIOR_HOLD_INITIAL_HEADING\x10\x01\x12#\n\x1fORBIT_YAW_BEHAVIOR_UNCONTROLLED\x10\x02\x12\x33\n/ORBIT_YAW_BEHAVIOR_HOLD_FRONT_TANGENT_TO_CIRCLE\x10\x03\x12$\n ORBIT_YAW_BEHAVIOR_RC_CONTROLLED\x10\x04*;\n\x0cRelayCommand\x12\x14\n\x10RELAY_COMMAND_ON\x10\x00\x12\x15\n\x11RELAY_COMMAND_OFF\x10\x01\x32\xf5\x11\n\rActionService\x12\x46\n\x03\x41rm\x12\x1d.mavsdk.rpc.action.ArmRequest\x1a\x1e.mavsdk.rpc.action.ArmResponse"\x00\x12U\n\x08\x41rmForce\x12".mavsdk.rpc.action.ArmForceRequest\x1a#.mavsdk.rpc.action.ArmForceResponse"\x00\x12O\n\x06\x44isarm\x12 .mavsdk.rpc.action.DisarmRequest\x1a!.mavsdk.rpc.action.DisarmResponse"\x00\x12R\n\x07Takeoff\x12!.mavsdk.rpc.action.TakeoffRequest\x1a".mavsdk.rpc.action.TakeoffResponse"\x00\x12I\n\x04Land\x12\x1e.mavsdk.rpc.action.LandRequest\x1a\x1f.mavsdk.rpc.action.LandResponse"\x00\x12O\n\x06Reboot\x12 .mavsdk.rpc.action.RebootRequest\x1a!.mavsdk.rpc.action.RebootResponse"\x00\x12U\n\x08Shutdown\x12".mavsdk.rpc.action.ShutdownRequest\x1a#.mavsdk.rpc.action.ShutdownResponse"\x00\x12X\n\tTerminate\x12#.mavsdk.rpc.action.TerminateRequest\x1a$.mavsdk.rpc.action.TerminateResponse"\x00\x12I\n\x04Kill\x12\x1e.mavsdk.rpc.action.KillRequest\x1a\x1f.mavsdk.rpc.action.KillResponse"\x00\x12g\n\x0eReturnToLaunch\x12(.mavsdk.rpc.action.ReturnToLaunchRequest\x1a).mavsdk.rpc.action.ReturnToLaunchResponse"\x00\x12\x61\n\x0cGotoLocation\x12&.mavsdk.rpc.action.GotoLocationRequest\x1a\'.mavsdk.rpc.action.GotoLocationResponse"\x00\x12R\n\x07\x44oOrbit\x12!.mavsdk.rpc.action.DoOrbitRequest\x1a".mavsdk.rpc.action.DoOrbitResponse"\x00\x12I\n\x04Hold\x12\x1e.mavsdk.rpc.action.HoldRequest\x1a\x1f.mavsdk.rpc.action.HoldResponse"\x00\x12^\n\x0bSetActuator\x12%.mavsdk.rpc.action.SetActuatorRequest\x1a&.mavsdk.rpc.action.SetActuatorResponse"\x00\x12U\n\x08SetRelay\x12".mavsdk.rpc.action.SetRelayRequest\x1a#.mavsdk.rpc.action.SetRelayResponse"\x00\x12|\n\x15TransitionToFixedwing\x12/.mavsdk.rpc.action.TransitionToFixedwingRequest\x1a\x30.mavsdk.rpc.action.TransitionToFixedwingResponse"\x00\x12\x82\x01\n\x17TransitionToMulticopter\x12\x31.mavsdk.rpc.action.TransitionToMulticopterRequest\x1a\x32.mavsdk.rpc.action.TransitionToMulticopterResponse"\x00\x12s\n\x12GetTakeoffAltitude\x12,.mavsdk.rpc.action.GetTakeoffAltitudeRequest\x1a-.mavsdk.rpc.action.GetTakeoffAltitudeResponse"\x00\x12s\n\x12SetTakeoffAltitude\x12,.mavsdk.rpc.action.SetTakeoffAltitudeRequest\x1a-.mavsdk.rpc.action.SetTakeoffAltitudeResponse"\x00\x12\x88\x01\n\x19GetReturnToLaunchAltitude\x12\x33.mavsdk.rpc.action.GetReturnToLaunchAltitudeRequest\x1a\x34.mavsdk.rpc.action.GetReturnToLaunchAltitudeResponse"\x00\x12\x88\x01\n\x19SetReturnToLaunchAltitude\x12\x33.mavsdk.rpc.action.SetReturnToLaunchAltitudeRequest\x1a\x34.mavsdk.rpc.action.SetReturnToLaunchAltitudeResponse"\x00\x12j\n\x0fSetCurrentSpeed\x12).mavsdk.rpc.action.SetCurrentSpeedRequest\x1a*.mavsdk.rpc.action.SetCurrentSpeedResponse"\x00\x12w\n\x12SetGpsGlobalOrigin\x12,.mavsdk.rpc.action.SetGpsGlobalOriginRequest\x1a-.mavsdk.rpc.action.SetGpsGlobalOriginResponse"\x04\x80\xb5\x18\x01\x42\x1f\n\x10io.mavsdk.actionB\x0b\x41\x63tionProtob\x06proto3' + b'\n\x13\x61\x63tion/action.proto\x12\x11mavsdk.rpc.action\x1a\x14mavsdk_options.proto"\x0c\n\nArmRequest"E\n\x0b\x41rmResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x11\n\x0f\x41rmForceRequest"J\n\x10\x41rmForceResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x0f\n\rDisarmRequest"H\n\x0e\x44isarmResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x10\n\x0eTakeoffRequest"I\n\x0fTakeoffResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\r\n\x0bLandRequest"F\n\x0cLandResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x0f\n\rRebootRequest"H\n\x0eRebootResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x11\n\x0fShutdownRequest"J\n\x10ShutdownResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x12\n\x10TerminateRequest"K\n\x11TerminateResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\r\n\x0bKillRequest"F\n\x0cKillResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x17\n\x15ReturnToLaunchRequest"P\n\x16ReturnToLaunchResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"p\n\x13GotoLocationRequest\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x0f\n\x07yaw_deg\x18\x04 \x01(\x02"N\n\x14GotoLocationResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x81\x01\n\x1cGotoLocationFixedwingRequest\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x17\n\x0floiter_radius_m\x18\x04 \x01(\x02"W\n\x1dGotoLocationFixedwingResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\xd7\x01\n\x0e\x44oOrbitRequest\x12\x10\n\x08radius_m\x18\x01 \x01(\x02\x12\x13\n\x0bvelocity_ms\x18\x02 \x01(\x02\x12\x39\n\x0cyaw_behavior\x18\x03 \x01(\x0e\x32#.mavsdk.rpc.action.OrbitYawBehavior\x12\x1d\n\x0clatitude_deg\x18\x05 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x06 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x07 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN"I\n\x0f\x44oOrbitResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\r\n\x0bHoldRequest"F\n\x0cHoldResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"2\n\x12SetActuatorRequest\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02"M\n\x13SetActuatorResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"R\n\x0fSetRelayRequest\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x30\n\x07setting\x18\x02 \x01(\x0e\x32\x1f.mavsdk.rpc.action.RelayCommand"J\n\x10SetRelayResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x1e\n\x1cTransitionToFixedwingRequest"W\n\x1dTransitionToFixedwingResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult" \n\x1eTransitionToMulticopterRequest"Y\n\x1fTransitionToMulticopterResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x1b\n\x19GetTakeoffAltitudeRequest"f\n\x1aGetTakeoffAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult\x12\x10\n\x08\x61ltitude\x18\x02 \x01(\x02"-\n\x19SetTakeoffAltitudeRequest\x12\x10\n\x08\x61ltitude\x18\x01 \x01(\x02"T\n\x1aSetTakeoffAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult""\n GetReturnToLaunchAltitudeRequest"x\n!GetReturnToLaunchAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult\x12\x1b\n\x13relative_altitude_m\x18\x02 \x01(\x02"?\n SetReturnToLaunchAltitudeRequest\x12\x1b\n\x13relative_altitude_m\x18\x01 \x01(\x02"[\n!SetReturnToLaunchAltitudeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"+\n\x16SetCurrentSpeedRequest\x12\x11\n\tspeed_m_s\x18\x01 \x01(\x02"Q\n\x17SetCurrentSpeedResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"e\n\x19SetGpsGlobalOriginRequest\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02"T\n\x1aSetGpsGlobalOriginResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"x\n\x0eSetHomeRequest\x12\x1c\n\x14use_current_location\x18\x01 \x01(\x08\x12\x14\n\x0clatitude_deg\x18\x02 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x03 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x04 \x01(\x02"I\n\x0fSetHomeResponse\x12\x36\n\raction_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.action.ActionResult"\x8d\x04\n\x0c\x41\x63tionResult\x12\x36\n\x06result\x18\x01 \x01(\x0e\x32&.mavsdk.rpc.action.ActionResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xb0\x03\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x02\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x19\n\x15RESULT_COMMAND_DENIED\x10\x05\x12.\n*RESULT_COMMAND_DENIED_LANDED_STATE_UNKNOWN\x10\x06\x12$\n RESULT_COMMAND_DENIED_NOT_LANDED\x10\x07\x12\x12\n\x0eRESULT_TIMEOUT\x10\x08\x12*\n&RESULT_VTOL_TRANSITION_SUPPORT_UNKNOWN\x10\t\x12%\n!RESULT_NO_VTOL_TRANSITION_SUPPORT\x10\n\x12\x1a\n\x16RESULT_PARAMETER_ERROR\x10\x0b\x12\x16\n\x12RESULT_UNSUPPORTED\x10\x0c\x12\x11\n\rRESULT_FAILED\x10\r\x12\x1b\n\x17RESULT_INVALID_ARGUMENT\x10\x0e*\xf3\x01\n\x10OrbitYawBehavior\x12\x32\n.ORBIT_YAW_BEHAVIOR_HOLD_FRONT_TO_CIRCLE_CENTER\x10\x00\x12+\n\'ORBIT_YAW_BEHAVIOR_HOLD_INITIAL_HEADING\x10\x01\x12#\n\x1fORBIT_YAW_BEHAVIOR_UNCONTROLLED\x10\x02\x12\x33\n/ORBIT_YAW_BEHAVIOR_HOLD_FRONT_TANGENT_TO_CIRCLE\x10\x03\x12$\n ORBIT_YAW_BEHAVIOR_RC_CONTROLLED\x10\x04*;\n\x0cRelayCommand\x12\x14\n\x10RELAY_COMMAND_ON\x10\x00\x12\x15\n\x11RELAY_COMMAND_OFF\x10\x01\x32\xcb\x13\n\rActionService\x12\x46\n\x03\x41rm\x12\x1d.mavsdk.rpc.action.ArmRequest\x1a\x1e.mavsdk.rpc.action.ArmResponse"\x00\x12U\n\x08\x41rmForce\x12".mavsdk.rpc.action.ArmForceRequest\x1a#.mavsdk.rpc.action.ArmForceResponse"\x00\x12O\n\x06\x44isarm\x12 .mavsdk.rpc.action.DisarmRequest\x1a!.mavsdk.rpc.action.DisarmResponse"\x00\x12R\n\x07Takeoff\x12!.mavsdk.rpc.action.TakeoffRequest\x1a".mavsdk.rpc.action.TakeoffResponse"\x00\x12I\n\x04Land\x12\x1e.mavsdk.rpc.action.LandRequest\x1a\x1f.mavsdk.rpc.action.LandResponse"\x00\x12O\n\x06Reboot\x12 .mavsdk.rpc.action.RebootRequest\x1a!.mavsdk.rpc.action.RebootResponse"\x00\x12U\n\x08Shutdown\x12".mavsdk.rpc.action.ShutdownRequest\x1a#.mavsdk.rpc.action.ShutdownResponse"\x00\x12X\n\tTerminate\x12#.mavsdk.rpc.action.TerminateRequest\x1a$.mavsdk.rpc.action.TerminateResponse"\x00\x12I\n\x04Kill\x12\x1e.mavsdk.rpc.action.KillRequest\x1a\x1f.mavsdk.rpc.action.KillResponse"\x00\x12g\n\x0eReturnToLaunch\x12(.mavsdk.rpc.action.ReturnToLaunchRequest\x1a).mavsdk.rpc.action.ReturnToLaunchResponse"\x00\x12\x61\n\x0cGotoLocation\x12&.mavsdk.rpc.action.GotoLocationRequest\x1a\'.mavsdk.rpc.action.GotoLocationResponse"\x00\x12|\n\x15GotoLocationFixedwing\x12/.mavsdk.rpc.action.GotoLocationFixedwingRequest\x1a\x30.mavsdk.rpc.action.GotoLocationFixedwingResponse"\x00\x12R\n\x07\x44oOrbit\x12!.mavsdk.rpc.action.DoOrbitRequest\x1a".mavsdk.rpc.action.DoOrbitResponse"\x00\x12I\n\x04Hold\x12\x1e.mavsdk.rpc.action.HoldRequest\x1a\x1f.mavsdk.rpc.action.HoldResponse"\x00\x12^\n\x0bSetActuator\x12%.mavsdk.rpc.action.SetActuatorRequest\x1a&.mavsdk.rpc.action.SetActuatorResponse"\x00\x12U\n\x08SetRelay\x12".mavsdk.rpc.action.SetRelayRequest\x1a#.mavsdk.rpc.action.SetRelayResponse"\x00\x12|\n\x15TransitionToFixedwing\x12/.mavsdk.rpc.action.TransitionToFixedwingRequest\x1a\x30.mavsdk.rpc.action.TransitionToFixedwingResponse"\x00\x12\x82\x01\n\x17TransitionToMulticopter\x12\x31.mavsdk.rpc.action.TransitionToMulticopterRequest\x1a\x32.mavsdk.rpc.action.TransitionToMulticopterResponse"\x00\x12s\n\x12GetTakeoffAltitude\x12,.mavsdk.rpc.action.GetTakeoffAltitudeRequest\x1a-.mavsdk.rpc.action.GetTakeoffAltitudeResponse"\x00\x12s\n\x12SetTakeoffAltitude\x12,.mavsdk.rpc.action.SetTakeoffAltitudeRequest\x1a-.mavsdk.rpc.action.SetTakeoffAltitudeResponse"\x00\x12\x88\x01\n\x19GetReturnToLaunchAltitude\x12\x33.mavsdk.rpc.action.GetReturnToLaunchAltitudeRequest\x1a\x34.mavsdk.rpc.action.GetReturnToLaunchAltitudeResponse"\x00\x12\x88\x01\n\x19SetReturnToLaunchAltitude\x12\x33.mavsdk.rpc.action.SetReturnToLaunchAltitudeRequest\x1a\x34.mavsdk.rpc.action.SetReturnToLaunchAltitudeResponse"\x00\x12j\n\x0fSetCurrentSpeed\x12).mavsdk.rpc.action.SetCurrentSpeedRequest\x1a*.mavsdk.rpc.action.SetCurrentSpeedResponse"\x00\x12w\n\x12SetGpsGlobalOrigin\x12,.mavsdk.rpc.action.SetGpsGlobalOriginRequest\x1a-.mavsdk.rpc.action.SetGpsGlobalOriginResponse"\x04\x80\xb5\x18\x01\x12V\n\x07SetHome\x12!.mavsdk.rpc.action.SetHomeRequest\x1a".mavsdk.rpc.action.SetHomeResponse"\x04\x80\xb5\x18\x01\x42\x1f\n\x10io.mavsdk.actionB\x0b\x41\x63tionProtob\x06proto3' ) _globals = globals() @@ -54,10 +54,14 @@ _globals["_ACTIONSERVICE"].methods_by_name[ "SetGpsGlobalOrigin" ]._serialized_options = b"\200\265\030\001" - _globals["_ORBITYAWBEHAVIOR"]._serialized_start = 3531 - _globals["_ORBITYAWBEHAVIOR"]._serialized_end = 3774 - _globals["_RELAYCOMMAND"]._serialized_start = 3776 - _globals["_RELAYCOMMAND"]._serialized_end = 3835 + _globals["_ACTIONSERVICE"].methods_by_name["SetHome"]._loaded_options = None + _globals["_ACTIONSERVICE"].methods_by_name[ + "SetHome" + ]._serialized_options = b"\200\265\030\001" + _globals["_ORBITYAWBEHAVIOR"]._serialized_start = 3949 + _globals["_ORBITYAWBEHAVIOR"]._serialized_end = 4192 + _globals["_RELAYCOMMAND"]._serialized_start = 4194 + _globals["_RELAYCOMMAND"]._serialized_end = 4253 _globals["_ARMREQUEST"]._serialized_start = 64 _globals["_ARMREQUEST"]._serialized_end = 76 _globals["_ARMRESPONSE"]._serialized_start = 78 @@ -102,58 +106,66 @@ _globals["_GOTOLOCATIONREQUEST"]._serialized_end = 1104 _globals["_GOTOLOCATIONRESPONSE"]._serialized_start = 1106 _globals["_GOTOLOCATIONRESPONSE"]._serialized_end = 1184 - _globals["_DOORBITREQUEST"]._serialized_start = 1187 - _globals["_DOORBITREQUEST"]._serialized_end = 1402 - _globals["_DOORBITRESPONSE"]._serialized_start = 1404 - _globals["_DOORBITRESPONSE"]._serialized_end = 1477 - _globals["_HOLDREQUEST"]._serialized_start = 1479 - _globals["_HOLDREQUEST"]._serialized_end = 1492 - _globals["_HOLDRESPONSE"]._serialized_start = 1494 - _globals["_HOLDRESPONSE"]._serialized_end = 1564 - _globals["_SETACTUATORREQUEST"]._serialized_start = 1566 - _globals["_SETACTUATORREQUEST"]._serialized_end = 1616 - _globals["_SETACTUATORRESPONSE"]._serialized_start = 1618 - _globals["_SETACTUATORRESPONSE"]._serialized_end = 1695 - _globals["_SETRELAYREQUEST"]._serialized_start = 1697 - _globals["_SETRELAYREQUEST"]._serialized_end = 1779 - _globals["_SETRELAYRESPONSE"]._serialized_start = 1781 - _globals["_SETRELAYRESPONSE"]._serialized_end = 1855 - _globals["_TRANSITIONTOFIXEDWINGREQUEST"]._serialized_start = 1857 - _globals["_TRANSITIONTOFIXEDWINGREQUEST"]._serialized_end = 1887 - _globals["_TRANSITIONTOFIXEDWINGRESPONSE"]._serialized_start = 1889 - _globals["_TRANSITIONTOFIXEDWINGRESPONSE"]._serialized_end = 1976 - _globals["_TRANSITIONTOMULTICOPTERREQUEST"]._serialized_start = 1978 - _globals["_TRANSITIONTOMULTICOPTERREQUEST"]._serialized_end = 2010 - _globals["_TRANSITIONTOMULTICOPTERRESPONSE"]._serialized_start = 2012 - _globals["_TRANSITIONTOMULTICOPTERRESPONSE"]._serialized_end = 2101 - _globals["_GETTAKEOFFALTITUDEREQUEST"]._serialized_start = 2103 - _globals["_GETTAKEOFFALTITUDEREQUEST"]._serialized_end = 2130 - _globals["_GETTAKEOFFALTITUDERESPONSE"]._serialized_start = 2132 - _globals["_GETTAKEOFFALTITUDERESPONSE"]._serialized_end = 2234 - _globals["_SETTAKEOFFALTITUDEREQUEST"]._serialized_start = 2236 - _globals["_SETTAKEOFFALTITUDEREQUEST"]._serialized_end = 2281 - _globals["_SETTAKEOFFALTITUDERESPONSE"]._serialized_start = 2283 - _globals["_SETTAKEOFFALTITUDERESPONSE"]._serialized_end = 2367 - _globals["_GETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_start = 2369 - _globals["_GETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_end = 2403 - _globals["_GETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_start = 2405 - _globals["_GETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_end = 2525 - _globals["_SETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_start = 2527 - _globals["_SETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_end = 2590 - _globals["_SETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_start = 2592 - _globals["_SETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_end = 2683 - _globals["_SETCURRENTSPEEDREQUEST"]._serialized_start = 2685 - _globals["_SETCURRENTSPEEDREQUEST"]._serialized_end = 2728 - _globals["_SETCURRENTSPEEDRESPONSE"]._serialized_start = 2730 - _globals["_SETCURRENTSPEEDRESPONSE"]._serialized_end = 2811 - _globals["_SETGPSGLOBALORIGINREQUEST"]._serialized_start = 2813 - _globals["_SETGPSGLOBALORIGINREQUEST"]._serialized_end = 2914 - _globals["_SETGPSGLOBALORIGINRESPONSE"]._serialized_start = 2916 - _globals["_SETGPSGLOBALORIGINRESPONSE"]._serialized_end = 3000 - _globals["_ACTIONRESULT"]._serialized_start = 3003 - _globals["_ACTIONRESULT"]._serialized_end = 3528 - _globals["_ACTIONRESULT_RESULT"]._serialized_start = 3096 - _globals["_ACTIONRESULT_RESULT"]._serialized_end = 3528 - _globals["_ACTIONSERVICE"]._serialized_start = 3838 - _globals["_ACTIONSERVICE"]._serialized_end = 6131 + _globals["_GOTOLOCATIONFIXEDWINGREQUEST"]._serialized_start = 1187 + _globals["_GOTOLOCATIONFIXEDWINGREQUEST"]._serialized_end = 1316 + _globals["_GOTOLOCATIONFIXEDWINGRESPONSE"]._serialized_start = 1318 + _globals["_GOTOLOCATIONFIXEDWINGRESPONSE"]._serialized_end = 1405 + _globals["_DOORBITREQUEST"]._serialized_start = 1408 + _globals["_DOORBITREQUEST"]._serialized_end = 1623 + _globals["_DOORBITRESPONSE"]._serialized_start = 1625 + _globals["_DOORBITRESPONSE"]._serialized_end = 1698 + _globals["_HOLDREQUEST"]._serialized_start = 1700 + _globals["_HOLDREQUEST"]._serialized_end = 1713 + _globals["_HOLDRESPONSE"]._serialized_start = 1715 + _globals["_HOLDRESPONSE"]._serialized_end = 1785 + _globals["_SETACTUATORREQUEST"]._serialized_start = 1787 + _globals["_SETACTUATORREQUEST"]._serialized_end = 1837 + _globals["_SETACTUATORRESPONSE"]._serialized_start = 1839 + _globals["_SETACTUATORRESPONSE"]._serialized_end = 1916 + _globals["_SETRELAYREQUEST"]._serialized_start = 1918 + _globals["_SETRELAYREQUEST"]._serialized_end = 2000 + _globals["_SETRELAYRESPONSE"]._serialized_start = 2002 + _globals["_SETRELAYRESPONSE"]._serialized_end = 2076 + _globals["_TRANSITIONTOFIXEDWINGREQUEST"]._serialized_start = 2078 + _globals["_TRANSITIONTOFIXEDWINGREQUEST"]._serialized_end = 2108 + _globals["_TRANSITIONTOFIXEDWINGRESPONSE"]._serialized_start = 2110 + _globals["_TRANSITIONTOFIXEDWINGRESPONSE"]._serialized_end = 2197 + _globals["_TRANSITIONTOMULTICOPTERREQUEST"]._serialized_start = 2199 + _globals["_TRANSITIONTOMULTICOPTERREQUEST"]._serialized_end = 2231 + _globals["_TRANSITIONTOMULTICOPTERRESPONSE"]._serialized_start = 2233 + _globals["_TRANSITIONTOMULTICOPTERRESPONSE"]._serialized_end = 2322 + _globals["_GETTAKEOFFALTITUDEREQUEST"]._serialized_start = 2324 + _globals["_GETTAKEOFFALTITUDEREQUEST"]._serialized_end = 2351 + _globals["_GETTAKEOFFALTITUDERESPONSE"]._serialized_start = 2353 + _globals["_GETTAKEOFFALTITUDERESPONSE"]._serialized_end = 2455 + _globals["_SETTAKEOFFALTITUDEREQUEST"]._serialized_start = 2457 + _globals["_SETTAKEOFFALTITUDEREQUEST"]._serialized_end = 2502 + _globals["_SETTAKEOFFALTITUDERESPONSE"]._serialized_start = 2504 + _globals["_SETTAKEOFFALTITUDERESPONSE"]._serialized_end = 2588 + _globals["_GETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_start = 2590 + _globals["_GETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_end = 2624 + _globals["_GETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_start = 2626 + _globals["_GETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_end = 2746 + _globals["_SETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_start = 2748 + _globals["_SETRETURNTOLAUNCHALTITUDEREQUEST"]._serialized_end = 2811 + _globals["_SETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_start = 2813 + _globals["_SETRETURNTOLAUNCHALTITUDERESPONSE"]._serialized_end = 2904 + _globals["_SETCURRENTSPEEDREQUEST"]._serialized_start = 2906 + _globals["_SETCURRENTSPEEDREQUEST"]._serialized_end = 2949 + _globals["_SETCURRENTSPEEDRESPONSE"]._serialized_start = 2951 + _globals["_SETCURRENTSPEEDRESPONSE"]._serialized_end = 3032 + _globals["_SETGPSGLOBALORIGINREQUEST"]._serialized_start = 3034 + _globals["_SETGPSGLOBALORIGINREQUEST"]._serialized_end = 3135 + _globals["_SETGPSGLOBALORIGINRESPONSE"]._serialized_start = 3137 + _globals["_SETGPSGLOBALORIGINRESPONSE"]._serialized_end = 3221 + _globals["_SETHOMEREQUEST"]._serialized_start = 3223 + _globals["_SETHOMEREQUEST"]._serialized_end = 3343 + _globals["_SETHOMERESPONSE"]._serialized_start = 3345 + _globals["_SETHOMERESPONSE"]._serialized_end = 3418 + _globals["_ACTIONRESULT"]._serialized_start = 3421 + _globals["_ACTIONRESULT"]._serialized_end = 3946 + _globals["_ACTIONRESULT_RESULT"]._serialized_start = 3514 + _globals["_ACTIONRESULT_RESULT"]._serialized_end = 3946 + _globals["_ACTIONSERVICE"]._serialized_start = 4256 + _globals["_ACTIONSERVICE"]._serialized_end = 6763 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/action_pb2_grpc.py b/mavsdk/action_pb2_grpc.py index 5116ad12..600e1aa2 100644 --- a/mavsdk/action_pb2_grpc.py +++ b/mavsdk/action_pb2_grpc.py @@ -104,6 +104,12 @@ def __init__(self, channel): response_deserializer=action_dot_action__pb2.GotoLocationResponse.FromString, _registered_method=True, ) + self.GotoLocationFixedwing = channel.unary_unary( + "/mavsdk.rpc.action.ActionService/GotoLocationFixedwing", + request_serializer=action_dot_action__pb2.GotoLocationFixedwingRequest.SerializeToString, + response_deserializer=action_dot_action__pb2.GotoLocationFixedwingResponse.FromString, + _registered_method=True, + ) self.DoOrbit = channel.unary_unary( "/mavsdk.rpc.action.ActionService/DoOrbit", request_serializer=action_dot_action__pb2.DoOrbitRequest.SerializeToString, @@ -176,6 +182,12 @@ def __init__(self, channel): response_deserializer=action_dot_action__pb2.SetGpsGlobalOriginResponse.FromString, _registered_method=True, ) + self.SetHome = channel.unary_unary( + "/mavsdk.rpc.action.ActionService/SetHome", + request_serializer=action_dot_action__pb2.SetHomeRequest.SerializeToString, + response_deserializer=action_dot_action__pb2.SetHomeResponse.FromString, + _registered_method=True, + ) class ActionServiceServicer(object): @@ -286,7 +298,7 @@ def ReturnToLaunch(self, request, context): """ Send command to return to the launch (takeoff) position and land. - This switches the drone into [Return mode](https://docs.px4.io/master/en/flight_modes/return.html) which + This switches the drone into [Return mode](https://docs.px4.io/main/en/flight_modes_mc/return.html) which generally means it will rise up to a certain altitude to clear any obstacles before heading back to the launch (takeoff) position and land there. """ @@ -307,6 +319,23 @@ def GotoLocation(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def GotoLocationFixedwing(self, request, context): + """ + Send command to the drone to fly to a location for fixed-wing aircraft. + + This sends a MAV_CMD_DO_REPOSITION command with a loiter radius. + + The latitude and longitude are given in degrees (WGS84 frame) and the altitude + in meters AMSL (above mean sea level). + + The loiter radius defines the radius of the loiter circle in meters, and its sign + controls the direction: positive is clockwise, negative is counter-clockwise. + A value of 0 is ignored by the autopilot. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def DoOrbit(self, request, context): """ Send command do orbit to the drone. @@ -429,6 +458,16 @@ def SetGpsGlobalOrigin(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def SetHome(self, request, context): + """ + Set home. + + Sets the home position. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def add_ActionServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -487,6 +526,11 @@ def add_ActionServiceServicer_to_server(servicer, server): request_deserializer=action_dot_action__pb2.GotoLocationRequest.FromString, response_serializer=action_dot_action__pb2.GotoLocationResponse.SerializeToString, ), + "GotoLocationFixedwing": grpc.unary_unary_rpc_method_handler( + servicer.GotoLocationFixedwing, + request_deserializer=action_dot_action__pb2.GotoLocationFixedwingRequest.FromString, + response_serializer=action_dot_action__pb2.GotoLocationFixedwingResponse.SerializeToString, + ), "DoOrbit": grpc.unary_unary_rpc_method_handler( servicer.DoOrbit, request_deserializer=action_dot_action__pb2.DoOrbitRequest.FromString, @@ -547,6 +591,11 @@ def add_ActionServiceServicer_to_server(servicer, server): request_deserializer=action_dot_action__pb2.SetGpsGlobalOriginRequest.FromString, response_serializer=action_dot_action__pb2.SetGpsGlobalOriginResponse.SerializeToString, ), + "SetHome": grpc.unary_unary_rpc_method_handler( + servicer.SetHome, + request_deserializer=action_dot_action__pb2.SetHomeRequest.FromString, + response_serializer=action_dot_action__pb2.SetHomeResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( "mavsdk.rpc.action.ActionService", rpc_method_handlers @@ -891,6 +940,36 @@ def GotoLocation( _registered_method=True, ) + @staticmethod + def GotoLocationFixedwing( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.action.ActionService/GotoLocationFixedwing", + action_dot_action__pb2.GotoLocationFixedwingRequest.SerializeToString, + action_dot_action__pb2.GotoLocationFixedwingResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + @staticmethod def DoOrbit( request, @@ -1250,3 +1329,33 @@ def SetGpsGlobalOrigin( metadata, _registered_method=True, ) + + @staticmethod + def SetHome( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.action.ActionService/SetHome", + action_dot_action__pb2.SetHomeRequest.SerializeToString, + action_dot_action__pb2.SetHomeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) diff --git a/mavsdk/camera.py b/mavsdk/camera.py index 945974c2..e882c7e5 100644 --- a/mavsdk/camera.py +++ b/mavsdk/camera.py @@ -2830,6 +2830,54 @@ async def track_stop(self, component_id): if result.result != CameraResult.Result.SUCCESS: raise CameraError(result, "track_stop()", component_id) + async def focus_in_step(self, component_id): + """ + Step focus in. + + Parameters + ---------- + component_id : int32_t + Component ID + + Raises + ------ + CameraError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_pb2.FocusInStepRequest() + request.component_id = component_id + response = await self._stub.FocusInStep(request) + + result = self._extract_result(response) + + if result.result != CameraResult.Result.SUCCESS: + raise CameraError(result, "focus_in_step()", component_id) + + async def focus_out_step(self, component_id): + """ + Step focus out. + + Parameters + ---------- + component_id : int32_t + Component ID + + Raises + ------ + CameraError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_pb2.FocusOutStepRequest() + request.component_id = component_id + response = await self._stub.FocusOutStep(request) + + result = self._extract_result(response) + + if result.result != CameraResult.Result.SUCCESS: + raise CameraError(result, "focus_out_step()", component_id) + async def focus_in_start(self, component_id): """ Start focusing in. @@ -2929,3 +2977,106 @@ async def focus_range(self, component_id, range): if result.result != CameraResult.Result.SUCCESS: raise CameraError(result, "focus_range()", component_id, range) + + async def focus_meters(self, component_id, distance_m): + """ + Focus at a distance in meters. + + Note that there is no message to get the valid focus range of the camera, + so this can only be used for cameras where the range is known. + + Parameters + ---------- + component_id : int32_t + Component ID + + distance_m : float + Focus distance in meters + + Raises + ------ + CameraError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_pb2.FocusMetersRequest() + request.component_id = component_id + request.distance_m = distance_m + response = await self._stub.FocusMeters(request) + + result = self._extract_result(response) + + if result.result != CameraResult.Result.SUCCESS: + raise CameraError(result, "focus_meters()", component_id, distance_m) + + async def focus_auto(self, component_id): + """ + Focus automatically. + + Parameters + ---------- + component_id : int32_t + Component ID + + Raises + ------ + CameraError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_pb2.FocusAutoRequest() + request.component_id = component_id + response = await self._stub.FocusAuto(request) + + result = self._extract_result(response) + + if result.result != CameraResult.Result.SUCCESS: + raise CameraError(result, "focus_auto()", component_id) + + async def focus_auto_single(self, component_id): + """ + Single auto focus. Mainly used for still pictures. Usually abbreviated as AF-S. + + Parameters + ---------- + component_id : int32_t + Component ID + + Raises + ------ + CameraError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_pb2.FocusAutoSingleRequest() + request.component_id = component_id + response = await self._stub.FocusAutoSingle(request) + + result = self._extract_result(response) + + if result.result != CameraResult.Result.SUCCESS: + raise CameraError(result, "focus_auto_single()", component_id) + + async def focus_auto_continuous(self, component_id): + """ + Continuous auto focus. Mainly used for dynamic scenes. Abbreviated as AF-C. + + Parameters + ---------- + component_id : int32_t + Component ID + + Raises + ------ + CameraError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_pb2.FocusAutoContinuousRequest() + request.component_id = component_id + response = await self._stub.FocusAutoContinuous(request) + + result = self._extract_result(response) + + if result.result != CameraResult.Result.SUCCESS: + raise CameraError(result, "focus_auto_continuous()", component_id) diff --git a/mavsdk/camera_pb2.py b/mavsdk/camera_pb2.py index 8502fe25..a1d6e298 100644 --- a/mavsdk/camera_pb2.py +++ b/mavsdk/camera_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x13\x63\x61mera/camera.proto\x12\x11mavsdk.rpc.camera\x1a\x14mavsdk_options.proto"7\n\x06Option\x12\x11\n\toption_id\x18\x01 \x01(\t\x12\x1a\n\x12option_description\x18\x02 \x01(\t"w\n\x07Setting\x12\x12\n\nsetting_id\x18\x01 \x01(\t\x12\x1b\n\x13setting_description\x18\x02 \x01(\t\x12)\n\x06option\x18\x03 \x01(\x0b\x32\x19.mavsdk.rpc.camera.Option\x12\x10\n\x08is_range\x18\x04 \x01(\x08"\x95\x01\n\x0eSettingOptions\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\nsetting_id\x18\x02 \x01(\t\x12\x1b\n\x13setting_description\x18\x03 \x01(\t\x12*\n\x07options\x18\x04 \x03(\x0b\x32\x19.mavsdk.rpc.camera.Option\x12\x10\n\x08is_range\x18\x05 \x01(\x08"\xc5\x01\n\x13VideoStreamSettings\x12\x15\n\rframe_rate_hz\x18\x01 \x01(\x02\x12!\n\x19horizontal_resolution_pix\x18\x02 \x01(\r\x12\x1f\n\x17vertical_resolution_pix\x18\x03 \x01(\r\x12\x14\n\x0c\x62it_rate_b_s\x18\x04 \x01(\r\x12\x14\n\x0crotation_deg\x18\x05 \x01(\r\x12\x0b\n\x03uri\x18\x06 \x01(\t\x12\x1a\n\x12horizontal_fov_deg\x18\x07 \x01(\x02"\xd5\x03\n\x0fVideoStreamInfo\x12\x11\n\tstream_id\x18\x01 \x01(\x05\x12\x38\n\x08settings\x18\x02 \x01(\x0b\x32&.mavsdk.rpc.camera.VideoStreamSettings\x12\x44\n\x06status\x18\x03 \x01(\x0e\x32\x34.mavsdk.rpc.camera.VideoStreamInfo.VideoStreamStatus\x12H\n\x08spectrum\x18\x04 \x01(\x0e\x32\x36.mavsdk.rpc.camera.VideoStreamInfo.VideoStreamSpectrum"]\n\x11VideoStreamStatus\x12#\n\x1fVIDEO_STREAM_STATUS_NOT_RUNNING\x10\x00\x12#\n\x1fVIDEO_STREAM_STATUS_IN_PROGRESS\x10\x01"\x85\x01\n\x13VideoStreamSpectrum\x12!\n\x1dVIDEO_STREAM_SPECTRUM_UNKNOWN\x10\x00\x12\'\n#VIDEO_STREAM_SPECTRUM_VISIBLE_LIGHT\x10\x01\x12"\n\x1eVIDEO_STREAM_SPECTRUM_INFRARED\x10\x02"(\n\x10TakePhotoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11TakePhotoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"E\n\x19StartPhotoIntervalRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\ninterval_s\x18\x02 \x01(\x02"T\n\x1aStartPhotoIntervalResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"0\n\x18StopPhotoIntervalRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"S\n\x19StopPhotoIntervalResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult")\n\x11StartVideoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"L\n\x12StartVideoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10StopVideoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11StopVideoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"E\n\x1aStartVideoStreamingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x11\n\tstream_id\x18\x02 \x01(\x05"U\n\x1bStartVideoStreamingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"D\n\x19StopVideoStreamingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x11\n\tstream_id\x18\x02 \x01(\x05"T\n\x1aStopVideoStreamingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"M\n\x0eSetModeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12%\n\x04mode\x18\x02 \x01(\x0e\x32\x17.mavsdk.rpc.camera.Mode"I\n\x0fSetModeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"_\n\x11ListPhotosRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x34\n\x0cphotos_range\x18\x02 \x01(\x0e\x32\x1e.mavsdk.rpc.camera.PhotosRange"\x83\x01\n\x12ListPhotosResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12\x35\n\rcapture_infos\x18\x02 \x03(\x0b\x32\x1e.mavsdk.rpc.camera.CaptureInfo"\x1c\n\x1aSubscribeCameraListRequest"H\n\x12\x43\x61meraListResponse\x12\x32\n\x0b\x63\x61mera_list\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.CameraList"I\n\nModeUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12%\n\x04mode\x18\x02 \x01(\x0e\x32\x17.mavsdk.rpc.camera.Mode"\x16\n\x14SubscribeModeRequest"=\n\x0cModeResponse\x12-\n\x06update\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.ModeUpdate"h\n\x11VideoStreamUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12=\n\x11video_stream_info\x18\x02 \x01(\x0b\x32".mavsdk.rpc.camera.VideoStreamInfo"!\n\x1fSubscribeVideoStreamInfoRequest"O\n\x17VideoStreamInfoResponse\x12\x34\n\x06update\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera.VideoStreamUpdate"\x1d\n\x1bSubscribeCaptureInfoRequest"K\n\x13\x43\x61ptureInfoResponse\x12\x34\n\x0c\x63\x61pture_info\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.camera.CaptureInfo"\xa0\x05\n\x07Storage\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x10\n\x08video_on\x18\x02 \x01(\x08\x12\x19\n\x11photo_interval_on\x18\x03 \x01(\x08\x12\x18\n\x10used_storage_mib\x18\x04 \x01(\x02\x12\x1d\n\x15\x61vailable_storage_mib\x18\x05 \x01(\x02\x12\x19\n\x11total_storage_mib\x18\x06 \x01(\x02\x12\x18\n\x10recording_time_s\x18\x07 \x01(\x02\x12\x19\n\x11media_folder_name\x18\x08 \x01(\t\x12@\n\x0estorage_status\x18\t \x01(\x0e\x32(.mavsdk.rpc.camera.Storage.StorageStatus\x12\x12\n\nstorage_id\x18\n \x01(\r\x12<\n\x0cstorage_type\x18\x0b \x01(\x0e\x32&.mavsdk.rpc.camera.Storage.StorageType"\x91\x01\n\rStorageStatus\x12 \n\x1cSTORAGE_STATUS_NOT_AVAILABLE\x10\x00\x12\x1e\n\x1aSTORAGE_STATUS_UNFORMATTED\x10\x01\x12\x1c\n\x18STORAGE_STATUS_FORMATTED\x10\x02\x12 \n\x1cSTORAGE_STATUS_NOT_SUPPORTED\x10\x03"\xa0\x01\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x1a\n\x16STORAGE_TYPE_USB_STICK\x10\x01\x12\x13\n\x0fSTORAGE_TYPE_SD\x10\x02\x12\x18\n\x14STORAGE_TYPE_MICROSD\x10\x03\x12\x13\n\x0fSTORAGE_TYPE_HD\x10\x07\x12\x17\n\x12STORAGE_TYPE_OTHER\x10\xfe\x01"R\n\rStorageUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12+\n\x07storage\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Storage"\x19\n\x17SubscribeStorageRequest"C\n\x0fStorageResponse\x12\x30\n\x06update\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.camera.StorageUpdate"c\n\x15\x43urrentSettingsUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x34\n\x10\x63urrent_settings\x18\x02 \x03(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"!\n\x1fSubscribeCurrentSettingsRequest"S\n\x17\x43urrentSettingsResponse\x12\x38\n\x06update\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera.CurrentSettingsUpdate"p\n\x1cPossibleSettingOptionsUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12:\n\x0fsetting_options\x18\x02 \x03(\x0b\x32!.mavsdk.rpc.camera.SettingOptions"(\n&SubscribePossibleSettingOptionsRequest"a\n\x1ePossibleSettingOptionsResponse\x12?\n\x06update\x18\x01 \x01(\x0b\x32/.mavsdk.rpc.camera.PossibleSettingOptionsUpdate"V\n\x11SetSettingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12+\n\x07setting\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"L\n\x12SetSettingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"&\n\x0eGetModeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"p\n\x0fGetModeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12%\n\x04mode\x18\x02 \x01(\x0e\x32\x17.mavsdk.rpc.camera.Mode"1\n\x19GetVideoStreamInfoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"\x93\x01\n\x1aGetVideoStreamInfoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12=\n\x11video_stream_info\x18\x02 \x01(\x0b\x32".mavsdk.rpc.camera.VideoStreamInfo")\n\x11GetStorageRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"y\n\x12GetStorageResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12+\n\x07storage\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Storage"1\n\x19GetCurrentSettingsRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"\x8a\x01\n\x1aGetCurrentSettingsResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12\x34\n\x10\x63urrent_settings\x18\x02 \x03(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"8\n GetPossibleSettingOptionsRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"\x97\x01\n!GetPossibleSettingOptionsResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12:\n\x0fsetting_options\x18\x02 \x03(\x0b\x32!.mavsdk.rpc.camera.SettingOptions"V\n\x11GetSettingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12+\n\x07setting\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"y\n\x12GetSettingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12+\n\x07setting\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"@\n\x14\x46ormatStorageRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\nstorage_id\x18\x02 \x01(\x05"O\n\x15\x46ormatStorageResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult",\n\x14ResetSettingsRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"O\n\x15ResetSettingsResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"*\n\x12ZoomInStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"M\n\x13ZoomInStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"+\n\x13ZoomOutStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"N\n\x14ZoomOutStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"\'\n\x0fZoomStopRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"J\n\x10ZoomStopResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"7\n\x10ZoomRangeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\r\n\x05range\x18\x02 \x01(\x02"K\n\x11ZoomRangeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"[\n\x11TrackPointRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x0f\n\x07point_x\x18\x02 \x01(\x02\x12\x0f\n\x07point_y\x18\x03 \x01(\x02\x12\x0e\n\x06radius\x18\x04 \x01(\x02"L\n\x12TrackPointResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"\x85\x01\n\x15TrackRectangleRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\ntop_left_x\x18\x02 \x01(\x02\x12\x12\n\ntop_left_y\x18\x03 \x01(\x02\x12\x16\n\x0e\x62ottom_right_x\x18\x04 \x01(\x02\x12\x16\n\x0e\x62ottom_right_y\x18\x05 \x01(\x02"P\n\x16TrackRectangleResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10TrackStopRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11TrackStopResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"+\n\x13\x46ocusInStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"N\n\x14\x46ocusInStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult",\n\x14\x46ocusOutStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"O\n\x15\x46ocusOutStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10\x46ocusStopRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11\x46ocusStopResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"8\n\x11\x46ocusRangeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\r\n\x05range\x18\x02 \x01(\x02"L\n\x12\x46ocusRangeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"\x96\x03\n\x0c\x43\x61meraResult\x12\x36\n\x06result\x18\x01 \x01(\x0e\x32&.mavsdk.rpc.camera.CameraResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xb9\x02\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x16\n\x12RESULT_IN_PROGRESS\x10\x02\x12\x0f\n\x0bRESULT_BUSY\x10\x03\x12\x11\n\rRESULT_DENIED\x10\x04\x12\x10\n\x0cRESULT_ERROR\x10\x05\x12\x12\n\x0eRESULT_TIMEOUT\x10\x06\x12\x19\n\x15RESULT_WRONG_ARGUMENT\x10\x07\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x08\x12\x1f\n\x1bRESULT_PROTOCOL_UNSUPPORTED\x10\t\x12\x16\n\x12RESULT_UNAVAILABLE\x10\n\x12\x1c\n\x18RESULT_CAMERA_ID_INVALID\x10\x0b\x12\x1d\n\x19RESULT_ACTION_UNSUPPORTED\x10\x0c"q\n\x08Position\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x1b\n\x13relative_altitude_m\x18\x04 \x01(\x02"8\n\nQuaternion\x12\t\n\x01w\x18\x01 \x01(\x02\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12\t\n\x01z\x18\x04 \x01(\x02"B\n\nEulerAngle\x12\x10\n\x08roll_deg\x18\x01 \x01(\x02\x12\x11\n\tpitch_deg\x18\x02 \x01(\x02\x12\x0f\n\x07yaw_deg\x18\x03 \x01(\x02"\x95\x02\n\x0b\x43\x61ptureInfo\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12-\n\x08position\x18\x02 \x01(\x0b\x32\x1b.mavsdk.rpc.camera.Position\x12:\n\x13\x61ttitude_quaternion\x18\x03 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.Quaternion\x12;\n\x14\x61ttitude_euler_angle\x18\x04 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.EulerAngle\x12\x13\n\x0btime_utc_us\x18\x05 \x01(\x04\x12\x12\n\nis_success\x18\x06 \x01(\x08\x12\r\n\x05index\x18\x07 \x01(\x05\x12\x10\n\x08\x66ile_url\x18\x08 \x01(\t"\xeb\x01\n\x0bInformation\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x13\n\x0bvendor_name\x18\x02 \x01(\t\x12\x12\n\nmodel_name\x18\x03 \x01(\t\x12\x17\n\x0f\x66ocal_length_mm\x18\x04 \x01(\x02\x12!\n\x19horizontal_sensor_size_mm\x18\x05 \x01(\x02\x12\x1f\n\x17vertical_sensor_size_mm\x18\x06 \x01(\x02\x12 \n\x18horizontal_resolution_px\x18\x07 \x01(\r\x12\x1e\n\x16vertical_resolution_px\x18\x08 \x01(\r"=\n\nCameraList\x12/\n\x07\x63\x61meras\x18\x01 \x03(\x0b\x32\x1e.mavsdk.rpc.camera.Information*8\n\x04Mode\x12\x10\n\x0cMODE_UNKNOWN\x10\x00\x12\x0e\n\nMODE_PHOTO\x10\x01\x12\x0e\n\nMODE_VIDEO\x10\x02*F\n\x0bPhotosRange\x12\x14\n\x10PHOTOS_RANGE_ALL\x10\x00\x12!\n\x1dPHOTOS_RANGE_SINCE_CONNECTION\x10\x01\x32\xdd\x1d\n\rCameraService\x12X\n\tTakePhoto\x12#.mavsdk.rpc.camera.TakePhotoRequest\x1a$.mavsdk.rpc.camera.TakePhotoResponse"\x00\x12s\n\x12StartPhotoInterval\x12,.mavsdk.rpc.camera.StartPhotoIntervalRequest\x1a-.mavsdk.rpc.camera.StartPhotoIntervalResponse"\x00\x12p\n\x11StopPhotoInterval\x12+.mavsdk.rpc.camera.StopPhotoIntervalRequest\x1a,.mavsdk.rpc.camera.StopPhotoIntervalResponse"\x00\x12[\n\nStartVideo\x12$.mavsdk.rpc.camera.StartVideoRequest\x1a%.mavsdk.rpc.camera.StartVideoResponse"\x00\x12X\n\tStopVideo\x12#.mavsdk.rpc.camera.StopVideoRequest\x1a$.mavsdk.rpc.camera.StopVideoResponse"\x00\x12z\n\x13StartVideoStreaming\x12-.mavsdk.rpc.camera.StartVideoStreamingRequest\x1a..mavsdk.rpc.camera.StartVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12w\n\x12StopVideoStreaming\x12,.mavsdk.rpc.camera.StopVideoStreamingRequest\x1a-.mavsdk.rpc.camera.StopVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12R\n\x07SetMode\x12!.mavsdk.rpc.camera.SetModeRequest\x1a".mavsdk.rpc.camera.SetModeResponse"\x00\x12[\n\nListPhotos\x12$.mavsdk.rpc.camera.ListPhotosRequest\x1a%.mavsdk.rpc.camera.ListPhotosResponse"\x00\x12o\n\x13SubscribeCameraList\x12-.mavsdk.rpc.camera.SubscribeCameraListRequest\x1a%.mavsdk.rpc.camera.CameraListResponse"\x00\x30\x01\x12\x61\n\rSubscribeMode\x12\'.mavsdk.rpc.camera.SubscribeModeRequest\x1a\x1f.mavsdk.rpc.camera.ModeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12V\n\x07GetMode\x12!.mavsdk.rpc.camera.GetModeRequest\x1a".mavsdk.rpc.camera.GetModeResponse"\x04\x80\xb5\x18\x01\x12\x82\x01\n\x18SubscribeVideoStreamInfo\x12\x32.mavsdk.rpc.camera.SubscribeVideoStreamInfoRequest\x1a*.mavsdk.rpc.camera.VideoStreamInfoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12w\n\x12GetVideoStreamInfo\x12,.mavsdk.rpc.camera.GetVideoStreamInfoRequest\x1a-.mavsdk.rpc.camera.GetVideoStreamInfoResponse"\x04\x80\xb5\x18\x01\x12v\n\x14SubscribeCaptureInfo\x12..mavsdk.rpc.camera.SubscribeCaptureInfoRequest\x1a&.mavsdk.rpc.camera.CaptureInfoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12j\n\x10SubscribeStorage\x12*.mavsdk.rpc.camera.SubscribeStorageRequest\x1a".mavsdk.rpc.camera.StorageResponse"\x04\x80\xb5\x18\x00\x30\x01\x12_\n\nGetStorage\x12$.mavsdk.rpc.camera.GetStorageRequest\x1a%.mavsdk.rpc.camera.GetStorageResponse"\x04\x80\xb5\x18\x01\x12\x82\x01\n\x18SubscribeCurrentSettings\x12\x32.mavsdk.rpc.camera.SubscribeCurrentSettingsRequest\x1a*.mavsdk.rpc.camera.CurrentSettingsResponse"\x04\x80\xb5\x18\x00\x30\x01\x12w\n\x12GetCurrentSettings\x12,.mavsdk.rpc.camera.GetCurrentSettingsRequest\x1a-.mavsdk.rpc.camera.GetCurrentSettingsResponse"\x04\x80\xb5\x18\x01\x12\x97\x01\n\x1fSubscribePossibleSettingOptions\x12\x39.mavsdk.rpc.camera.SubscribePossibleSettingOptionsRequest\x1a\x31.mavsdk.rpc.camera.PossibleSettingOptionsResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8c\x01\n\x19GetPossibleSettingOptions\x12\x33.mavsdk.rpc.camera.GetPossibleSettingOptionsRequest\x1a\x34.mavsdk.rpc.camera.GetPossibleSettingOptionsResponse"\x04\x80\xb5\x18\x01\x12[\n\nSetSetting\x12$.mavsdk.rpc.camera.SetSettingRequest\x1a%.mavsdk.rpc.camera.SetSettingResponse"\x00\x12[\n\nGetSetting\x12$.mavsdk.rpc.camera.GetSettingRequest\x1a%.mavsdk.rpc.camera.GetSettingResponse"\x00\x12\x64\n\rFormatStorage\x12\'.mavsdk.rpc.camera.FormatStorageRequest\x1a(.mavsdk.rpc.camera.FormatStorageResponse"\x00\x12\x64\n\rResetSettings\x12\'.mavsdk.rpc.camera.ResetSettingsRequest\x1a(.mavsdk.rpc.camera.ResetSettingsResponse"\x00\x12^\n\x0bZoomInStart\x12%.mavsdk.rpc.camera.ZoomInStartRequest\x1a&.mavsdk.rpc.camera.ZoomInStartResponse"\x00\x12\x61\n\x0cZoomOutStart\x12&.mavsdk.rpc.camera.ZoomOutStartRequest\x1a\'.mavsdk.rpc.camera.ZoomOutStartResponse"\x00\x12U\n\x08ZoomStop\x12".mavsdk.rpc.camera.ZoomStopRequest\x1a#.mavsdk.rpc.camera.ZoomStopResponse"\x00\x12X\n\tZoomRange\x12#.mavsdk.rpc.camera.ZoomRangeRequest\x1a$.mavsdk.rpc.camera.ZoomRangeResponse"\x00\x12[\n\nTrackPoint\x12$.mavsdk.rpc.camera.TrackPointRequest\x1a%.mavsdk.rpc.camera.TrackPointResponse"\x00\x12g\n\x0eTrackRectangle\x12(.mavsdk.rpc.camera.TrackRectangleRequest\x1a).mavsdk.rpc.camera.TrackRectangleResponse"\x00\x12X\n\tTrackStop\x12#.mavsdk.rpc.camera.TrackStopRequest\x1a$.mavsdk.rpc.camera.TrackStopResponse"\x00\x12\x61\n\x0c\x46ocusInStart\x12&.mavsdk.rpc.camera.FocusInStartRequest\x1a\'.mavsdk.rpc.camera.FocusInStartResponse"\x00\x12\x64\n\rFocusOutStart\x12\'.mavsdk.rpc.camera.FocusOutStartRequest\x1a(.mavsdk.rpc.camera.FocusOutStartResponse"\x00\x12X\n\tFocusStop\x12#.mavsdk.rpc.camera.FocusStopRequest\x1a$.mavsdk.rpc.camera.FocusStopResponse"\x00\x12[\n\nFocusRange\x12$.mavsdk.rpc.camera.FocusRangeRequest\x1a%.mavsdk.rpc.camera.FocusRangeResponse"\x00\x42\x1f\n\x10io.mavsdk.cameraB\x0b\x43\x61meraProtob\x06proto3' + b'\n\x13\x63\x61mera/camera.proto\x12\x11mavsdk.rpc.camera\x1a\x14mavsdk_options.proto"7\n\x06Option\x12\x11\n\toption_id\x18\x01 \x01(\t\x12\x1a\n\x12option_description\x18\x02 \x01(\t"w\n\x07Setting\x12\x12\n\nsetting_id\x18\x01 \x01(\t\x12\x1b\n\x13setting_description\x18\x02 \x01(\t\x12)\n\x06option\x18\x03 \x01(\x0b\x32\x19.mavsdk.rpc.camera.Option\x12\x10\n\x08is_range\x18\x04 \x01(\x08"\x95\x01\n\x0eSettingOptions\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\nsetting_id\x18\x02 \x01(\t\x12\x1b\n\x13setting_description\x18\x03 \x01(\t\x12*\n\x07options\x18\x04 \x03(\x0b\x32\x19.mavsdk.rpc.camera.Option\x12\x10\n\x08is_range\x18\x05 \x01(\x08"\xc5\x01\n\x13VideoStreamSettings\x12\x15\n\rframe_rate_hz\x18\x01 \x01(\x02\x12!\n\x19horizontal_resolution_pix\x18\x02 \x01(\r\x12\x1f\n\x17vertical_resolution_pix\x18\x03 \x01(\r\x12\x14\n\x0c\x62it_rate_b_s\x18\x04 \x01(\r\x12\x14\n\x0crotation_deg\x18\x05 \x01(\r\x12\x0b\n\x03uri\x18\x06 \x01(\t\x12\x1a\n\x12horizontal_fov_deg\x18\x07 \x01(\x02"\xd5\x03\n\x0fVideoStreamInfo\x12\x11\n\tstream_id\x18\x01 \x01(\x05\x12\x38\n\x08settings\x18\x02 \x01(\x0b\x32&.mavsdk.rpc.camera.VideoStreamSettings\x12\x44\n\x06status\x18\x03 \x01(\x0e\x32\x34.mavsdk.rpc.camera.VideoStreamInfo.VideoStreamStatus\x12H\n\x08spectrum\x18\x04 \x01(\x0e\x32\x36.mavsdk.rpc.camera.VideoStreamInfo.VideoStreamSpectrum"]\n\x11VideoStreamStatus\x12#\n\x1fVIDEO_STREAM_STATUS_NOT_RUNNING\x10\x00\x12#\n\x1fVIDEO_STREAM_STATUS_IN_PROGRESS\x10\x01"\x85\x01\n\x13VideoStreamSpectrum\x12!\n\x1dVIDEO_STREAM_SPECTRUM_UNKNOWN\x10\x00\x12\'\n#VIDEO_STREAM_SPECTRUM_VISIBLE_LIGHT\x10\x01\x12"\n\x1eVIDEO_STREAM_SPECTRUM_INFRARED\x10\x02"(\n\x10TakePhotoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11TakePhotoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"E\n\x19StartPhotoIntervalRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\ninterval_s\x18\x02 \x01(\x02"T\n\x1aStartPhotoIntervalResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"0\n\x18StopPhotoIntervalRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"S\n\x19StopPhotoIntervalResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult")\n\x11StartVideoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"L\n\x12StartVideoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10StopVideoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11StopVideoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"E\n\x1aStartVideoStreamingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x11\n\tstream_id\x18\x02 \x01(\x05"U\n\x1bStartVideoStreamingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"D\n\x19StopVideoStreamingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x11\n\tstream_id\x18\x02 \x01(\x05"T\n\x1aStopVideoStreamingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"M\n\x0eSetModeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12%\n\x04mode\x18\x02 \x01(\x0e\x32\x17.mavsdk.rpc.camera.Mode"I\n\x0fSetModeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"_\n\x11ListPhotosRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x34\n\x0cphotos_range\x18\x02 \x01(\x0e\x32\x1e.mavsdk.rpc.camera.PhotosRange"\x83\x01\n\x12ListPhotosResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12\x35\n\rcapture_infos\x18\x02 \x03(\x0b\x32\x1e.mavsdk.rpc.camera.CaptureInfo"\x1c\n\x1aSubscribeCameraListRequest"H\n\x12\x43\x61meraListResponse\x12\x32\n\x0b\x63\x61mera_list\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.CameraList"I\n\nModeUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12%\n\x04mode\x18\x02 \x01(\x0e\x32\x17.mavsdk.rpc.camera.Mode"\x16\n\x14SubscribeModeRequest"=\n\x0cModeResponse\x12-\n\x06update\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.ModeUpdate"h\n\x11VideoStreamUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12=\n\x11video_stream_info\x18\x02 \x01(\x0b\x32".mavsdk.rpc.camera.VideoStreamInfo"!\n\x1fSubscribeVideoStreamInfoRequest"O\n\x17VideoStreamInfoResponse\x12\x34\n\x06update\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera.VideoStreamUpdate"\x1d\n\x1bSubscribeCaptureInfoRequest"K\n\x13\x43\x61ptureInfoResponse\x12\x34\n\x0c\x63\x61pture_info\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.camera.CaptureInfo"\xa0\x05\n\x07Storage\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x10\n\x08video_on\x18\x02 \x01(\x08\x12\x19\n\x11photo_interval_on\x18\x03 \x01(\x08\x12\x18\n\x10used_storage_mib\x18\x04 \x01(\x02\x12\x1d\n\x15\x61vailable_storage_mib\x18\x05 \x01(\x02\x12\x19\n\x11total_storage_mib\x18\x06 \x01(\x02\x12\x18\n\x10recording_time_s\x18\x07 \x01(\x02\x12\x19\n\x11media_folder_name\x18\x08 \x01(\t\x12@\n\x0estorage_status\x18\t \x01(\x0e\x32(.mavsdk.rpc.camera.Storage.StorageStatus\x12\x12\n\nstorage_id\x18\n \x01(\r\x12<\n\x0cstorage_type\x18\x0b \x01(\x0e\x32&.mavsdk.rpc.camera.Storage.StorageType"\x91\x01\n\rStorageStatus\x12 \n\x1cSTORAGE_STATUS_NOT_AVAILABLE\x10\x00\x12\x1e\n\x1aSTORAGE_STATUS_UNFORMATTED\x10\x01\x12\x1c\n\x18STORAGE_STATUS_FORMATTED\x10\x02\x12 \n\x1cSTORAGE_STATUS_NOT_SUPPORTED\x10\x03"\xa0\x01\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x1a\n\x16STORAGE_TYPE_USB_STICK\x10\x01\x12\x13\n\x0fSTORAGE_TYPE_SD\x10\x02\x12\x18\n\x14STORAGE_TYPE_MICROSD\x10\x03\x12\x13\n\x0fSTORAGE_TYPE_HD\x10\x07\x12\x17\n\x12STORAGE_TYPE_OTHER\x10\xfe\x01"R\n\rStorageUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12+\n\x07storage\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Storage"\x19\n\x17SubscribeStorageRequest"C\n\x0fStorageResponse\x12\x30\n\x06update\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.camera.StorageUpdate"c\n\x15\x43urrentSettingsUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x34\n\x10\x63urrent_settings\x18\x02 \x03(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"!\n\x1fSubscribeCurrentSettingsRequest"S\n\x17\x43urrentSettingsResponse\x12\x38\n\x06update\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera.CurrentSettingsUpdate"p\n\x1cPossibleSettingOptionsUpdate\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12:\n\x0fsetting_options\x18\x02 \x03(\x0b\x32!.mavsdk.rpc.camera.SettingOptions"(\n&SubscribePossibleSettingOptionsRequest"a\n\x1ePossibleSettingOptionsResponse\x12?\n\x06update\x18\x01 \x01(\x0b\x32/.mavsdk.rpc.camera.PossibleSettingOptionsUpdate"V\n\x11SetSettingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12+\n\x07setting\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"L\n\x12SetSettingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"&\n\x0eGetModeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"p\n\x0fGetModeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12%\n\x04mode\x18\x02 \x01(\x0e\x32\x17.mavsdk.rpc.camera.Mode"1\n\x19GetVideoStreamInfoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"\x93\x01\n\x1aGetVideoStreamInfoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12=\n\x11video_stream_info\x18\x02 \x01(\x0b\x32".mavsdk.rpc.camera.VideoStreamInfo")\n\x11GetStorageRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"y\n\x12GetStorageResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12+\n\x07storage\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Storage"1\n\x19GetCurrentSettingsRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"\x8a\x01\n\x1aGetCurrentSettingsResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12\x34\n\x10\x63urrent_settings\x18\x02 \x03(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"8\n GetPossibleSettingOptionsRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"\x97\x01\n!GetPossibleSettingOptionsResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12:\n\x0fsetting_options\x18\x02 \x03(\x0b\x32!.mavsdk.rpc.camera.SettingOptions"V\n\x11GetSettingRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12+\n\x07setting\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"y\n\x12GetSettingResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult\x12+\n\x07setting\x18\x02 \x01(\x0b\x32\x1a.mavsdk.rpc.camera.Setting"@\n\x14\x46ormatStorageRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\nstorage_id\x18\x02 \x01(\x05"O\n\x15\x46ormatStorageResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult",\n\x14ResetSettingsRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"O\n\x15ResetSettingsResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"*\n\x12ZoomInStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"M\n\x13ZoomInStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"+\n\x13ZoomOutStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"N\n\x14ZoomOutStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"\'\n\x0fZoomStopRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"J\n\x10ZoomStopResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"7\n\x10ZoomRangeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\r\n\x05range\x18\x02 \x01(\x02"K\n\x11ZoomRangeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"[\n\x11TrackPointRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x0f\n\x07point_x\x18\x02 \x01(\x02\x12\x0f\n\x07point_y\x18\x03 \x01(\x02\x12\x0e\n\x06radius\x18\x04 \x01(\x02"L\n\x12TrackPointResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"\x85\x01\n\x15TrackRectangleRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\ntop_left_x\x18\x02 \x01(\x02\x12\x12\n\ntop_left_y\x18\x03 \x01(\x02\x12\x16\n\x0e\x62ottom_right_x\x18\x04 \x01(\x02\x12\x16\n\x0e\x62ottom_right_y\x18\x05 \x01(\x02"P\n\x16TrackRectangleResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10TrackStopRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11TrackStopResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"*\n\x12\x46ocusInStepRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"M\n\x13\x46ocusInStepResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"+\n\x13\x46ocusOutStepRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"N\n\x14\x46ocusOutStepResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"+\n\x13\x46ocusInStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"N\n\x14\x46ocusInStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult",\n\x14\x46ocusOutStartRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"O\n\x15\x46ocusOutStartResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10\x46ocusStopRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11\x46ocusStopResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"8\n\x11\x46ocusRangeRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\r\n\x05range\x18\x02 \x01(\x02"L\n\x12\x46ocusRangeResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult">\n\x12\x46ocusMetersRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x12\n\ndistance_m\x18\x02 \x01(\x02"M\n\x13\x46ocusMetersResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"(\n\x10\x46ocusAutoRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"K\n\x11\x46ocusAutoResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult".\n\x16\x46ocusAutoSingleRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"Q\n\x17\x46ocusAutoSingleResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"2\n\x1a\x46ocusAutoContinuousRequest\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05"U\n\x1b\x46ocusAutoContinuousResponse\x12\x36\n\rcamera_result\x18\x01 \x01(\x0b\x32\x1f.mavsdk.rpc.camera.CameraResult"\x96\x03\n\x0c\x43\x61meraResult\x12\x36\n\x06result\x18\x01 \x01(\x0e\x32&.mavsdk.rpc.camera.CameraResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xb9\x02\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x16\n\x12RESULT_IN_PROGRESS\x10\x02\x12\x0f\n\x0bRESULT_BUSY\x10\x03\x12\x11\n\rRESULT_DENIED\x10\x04\x12\x10\n\x0cRESULT_ERROR\x10\x05\x12\x12\n\x0eRESULT_TIMEOUT\x10\x06\x12\x19\n\x15RESULT_WRONG_ARGUMENT\x10\x07\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x08\x12\x1f\n\x1bRESULT_PROTOCOL_UNSUPPORTED\x10\t\x12\x16\n\x12RESULT_UNAVAILABLE\x10\n\x12\x1c\n\x18RESULT_CAMERA_ID_INVALID\x10\x0b\x12\x1d\n\x19RESULT_ACTION_UNSUPPORTED\x10\x0c"q\n\x08Position\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x1b\n\x13relative_altitude_m\x18\x04 \x01(\x02"8\n\nQuaternion\x12\t\n\x01w\x18\x01 \x01(\x02\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12\t\n\x01z\x18\x04 \x01(\x02"B\n\nEulerAngle\x12\x10\n\x08roll_deg\x18\x01 \x01(\x02\x12\x11\n\tpitch_deg\x18\x02 \x01(\x02\x12\x0f\n\x07yaw_deg\x18\x03 \x01(\x02"\x95\x02\n\x0b\x43\x61ptureInfo\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12-\n\x08position\x18\x02 \x01(\x0b\x32\x1b.mavsdk.rpc.camera.Position\x12:\n\x13\x61ttitude_quaternion\x18\x03 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.Quaternion\x12;\n\x14\x61ttitude_euler_angle\x18\x04 \x01(\x0b\x32\x1d.mavsdk.rpc.camera.EulerAngle\x12\x13\n\x0btime_utc_us\x18\x05 \x01(\x04\x12\x12\n\nis_success\x18\x06 \x01(\x08\x12\r\n\x05index\x18\x07 \x01(\x05\x12\x10\n\x08\x66ile_url\x18\x08 \x01(\t"\xeb\x01\n\x0bInformation\x12\x14\n\x0c\x63omponent_id\x18\x01 \x01(\x05\x12\x13\n\x0bvendor_name\x18\x02 \x01(\t\x12\x12\n\nmodel_name\x18\x03 \x01(\t\x12\x17\n\x0f\x66ocal_length_mm\x18\x04 \x01(\x02\x12!\n\x19horizontal_sensor_size_mm\x18\x05 \x01(\x02\x12\x1f\n\x17vertical_sensor_size_mm\x18\x06 \x01(\x02\x12 \n\x18horizontal_resolution_px\x18\x07 \x01(\r\x12\x1e\n\x16vertical_resolution_px\x18\x08 \x01(\r"=\n\nCameraList\x12/\n\x07\x63\x61meras\x18\x01 \x03(\x0b\x32\x1e.mavsdk.rpc.camera.Information*8\n\x04Mode\x12\x10\n\x0cMODE_UNKNOWN\x10\x00\x12\x0e\n\nMODE_PHOTO\x10\x01\x12\x0e\n\nMODE_VIDEO\x10\x02*F\n\x0bPhotosRange\x12\x14\n\x10PHOTOS_RANGE_ALL\x10\x00\x12!\n\x1dPHOTOS_RANGE_SINCE_CONNECTION\x10\x01\x32\xbe"\n\rCameraService\x12X\n\tTakePhoto\x12#.mavsdk.rpc.camera.TakePhotoRequest\x1a$.mavsdk.rpc.camera.TakePhotoResponse"\x00\x12s\n\x12StartPhotoInterval\x12,.mavsdk.rpc.camera.StartPhotoIntervalRequest\x1a-.mavsdk.rpc.camera.StartPhotoIntervalResponse"\x00\x12p\n\x11StopPhotoInterval\x12+.mavsdk.rpc.camera.StopPhotoIntervalRequest\x1a,.mavsdk.rpc.camera.StopPhotoIntervalResponse"\x00\x12[\n\nStartVideo\x12$.mavsdk.rpc.camera.StartVideoRequest\x1a%.mavsdk.rpc.camera.StartVideoResponse"\x00\x12X\n\tStopVideo\x12#.mavsdk.rpc.camera.StopVideoRequest\x1a$.mavsdk.rpc.camera.StopVideoResponse"\x00\x12z\n\x13StartVideoStreaming\x12-.mavsdk.rpc.camera.StartVideoStreamingRequest\x1a..mavsdk.rpc.camera.StartVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12w\n\x12StopVideoStreaming\x12,.mavsdk.rpc.camera.StopVideoStreamingRequest\x1a-.mavsdk.rpc.camera.StopVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12R\n\x07SetMode\x12!.mavsdk.rpc.camera.SetModeRequest\x1a".mavsdk.rpc.camera.SetModeResponse"\x00\x12[\n\nListPhotos\x12$.mavsdk.rpc.camera.ListPhotosRequest\x1a%.mavsdk.rpc.camera.ListPhotosResponse"\x00\x12o\n\x13SubscribeCameraList\x12-.mavsdk.rpc.camera.SubscribeCameraListRequest\x1a%.mavsdk.rpc.camera.CameraListResponse"\x00\x30\x01\x12\x61\n\rSubscribeMode\x12\'.mavsdk.rpc.camera.SubscribeModeRequest\x1a\x1f.mavsdk.rpc.camera.ModeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12V\n\x07GetMode\x12!.mavsdk.rpc.camera.GetModeRequest\x1a".mavsdk.rpc.camera.GetModeResponse"\x04\x80\xb5\x18\x01\x12\x82\x01\n\x18SubscribeVideoStreamInfo\x12\x32.mavsdk.rpc.camera.SubscribeVideoStreamInfoRequest\x1a*.mavsdk.rpc.camera.VideoStreamInfoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12w\n\x12GetVideoStreamInfo\x12,.mavsdk.rpc.camera.GetVideoStreamInfoRequest\x1a-.mavsdk.rpc.camera.GetVideoStreamInfoResponse"\x04\x80\xb5\x18\x01\x12v\n\x14SubscribeCaptureInfo\x12..mavsdk.rpc.camera.SubscribeCaptureInfoRequest\x1a&.mavsdk.rpc.camera.CaptureInfoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12j\n\x10SubscribeStorage\x12*.mavsdk.rpc.camera.SubscribeStorageRequest\x1a".mavsdk.rpc.camera.StorageResponse"\x04\x80\xb5\x18\x00\x30\x01\x12_\n\nGetStorage\x12$.mavsdk.rpc.camera.GetStorageRequest\x1a%.mavsdk.rpc.camera.GetStorageResponse"\x04\x80\xb5\x18\x01\x12\x82\x01\n\x18SubscribeCurrentSettings\x12\x32.mavsdk.rpc.camera.SubscribeCurrentSettingsRequest\x1a*.mavsdk.rpc.camera.CurrentSettingsResponse"\x04\x80\xb5\x18\x00\x30\x01\x12w\n\x12GetCurrentSettings\x12,.mavsdk.rpc.camera.GetCurrentSettingsRequest\x1a-.mavsdk.rpc.camera.GetCurrentSettingsResponse"\x04\x80\xb5\x18\x01\x12\x97\x01\n\x1fSubscribePossibleSettingOptions\x12\x39.mavsdk.rpc.camera.SubscribePossibleSettingOptionsRequest\x1a\x31.mavsdk.rpc.camera.PossibleSettingOptionsResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8c\x01\n\x19GetPossibleSettingOptions\x12\x33.mavsdk.rpc.camera.GetPossibleSettingOptionsRequest\x1a\x34.mavsdk.rpc.camera.GetPossibleSettingOptionsResponse"\x04\x80\xb5\x18\x01\x12[\n\nSetSetting\x12$.mavsdk.rpc.camera.SetSettingRequest\x1a%.mavsdk.rpc.camera.SetSettingResponse"\x00\x12[\n\nGetSetting\x12$.mavsdk.rpc.camera.GetSettingRequest\x1a%.mavsdk.rpc.camera.GetSettingResponse"\x00\x12\x64\n\rFormatStorage\x12\'.mavsdk.rpc.camera.FormatStorageRequest\x1a(.mavsdk.rpc.camera.FormatStorageResponse"\x00\x12\x64\n\rResetSettings\x12\'.mavsdk.rpc.camera.ResetSettingsRequest\x1a(.mavsdk.rpc.camera.ResetSettingsResponse"\x00\x12^\n\x0bZoomInStart\x12%.mavsdk.rpc.camera.ZoomInStartRequest\x1a&.mavsdk.rpc.camera.ZoomInStartResponse"\x00\x12\x61\n\x0cZoomOutStart\x12&.mavsdk.rpc.camera.ZoomOutStartRequest\x1a\'.mavsdk.rpc.camera.ZoomOutStartResponse"\x00\x12U\n\x08ZoomStop\x12".mavsdk.rpc.camera.ZoomStopRequest\x1a#.mavsdk.rpc.camera.ZoomStopResponse"\x00\x12X\n\tZoomRange\x12#.mavsdk.rpc.camera.ZoomRangeRequest\x1a$.mavsdk.rpc.camera.ZoomRangeResponse"\x00\x12[\n\nTrackPoint\x12$.mavsdk.rpc.camera.TrackPointRequest\x1a%.mavsdk.rpc.camera.TrackPointResponse"\x00\x12g\n\x0eTrackRectangle\x12(.mavsdk.rpc.camera.TrackRectangleRequest\x1a).mavsdk.rpc.camera.TrackRectangleResponse"\x00\x12X\n\tTrackStop\x12#.mavsdk.rpc.camera.TrackStopRequest\x1a$.mavsdk.rpc.camera.TrackStopResponse"\x00\x12^\n\x0b\x46ocusInStep\x12%.mavsdk.rpc.camera.FocusInStepRequest\x1a&.mavsdk.rpc.camera.FocusInStepResponse"\x00\x12\x61\n\x0c\x46ocusOutStep\x12&.mavsdk.rpc.camera.FocusOutStepRequest\x1a\'.mavsdk.rpc.camera.FocusOutStepResponse"\x00\x12\x61\n\x0c\x46ocusInStart\x12&.mavsdk.rpc.camera.FocusInStartRequest\x1a\'.mavsdk.rpc.camera.FocusInStartResponse"\x00\x12\x64\n\rFocusOutStart\x12\'.mavsdk.rpc.camera.FocusOutStartRequest\x1a(.mavsdk.rpc.camera.FocusOutStartResponse"\x00\x12X\n\tFocusStop\x12#.mavsdk.rpc.camera.FocusStopRequest\x1a$.mavsdk.rpc.camera.FocusStopResponse"\x00\x12[\n\nFocusRange\x12$.mavsdk.rpc.camera.FocusRangeRequest\x1a%.mavsdk.rpc.camera.FocusRangeResponse"\x00\x12^\n\x0b\x46ocusMeters\x12%.mavsdk.rpc.camera.FocusMetersRequest\x1a&.mavsdk.rpc.camera.FocusMetersResponse"\x00\x12X\n\tFocusAuto\x12#.mavsdk.rpc.camera.FocusAutoRequest\x1a$.mavsdk.rpc.camera.FocusAutoResponse"\x00\x12j\n\x0f\x46ocusAutoSingle\x12).mavsdk.rpc.camera.FocusAutoSingleRequest\x1a*.mavsdk.rpc.camera.FocusAutoSingleResponse"\x00\x12v\n\x13\x46ocusAutoContinuous\x12-.mavsdk.rpc.camera.FocusAutoContinuousRequest\x1a..mavsdk.rpc.camera.FocusAutoContinuousResponse"\x00\x42\x1f\n\x10io.mavsdk.cameraB\x0b\x43\x61meraProtob\x06proto3' ) _globals = globals() @@ -106,10 +106,10 @@ _globals["_CAMERASERVICE"].methods_by_name[ "GetPossibleSettingOptions" ]._serialized_options = b"\200\265\030\001" - _globals["_MODE"]._serialized_start = 8664 - _globals["_MODE"]._serialized_end = 8720 - _globals["_PHOTOSRANGE"]._serialized_start = 8722 - _globals["_PHOTOSRANGE"]._serialized_end = 8792 + _globals["_MODE"]._serialized_start = 9444 + _globals["_MODE"]._serialized_end = 9500 + _globals["_PHOTOSRANGE"]._serialized_start = 9502 + _globals["_PHOTOSRANGE"]._serialized_end = 9572 _globals["_OPTION"]._serialized_start = 64 _globals["_OPTION"]._serialized_end = 119 _globals["_SETTING"]._serialized_start = 121 @@ -268,38 +268,62 @@ _globals["_TRACKSTOPREQUEST"]._serialized_end = 6847 _globals["_TRACKSTOPRESPONSE"]._serialized_start = 6849 _globals["_TRACKSTOPRESPONSE"]._serialized_end = 6924 - _globals["_FOCUSINSTARTREQUEST"]._serialized_start = 6926 - _globals["_FOCUSINSTARTREQUEST"]._serialized_end = 6969 - _globals["_FOCUSINSTARTRESPONSE"]._serialized_start = 6971 - _globals["_FOCUSINSTARTRESPONSE"]._serialized_end = 7049 - _globals["_FOCUSOUTSTARTREQUEST"]._serialized_start = 7051 - _globals["_FOCUSOUTSTARTREQUEST"]._serialized_end = 7095 - _globals["_FOCUSOUTSTARTRESPONSE"]._serialized_start = 7097 - _globals["_FOCUSOUTSTARTRESPONSE"]._serialized_end = 7176 - _globals["_FOCUSSTOPREQUEST"]._serialized_start = 7178 - _globals["_FOCUSSTOPREQUEST"]._serialized_end = 7218 - _globals["_FOCUSSTOPRESPONSE"]._serialized_start = 7220 - _globals["_FOCUSSTOPRESPONSE"]._serialized_end = 7295 - _globals["_FOCUSRANGEREQUEST"]._serialized_start = 7297 - _globals["_FOCUSRANGEREQUEST"]._serialized_end = 7353 - _globals["_FOCUSRANGERESPONSE"]._serialized_start = 7355 - _globals["_FOCUSRANGERESPONSE"]._serialized_end = 7431 - _globals["_CAMERARESULT"]._serialized_start = 7434 - _globals["_CAMERARESULT"]._serialized_end = 7840 - _globals["_CAMERARESULT_RESULT"]._serialized_start = 7527 - _globals["_CAMERARESULT_RESULT"]._serialized_end = 7840 - _globals["_POSITION"]._serialized_start = 7842 - _globals["_POSITION"]._serialized_end = 7955 - _globals["_QUATERNION"]._serialized_start = 7957 - _globals["_QUATERNION"]._serialized_end = 8013 - _globals["_EULERANGLE"]._serialized_start = 8015 - _globals["_EULERANGLE"]._serialized_end = 8081 - _globals["_CAPTUREINFO"]._serialized_start = 8084 - _globals["_CAPTUREINFO"]._serialized_end = 8361 - _globals["_INFORMATION"]._serialized_start = 8364 - _globals["_INFORMATION"]._serialized_end = 8599 - _globals["_CAMERALIST"]._serialized_start = 8601 - _globals["_CAMERALIST"]._serialized_end = 8662 - _globals["_CAMERASERVICE"]._serialized_start = 8795 - _globals["_CAMERASERVICE"]._serialized_end = 12600 + _globals["_FOCUSINSTEPREQUEST"]._serialized_start = 6926 + _globals["_FOCUSINSTEPREQUEST"]._serialized_end = 6968 + _globals["_FOCUSINSTEPRESPONSE"]._serialized_start = 6970 + _globals["_FOCUSINSTEPRESPONSE"]._serialized_end = 7047 + _globals["_FOCUSOUTSTEPREQUEST"]._serialized_start = 7049 + _globals["_FOCUSOUTSTEPREQUEST"]._serialized_end = 7092 + _globals["_FOCUSOUTSTEPRESPONSE"]._serialized_start = 7094 + _globals["_FOCUSOUTSTEPRESPONSE"]._serialized_end = 7172 + _globals["_FOCUSINSTARTREQUEST"]._serialized_start = 7174 + _globals["_FOCUSINSTARTREQUEST"]._serialized_end = 7217 + _globals["_FOCUSINSTARTRESPONSE"]._serialized_start = 7219 + _globals["_FOCUSINSTARTRESPONSE"]._serialized_end = 7297 + _globals["_FOCUSOUTSTARTREQUEST"]._serialized_start = 7299 + _globals["_FOCUSOUTSTARTREQUEST"]._serialized_end = 7343 + _globals["_FOCUSOUTSTARTRESPONSE"]._serialized_start = 7345 + _globals["_FOCUSOUTSTARTRESPONSE"]._serialized_end = 7424 + _globals["_FOCUSSTOPREQUEST"]._serialized_start = 7426 + _globals["_FOCUSSTOPREQUEST"]._serialized_end = 7466 + _globals["_FOCUSSTOPRESPONSE"]._serialized_start = 7468 + _globals["_FOCUSSTOPRESPONSE"]._serialized_end = 7543 + _globals["_FOCUSRANGEREQUEST"]._serialized_start = 7545 + _globals["_FOCUSRANGEREQUEST"]._serialized_end = 7601 + _globals["_FOCUSRANGERESPONSE"]._serialized_start = 7603 + _globals["_FOCUSRANGERESPONSE"]._serialized_end = 7679 + _globals["_FOCUSMETERSREQUEST"]._serialized_start = 7681 + _globals["_FOCUSMETERSREQUEST"]._serialized_end = 7743 + _globals["_FOCUSMETERSRESPONSE"]._serialized_start = 7745 + _globals["_FOCUSMETERSRESPONSE"]._serialized_end = 7822 + _globals["_FOCUSAUTOREQUEST"]._serialized_start = 7824 + _globals["_FOCUSAUTOREQUEST"]._serialized_end = 7864 + _globals["_FOCUSAUTORESPONSE"]._serialized_start = 7866 + _globals["_FOCUSAUTORESPONSE"]._serialized_end = 7941 + _globals["_FOCUSAUTOSINGLEREQUEST"]._serialized_start = 7943 + _globals["_FOCUSAUTOSINGLEREQUEST"]._serialized_end = 7989 + _globals["_FOCUSAUTOSINGLERESPONSE"]._serialized_start = 7991 + _globals["_FOCUSAUTOSINGLERESPONSE"]._serialized_end = 8072 + _globals["_FOCUSAUTOCONTINUOUSREQUEST"]._serialized_start = 8074 + _globals["_FOCUSAUTOCONTINUOUSREQUEST"]._serialized_end = 8124 + _globals["_FOCUSAUTOCONTINUOUSRESPONSE"]._serialized_start = 8126 + _globals["_FOCUSAUTOCONTINUOUSRESPONSE"]._serialized_end = 8211 + _globals["_CAMERARESULT"]._serialized_start = 8214 + _globals["_CAMERARESULT"]._serialized_end = 8620 + _globals["_CAMERARESULT_RESULT"]._serialized_start = 8307 + _globals["_CAMERARESULT_RESULT"]._serialized_end = 8620 + _globals["_POSITION"]._serialized_start = 8622 + _globals["_POSITION"]._serialized_end = 8735 + _globals["_QUATERNION"]._serialized_start = 8737 + _globals["_QUATERNION"]._serialized_end = 8793 + _globals["_EULERANGLE"]._serialized_start = 8795 + _globals["_EULERANGLE"]._serialized_end = 8861 + _globals["_CAPTUREINFO"]._serialized_start = 8864 + _globals["_CAPTUREINFO"]._serialized_end = 9141 + _globals["_INFORMATION"]._serialized_start = 9144 + _globals["_INFORMATION"]._serialized_end = 9379 + _globals["_CAMERALIST"]._serialized_start = 9381 + _globals["_CAMERALIST"]._serialized_end = 9442 + _globals["_CAMERASERVICE"]._serialized_start = 9575 + _globals["_CAMERASERVICE"]._serialized_end = 13989 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/camera_pb2_grpc.py b/mavsdk/camera_pb2_grpc.py index e4cac404..777ca531 100644 --- a/mavsdk/camera_pb2_grpc.py +++ b/mavsdk/camera_pb2_grpc.py @@ -238,6 +238,18 @@ def __init__(self, channel): response_deserializer=camera_dot_camera__pb2.TrackStopResponse.FromString, _registered_method=True, ) + self.FocusInStep = channel.unary_unary( + "/mavsdk.rpc.camera.CameraService/FocusInStep", + request_serializer=camera_dot_camera__pb2.FocusInStepRequest.SerializeToString, + response_deserializer=camera_dot_camera__pb2.FocusInStepResponse.FromString, + _registered_method=True, + ) + self.FocusOutStep = channel.unary_unary( + "/mavsdk.rpc.camera.CameraService/FocusOutStep", + request_serializer=camera_dot_camera__pb2.FocusOutStepRequest.SerializeToString, + response_deserializer=camera_dot_camera__pb2.FocusOutStepResponse.FromString, + _registered_method=True, + ) self.FocusInStart = channel.unary_unary( "/mavsdk.rpc.camera.CameraService/FocusInStart", request_serializer=camera_dot_camera__pb2.FocusInStartRequest.SerializeToString, @@ -262,6 +274,30 @@ def __init__(self, channel): response_deserializer=camera_dot_camera__pb2.FocusRangeResponse.FromString, _registered_method=True, ) + self.FocusMeters = channel.unary_unary( + "/mavsdk.rpc.camera.CameraService/FocusMeters", + request_serializer=camera_dot_camera__pb2.FocusMetersRequest.SerializeToString, + response_deserializer=camera_dot_camera__pb2.FocusMetersResponse.FromString, + _registered_method=True, + ) + self.FocusAuto = channel.unary_unary( + "/mavsdk.rpc.camera.CameraService/FocusAuto", + request_serializer=camera_dot_camera__pb2.FocusAutoRequest.SerializeToString, + response_deserializer=camera_dot_camera__pb2.FocusAutoResponse.FromString, + _registered_method=True, + ) + self.FocusAutoSingle = channel.unary_unary( + "/mavsdk.rpc.camera.CameraService/FocusAutoSingle", + request_serializer=camera_dot_camera__pb2.FocusAutoSingleRequest.SerializeToString, + response_deserializer=camera_dot_camera__pb2.FocusAutoSingleResponse.FromString, + _registered_method=True, + ) + self.FocusAutoContinuous = channel.unary_unary( + "/mavsdk.rpc.camera.CameraService/FocusAutoContinuous", + request_serializer=camera_dot_camera__pb2.FocusAutoContinuousRequest.SerializeToString, + response_deserializer=camera_dot_camera__pb2.FocusAutoContinuousResponse.FromString, + _registered_method=True, + ) class CameraServiceServicer(object): @@ -546,6 +582,22 @@ def TrackStop(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def FocusInStep(self, request, context): + """ + Step focus in. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def FocusOutStep(self, request, context): + """ + Step focus out. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def FocusInStart(self, request, context): """ Start focusing in. @@ -578,6 +630,41 @@ def FocusRange(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def FocusMeters(self, request, context): + """ + Focus at a distance in meters. + + Note that there is no message to get the valid focus range of the camera, + so this can only be used for cameras where the range is known. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def FocusAuto(self, request, context): + """ + Focus automatically. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def FocusAutoSingle(self, request, context): + """ + Single auto focus. Mainly used for still pictures. Usually abbreviated as AF-S. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def FocusAutoContinuous(self, request, context): + """ + Continuous auto focus. Mainly used for dynamic scenes. Abbreviated as AF-C. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def add_CameraServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -741,6 +828,16 @@ def add_CameraServiceServicer_to_server(servicer, server): request_deserializer=camera_dot_camera__pb2.TrackStopRequest.FromString, response_serializer=camera_dot_camera__pb2.TrackStopResponse.SerializeToString, ), + "FocusInStep": grpc.unary_unary_rpc_method_handler( + servicer.FocusInStep, + request_deserializer=camera_dot_camera__pb2.FocusInStepRequest.FromString, + response_serializer=camera_dot_camera__pb2.FocusInStepResponse.SerializeToString, + ), + "FocusOutStep": grpc.unary_unary_rpc_method_handler( + servicer.FocusOutStep, + request_deserializer=camera_dot_camera__pb2.FocusOutStepRequest.FromString, + response_serializer=camera_dot_camera__pb2.FocusOutStepResponse.SerializeToString, + ), "FocusInStart": grpc.unary_unary_rpc_method_handler( servicer.FocusInStart, request_deserializer=camera_dot_camera__pb2.FocusInStartRequest.FromString, @@ -761,6 +858,26 @@ def add_CameraServiceServicer_to_server(servicer, server): request_deserializer=camera_dot_camera__pb2.FocusRangeRequest.FromString, response_serializer=camera_dot_camera__pb2.FocusRangeResponse.SerializeToString, ), + "FocusMeters": grpc.unary_unary_rpc_method_handler( + servicer.FocusMeters, + request_deserializer=camera_dot_camera__pb2.FocusMetersRequest.FromString, + response_serializer=camera_dot_camera__pb2.FocusMetersResponse.SerializeToString, + ), + "FocusAuto": grpc.unary_unary_rpc_method_handler( + servicer.FocusAuto, + request_deserializer=camera_dot_camera__pb2.FocusAutoRequest.FromString, + response_serializer=camera_dot_camera__pb2.FocusAutoResponse.SerializeToString, + ), + "FocusAutoSingle": grpc.unary_unary_rpc_method_handler( + servicer.FocusAutoSingle, + request_deserializer=camera_dot_camera__pb2.FocusAutoSingleRequest.FromString, + response_serializer=camera_dot_camera__pb2.FocusAutoSingleResponse.SerializeToString, + ), + "FocusAutoContinuous": grpc.unary_unary_rpc_method_handler( + servicer.FocusAutoContinuous, + request_deserializer=camera_dot_camera__pb2.FocusAutoContinuousRequest.FromString, + response_serializer=camera_dot_camera__pb2.FocusAutoContinuousResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( "mavsdk.rpc.camera.CameraService", rpc_method_handlers @@ -1743,6 +1860,66 @@ def TrackStop( _registered_method=True, ) + @staticmethod + def FocusInStep( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera.CameraService/FocusInStep", + camera_dot_camera__pb2.FocusInStepRequest.SerializeToString, + camera_dot_camera__pb2.FocusInStepResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def FocusOutStep( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera.CameraService/FocusOutStep", + camera_dot_camera__pb2.FocusOutStepRequest.SerializeToString, + camera_dot_camera__pb2.FocusOutStepResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + @staticmethod def FocusInStart( request, @@ -1862,3 +2039,123 @@ def FocusRange( metadata, _registered_method=True, ) + + @staticmethod + def FocusMeters( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera.CameraService/FocusMeters", + camera_dot_camera__pb2.FocusMetersRequest.SerializeToString, + camera_dot_camera__pb2.FocusMetersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def FocusAuto( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera.CameraService/FocusAuto", + camera_dot_camera__pb2.FocusAutoRequest.SerializeToString, + camera_dot_camera__pb2.FocusAutoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def FocusAutoSingle( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera.CameraService/FocusAutoSingle", + camera_dot_camera__pb2.FocusAutoSingleRequest.SerializeToString, + camera_dot_camera__pb2.FocusAutoSingleResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def FocusAutoContinuous( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera.CameraService/FocusAutoContinuous", + camera_dot_camera__pb2.FocusAutoContinuousRequest.SerializeToString, + camera_dot_camera__pb2.FocusAutoContinuousResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) diff --git a/mavsdk/camera_server.py b/mavsdk/camera_server.py index 10434163..84db2212 100644 --- a/mavsdk/camera_server.py +++ b/mavsdk/camera_server.py @@ -2182,6 +2182,498 @@ async def respond_zoom_range(self, zoom_range_feedback): if result.result != CameraServerResult.Result.SUCCESS: raise CameraServerError(result, "respond_zoom_range()", zoom_range_feedback) + async def focus_in_step(self): + """ + Subscribe to focus in step command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusInStepRequest() + focus_in_step_stream = self._stub.SubscribeFocusInStep(request) + + try: + async for response in focus_in_step_stream: + yield response.reserved + finally: + focus_in_step_stream.cancel() + + async def respond_focus_in_step(self, focus_in_step_feedback): + """ + Respond to focus in step. + + Parameters + ---------- + focus_in_step_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusInStepRequest() + + request.focus_in_step_feedback = focus_in_step_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusInStep(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_in_step()", focus_in_step_feedback + ) + + async def focus_out_step(self): + """ + Subscribe to focus out step command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusOutStepRequest() + focus_out_step_stream = self._stub.SubscribeFocusOutStep(request) + + try: + async for response in focus_out_step_stream: + yield response.reserved + finally: + focus_out_step_stream.cancel() + + async def respond_focus_out_step(self, focus_out_step_feedback): + """ + Respond to focus out step. + + Parameters + ---------- + focus_out_step_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusOutStepRequest() + + request.focus_out_step_feedback = focus_out_step_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusOutStep(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_out_step()", focus_out_step_feedback + ) + + async def focus_in_start(self): + """ + Subscribe to focus in start command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusInStartRequest() + focus_in_start_stream = self._stub.SubscribeFocusInStart(request) + + try: + async for response in focus_in_start_stream: + yield response.reserved + finally: + focus_in_start_stream.cancel() + + async def respond_focus_in_start(self, focus_in_start_feedback): + """ + Respond to focus in start. + + Parameters + ---------- + focus_in_start_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusInStartRequest() + + request.focus_in_start_feedback = focus_in_start_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusInStart(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_in_start()", focus_in_start_feedback + ) + + async def focus_out_start(self): + """ + Subscribe to focus out start command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusOutStartRequest() + focus_out_start_stream = self._stub.SubscribeFocusOutStart(request) + + try: + async for response in focus_out_start_stream: + yield response.reserved + finally: + focus_out_start_stream.cancel() + + async def respond_focus_out_start(self, focus_out_start_feedback): + """ + Respond to focus out start. + + Parameters + ---------- + focus_out_start_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusOutStartRequest() + + request.focus_out_start_feedback = focus_out_start_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusOutStart(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_out_start()", focus_out_start_feedback + ) + + async def focus_stop(self): + """ + Subscribe to focus stop command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusStopRequest() + focus_stop_stream = self._stub.SubscribeFocusStop(request) + + try: + async for response in focus_stop_stream: + yield response.reserved + finally: + focus_stop_stream.cancel() + + async def respond_focus_stop(self, focus_stop_feedback): + """ + Respond to focus stop. + + Parameters + ---------- + focus_stop_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusStopRequest() + + request.focus_stop_feedback = focus_stop_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusStop(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError(result, "respond_focus_stop()", focus_stop_feedback) + + async def focus_range(self): + """ + Subscribe to focus range command. + + Yields + ------- + focus_distance_m : float + The focus distance in meters. + + + """ + + request = camera_server_pb2.SubscribeFocusRangeRequest() + focus_range_stream = self._stub.SubscribeFocusRange(request) + + try: + async for response in focus_range_stream: + yield response.focus_distance_m + finally: + focus_range_stream.cancel() + + async def respond_focus_range(self, focus_range_feedback): + """ + Respond to focus range. + + Parameters + ---------- + focus_range_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusRangeRequest() + + request.focus_range_feedback = focus_range_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusRange(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_range()", focus_range_feedback + ) + + async def focus_meters(self): + """ + Subscribe to focus meters command. + + Yields + ------- + focus_distance_m : float + The focus distance in meters. + + + """ + + request = camera_server_pb2.SubscribeFocusMetersRequest() + focus_meters_stream = self._stub.SubscribeFocusMeters(request) + + try: + async for response in focus_meters_stream: + yield response.focus_distance_m + finally: + focus_meters_stream.cancel() + + async def respond_focus_meters(self, focus_meters_feedback): + """ + Respond to focus meters. + + Parameters + ---------- + focus_meters_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusMetersRequest() + + request.focus_meters_feedback = focus_meters_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusMeters(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_meters()", focus_meters_feedback + ) + + async def focus_auto(self): + """ + Subscribe to focus auto command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusAutoRequest() + focus_auto_stream = self._stub.SubscribeFocusAuto(request) + + try: + async for response in focus_auto_stream: + yield response.reserved + finally: + focus_auto_stream.cancel() + + async def respond_focus_auto(self, focus_auto_feedback): + """ + Respond to focus auto. + + Parameters + ---------- + focus_auto_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusAutoRequest() + + request.focus_auto_feedback = focus_auto_feedback.translate_to_rpc() + + response = await self._stub.RespondFocusAuto(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError(result, "respond_focus_auto()", focus_auto_feedback) + + async def focus_auto_single(self): + """ + Subscribe to focus auto single command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusAutoSingleRequest() + focus_auto_single_stream = self._stub.SubscribeFocusAutoSingle(request) + + try: + async for response in focus_auto_single_stream: + yield response.reserved + finally: + focus_auto_single_stream.cancel() + + async def respond_focus_auto_single(self, focus_auto_single_feedback): + """ + Respond to focus auto single. + + Parameters + ---------- + focus_auto_single_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusAutoSingleRequest() + + request.focus_auto_single_feedback = ( + focus_auto_single_feedback.translate_to_rpc() + ) + + response = await self._stub.RespondFocusAutoSingle(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "respond_focus_auto_single()", focus_auto_single_feedback + ) + + async def focus_auto_continuous(self): + """ + Subscribe to focus auto continuous command. + + Yields + ------- + reserved : int32_t + reserved, just make protoc-gen-mavsdk working + + + """ + + request = camera_server_pb2.SubscribeFocusAutoContinuousRequest() + focus_auto_continuous_stream = self._stub.SubscribeFocusAutoContinuous(request) + + try: + async for response in focus_auto_continuous_stream: + yield response.reserved + finally: + focus_auto_continuous_stream.cancel() + + async def respond_focus_auto_continuous(self, focus_auto_continuous_feedback): + """ + Respond to focus auto continuous. + + Parameters + ---------- + focus_auto_continuous_feedback : CameraFeedback + the feedback + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.RespondFocusAutoContinuousRequest() + + request.focus_auto_continuous_feedback = ( + focus_auto_continuous_feedback.translate_to_rpc() + ) + + response = await self._stub.RespondFocusAutoContinuous(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, + "respond_focus_auto_continuous()", + focus_auto_continuous_feedback, + ) + async def set_tracking_rectangle_status(self, tracked_rectangle): """ Set/update the current rectangle tracking status. @@ -2360,3 +2852,111 @@ async def respond_tracking_off_command(self, stop_video_feedback): raise CameraServerError( result, "respond_tracking_off_command()", stop_video_feedback ) + + async def set_position(self, position): + """ + Set the camera's GPS position. + + Parameters + ---------- + position : Position + The camera's current GPS position + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.SetPositionRequest() + + position.translate_to_rpc(request.position) + + response = await self._stub.SetPosition(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError(result, "set_position()", position) + + async def set_attitude_quaternion(self, attitude_quaternion): + """ + Set the camera's attitude quaternion. + + Parameters + ---------- + attitude_quaternion : Quaternion + The camera's current attitude + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.SetAttitudeQuaternionRequest() + + attitude_quaternion.translate_to_rpc(request.attitude_quaternion) + + response = await self._stub.SetAttitudeQuaternion(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "set_attitude_quaternion()", attitude_quaternion + ) + + async def set_zoom_factor(self, zoom_factor): + """ + Set the camera's zoom factor for CAMERA_FOV_STATUS reporting. + + Parameters + ---------- + zoom_factor : float + The camera's current zoom factor, starting at 1x. + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.SetZoomFactorRequest() + request.zoom_factor = zoom_factor + response = await self._stub.SetZoomFactor(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError(result, "set_zoom_factor()", zoom_factor) + + async def set_field_of_view(self, horizontal_fov_deg, vertical_fov_deg): + """ + Set the field of view explicitly, for cameras that do not report a zoom factor. + + Parameters + ---------- + horizontal_fov_deg : float + The camera's current horizontal field of view in degrees + + vertical_fov_deg : float + The camera's current vertical field of view in degrees + + Raises + ------ + CameraServerError + If the request fails. The error contains the reason for the failure. + """ + + request = camera_server_pb2.SetFieldOfViewRequest() + request.horizontal_fov_deg = horizontal_fov_deg + request.vertical_fov_deg = vertical_fov_deg + response = await self._stub.SetFieldOfView(request) + + result = self._extract_result(response) + + if result.result != CameraServerResult.Result.SUCCESS: + raise CameraServerError( + result, "set_field_of_view()", horizontal_fov_deg, vertical_fov_deg + ) diff --git a/mavsdk/camera_server_pb2.py b/mavsdk/camera_server_pb2.py index 99fb4746..bd22fdd4 100644 --- a/mavsdk/camera_server_pb2.py +++ b/mavsdk/camera_server_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n!camera_server/camera_server.proto\x12\x18mavsdk.rpc.camera_server\x1a\x14mavsdk_options.proto"S\n\x15SetInformationRequest\x12:\n\x0binformation\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.camera_server.Information"d\n\x16SetInformationResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"]\n\x18SetVideoStreamingRequest\x12\x41\n\x0fvideo_streaming\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera_server.VideoStreaming"g\n\x19SetVideoStreamingResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"+\n\x14SetInProgressRequest\x12\x13\n\x0bin_progress\x18\x01 \x01(\x08"c\n\x15SetInProgressResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeTakePhotoRequest""\n\x11TakePhotoResponse\x12\r\n\x05index\x18\x01 \x01(\x05"\x9d\x01\n\x17RespondTakePhotoRequest\x12\x45\n\x13take_photo_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback\x12;\n\x0c\x63\x61pture_info\x18\x02 \x01(\x0b\x32%.mavsdk.rpc.camera_server.CaptureInfo"f\n\x18RespondTakePhotoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1c\n\x1aSubscribeStartVideoRequest"\'\n\x12StartVideoResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"b\n\x18RespondStartVideoRequest\x12\x46\n\x14start_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"g\n\x19RespondStartVideoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeStopVideoRequest"&\n\x11StopVideoResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"`\n\x17RespondStopVideoRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"f\n\x18RespondStopVideoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"%\n#SubscribeStartVideoStreamingRequest"0\n\x1bStartVideoStreamingResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"u\n!RespondStartVideoStreamingRequest\x12P\n\x1estart_video_streaming_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"p\n"RespondStartVideoStreamingResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"$\n"SubscribeStopVideoStreamingRequest"/\n\x1aStopVideoStreamingResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"s\n RespondStopVideoStreamingRequest\x12O\n\x1dstop_video_streaming_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"o\n!RespondStopVideoStreamingResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x19\n\x17SubscribeSetModeRequest"?\n\x0fSetModeResponse\x12,\n\x04mode\x18\x01 \x01(\x0e\x32\x1e.mavsdk.rpc.camera_server.Mode"\\\n\x15RespondSetModeRequest\x12\x43\n\x11set_mode_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"d\n\x16RespondSetModeResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"$\n"SubscribeStorageInformationRequest"0\n\x1aStorageInformationResponse\x12\x12\n\nstorage_id\x18\x01 \x01(\x05"\xbd\x01\n RespondStorageInformationRequest\x12N\n\x1cstorage_information_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback\x12I\n\x13storage_information\x18\x02 \x01(\x0b\x32,.mavsdk.rpc.camera_server.StorageInformation"o\n!RespondStorageInformationResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeCaptureStatusRequest")\n\x15\x43\x61ptureStatusResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"\xa9\x01\n\x1bRespondCaptureStatusRequest\x12I\n\x17\x63\x61pture_status_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback\x12?\n\x0e\x63\x61pture_status\x18\x02 \x01(\x0b\x32\'.mavsdk.rpc.camera_server.CaptureStatus"j\n\x1cRespondCaptureStatusResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeFormatStorageRequest"+\n\x15\x46ormatStorageResponse\x12\x12\n\nstorage_id\x18\x01 \x01(\x05"h\n\x1bRespondFormatStorageRequest\x12I\n\x17\x66ormat_storage_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"j\n\x1cRespondFormatStorageResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeResetSettingsRequest")\n\x15ResetSettingsResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"h\n\x1bRespondResetSettingsRequest\x12I\n\x17reset_settings_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"j\n\x1cRespondResetSettingsResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1d\n\x1bSubscribeZoomInStartRequest"\'\n\x13ZoomInStartResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"e\n\x19RespondZoomInStartRequest\x12H\n\x16zoom_in_start_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"h\n\x1aRespondZoomInStartResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1e\n\x1cSubscribeZoomOutStartRequest"(\n\x14ZoomOutStartResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"g\n\x1aRespondZoomOutStartRequest\x12I\n\x17zoom_out_start_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"i\n\x1bRespondZoomOutStartResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1a\n\x18SubscribeZoomStopRequest"$\n\x10ZoomStopResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"^\n\x16RespondZoomStopRequest\x12\x44\n\x12zoom_stop_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"e\n\x17RespondZoomStopResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeZoomRangeRequest"#\n\x11ZoomRangeResponse\x12\x0e\n\x06\x66\x61\x63tor\x18\x01 \x01(\x02"`\n\x17RespondZoomRangeRequest\x12\x45\n\x13zoom_range_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"f\n\x18RespondZoomRangeResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x8c\x03\n\x0bInformation\x12\x13\n\x0bvendor_name\x18\x01 \x01(\t\x12\x12\n\nmodel_name\x18\x02 \x01(\t\x12\x18\n\x10\x66irmware_version\x18\x03 \x01(\t\x12\x17\n\x0f\x66ocal_length_mm\x18\x04 \x01(\x02\x12!\n\x19horizontal_sensor_size_mm\x18\x05 \x01(\x02\x12\x1f\n\x17vertical_sensor_size_mm\x18\x06 \x01(\x02\x12 \n\x18horizontal_resolution_px\x18\x07 \x01(\r\x12\x1e\n\x16vertical_resolution_px\x18\x08 \x01(\r\x12\x0f\n\x07lens_id\x18\t \x01(\r\x12\x1f\n\x17\x64\x65\x66inition_file_version\x18\n \x01(\r\x12\x1b\n\x13\x64\x65\x66inition_file_uri\x18\x0b \x01(\t\x12%\n\x1dimage_in_video_mode_supported\x18\x0c \x01(\x08\x12%\n\x1dvideo_in_image_mode_supported\x18\r \x01(\x08";\n\x0eVideoStreaming\x12\x17\n\x0fhas_rtsp_server\x18\x01 \x01(\x08\x12\x10\n\x08rtsp_uri\x18\x02 \x01(\t"q\n\x08Position\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x1b\n\x13relative_altitude_m\x18\x04 \x01(\x02"8\n\nQuaternion\x12\t\n\x01w\x18\x01 \x01(\x02\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12\t\n\x01z\x18\x04 \x01(\x02"\xd0\x01\n\x0b\x43\x61ptureInfo\x12\x34\n\x08position\x18\x01 \x01(\x0b\x32".mavsdk.rpc.camera_server.Position\x12\x41\n\x13\x61ttitude_quaternion\x18\x02 \x01(\x0b\x32$.mavsdk.rpc.camera_server.Quaternion\x12\x13\n\x0btime_utc_us\x18\x03 \x01(\x04\x12\x12\n\nis_success\x18\x04 \x01(\x08\x12\r\n\x05index\x18\x05 \x01(\x05\x12\x10\n\x08\x66ile_url\x18\x06 \x01(\t"\xb3\x02\n\x12\x43\x61meraServerResult\x12\x43\n\x06result\x18\x01 \x01(\x0e\x32\x33.mavsdk.rpc.camera_server.CameraServerResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xc3\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x16\n\x12RESULT_IN_PROGRESS\x10\x02\x12\x0f\n\x0bRESULT_BUSY\x10\x03\x12\x11\n\rRESULT_DENIED\x10\x04\x12\x10\n\x0cRESULT_ERROR\x10\x05\x12\x12\n\x0eRESULT_TIMEOUT\x10\x06\x12\x19\n\x15RESULT_WRONG_ARGUMENT\x10\x07\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x08"\x8c\x05\n\x12StorageInformation\x12\x18\n\x10used_storage_mib\x18\x01 \x01(\x02\x12\x1d\n\x15\x61vailable_storage_mib\x18\x02 \x01(\x02\x12\x19\n\x11total_storage_mib\x18\x03 \x01(\x02\x12R\n\x0estorage_status\x18\x04 \x01(\x0e\x32:.mavsdk.rpc.camera_server.StorageInformation.StorageStatus\x12\x12\n\nstorage_id\x18\x05 \x01(\r\x12N\n\x0cstorage_type\x18\x06 \x01(\x0e\x32\x38.mavsdk.rpc.camera_server.StorageInformation.StorageType\x12\x18\n\x10read_speed_mib_s\x18\x07 \x01(\x02\x12\x19\n\x11write_speed_mib_s\x18\x08 \x01(\x02"\x91\x01\n\rStorageStatus\x12 \n\x1cSTORAGE_STATUS_NOT_AVAILABLE\x10\x00\x12\x1e\n\x1aSTORAGE_STATUS_UNFORMATTED\x10\x01\x12\x1c\n\x18STORAGE_STATUS_FORMATTED\x10\x02\x12 \n\x1cSTORAGE_STATUS_NOT_SUPPORTED\x10\x03"\xa0\x01\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x1a\n\x16STORAGE_TYPE_USB_STICK\x10\x01\x12\x13\n\x0fSTORAGE_TYPE_SD\x10\x02\x12\x18\n\x14STORAGE_TYPE_MICROSD\x10\x03\x12\x13\n\x0fSTORAGE_TYPE_HD\x10\x07\x12\x17\n\x12STORAGE_TYPE_OTHER\x10\xfe\x01"\xee\x03\n\rCaptureStatus\x12\x18\n\x10image_interval_s\x18\x01 \x01(\x02\x12\x18\n\x10recording_time_s\x18\x02 \x01(\x02\x12\x1e\n\x16\x61vailable_capacity_mib\x18\x03 \x01(\x02\x12I\n\x0cimage_status\x18\x04 \x01(\x0e\x32\x33.mavsdk.rpc.camera_server.CaptureStatus.ImageStatus\x12I\n\x0cvideo_status\x18\x05 \x01(\x0e\x32\x33.mavsdk.rpc.camera_server.CaptureStatus.VideoStatus\x12\x13\n\x0bimage_count\x18\x06 \x01(\x05"\x91\x01\n\x0bImageStatus\x12\x15\n\x11IMAGE_STATUS_IDLE\x10\x00\x12$\n IMAGE_STATUS_CAPTURE_IN_PROGRESS\x10\x01\x12\x1e\n\x1aIMAGE_STATUS_INTERVAL_IDLE\x10\x02\x12%\n!IMAGE_STATUS_INTERVAL_IN_PROGRESS\x10\x03"J\n\x0bVideoStatus\x12\x15\n\x11VIDEO_STATUS_IDLE\x10\x00\x12$\n VIDEO_STATUS_CAPTURE_IN_PROGRESS\x10\x01"\\\n\x1dSetTrackingPointStatusRequest\x12;\n\rtracked_point\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera_server.TrackPoint" \n\x1eSetTrackingPointStatusResponse"h\n!SetTrackingRectangleStatusRequest\x12\x43\n\x11tracked_rectangle\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera_server.TrackRectangle"$\n"SetTrackingRectangleStatusResponse"\x1d\n\x1bSetTrackingOffStatusRequest"\x1e\n\x1cSetTrackingOffStatusResponse"&\n$SubscribeTrackingPointCommandRequest"Y\n\x1cTrackingPointCommandResponse\x12\x39\n\x0btrack_point\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera_server.TrackPoint"*\n(SubscribeTrackingRectangleCommandRequest"e\n TrackingRectangleCommandResponse\x12\x41\n\x0ftrack_rectangle\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera_server.TrackRectangle"$\n"SubscribeTrackingOffCommandRequest"+\n\x1aTrackingOffCommandResponse\x12\r\n\x05\x64ummy\x18\x01 \x01(\x05"k\n"RespondTrackingPointCommandRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"q\n#RespondTrackingPointCommandResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"o\n&RespondTrackingRectangleCommandRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"u\n\'RespondTrackingRectangleCommandResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"i\n RespondTrackingOffCommandRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"o\n!RespondTrackingOffCommandResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult">\n\nTrackPoint\x12\x0f\n\x07point_x\x18\x01 \x01(\x02\x12\x0f\n\x07point_y\x18\x02 \x01(\x02\x12\x0e\n\x06radius\x18\x03 \x01(\x02"\x84\x01\n\x0eTrackRectangle\x12\x19\n\x11top_left_corner_x\x18\x01 \x01(\x02\x12\x19\n\x11top_left_corner_y\x18\x02 \x01(\x02\x12\x1d\n\x15\x62ottom_right_corner_x\x18\x03 \x01(\x02\x12\x1d\n\x15\x62ottom_right_corner_y\x18\x04 \x01(\x02*{\n\x0e\x43\x61meraFeedback\x12\x1b\n\x17\x43\x41MERA_FEEDBACK_UNKNOWN\x10\x00\x12\x16\n\x12\x43\x41MERA_FEEDBACK_OK\x10\x01\x12\x18\n\x14\x43\x41MERA_FEEDBACK_BUSY\x10\x02\x12\x1a\n\x16\x43\x41MERA_FEEDBACK_FAILED\x10\x03*8\n\x04Mode\x12\x10\n\x0cMODE_UNKNOWN\x10\x00\x12\x0e\n\nMODE_PHOTO\x10\x01\x12\x0e\n\nMODE_VIDEO\x10\x02\x32\xb8+\n\x13\x43\x61meraServerService\x12y\n\x0eSetInformation\x12/.mavsdk.rpc.camera_server.SetInformationRequest\x1a\x30.mavsdk.rpc.camera_server.SetInformationResponse"\x04\x80\xb5\x18\x01\x12\x82\x01\n\x11SetVideoStreaming\x12\x32.mavsdk.rpc.camera_server.SetVideoStreamingRequest\x1a\x33.mavsdk.rpc.camera_server.SetVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12v\n\rSetInProgress\x12..mavsdk.rpc.camera_server.SetInProgressRequest\x1a/.mavsdk.rpc.camera_server.SetInProgressResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeTakePhoto\x12\x33.mavsdk.rpc.camera_server.SubscribeTakePhotoRequest\x1a+.mavsdk.rpc.camera_server.TakePhotoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondTakePhoto\x12\x31.mavsdk.rpc.camera_server.RespondTakePhotoRequest\x1a\x32.mavsdk.rpc.camera_server.RespondTakePhotoResponse"\x04\x80\xb5\x18\x01\x12\x81\x01\n\x13SubscribeStartVideo\x12\x34.mavsdk.rpc.camera_server.SubscribeStartVideoRequest\x1a,.mavsdk.rpc.camera_server.StartVideoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x82\x01\n\x11RespondStartVideo\x12\x32.mavsdk.rpc.camera_server.RespondStartVideoRequest\x1a\x33.mavsdk.rpc.camera_server.RespondStartVideoResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeStopVideo\x12\x33.mavsdk.rpc.camera_server.SubscribeStopVideoRequest\x1a+.mavsdk.rpc.camera_server.StopVideoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondStopVideo\x12\x31.mavsdk.rpc.camera_server.RespondStopVideoRequest\x1a\x32.mavsdk.rpc.camera_server.RespondStopVideoResponse"\x04\x80\xb5\x18\x01\x12\x9c\x01\n\x1cSubscribeStartVideoStreaming\x12=.mavsdk.rpc.camera_server.SubscribeStartVideoStreamingRequest\x1a\x35.mavsdk.rpc.camera_server.StartVideoStreamingResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9d\x01\n\x1aRespondStartVideoStreaming\x12;.mavsdk.rpc.camera_server.RespondStartVideoStreamingRequest\x1a<.mavsdk.rpc.camera_server.RespondStartVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12\x99\x01\n\x1bSubscribeStopVideoStreaming\x12<.mavsdk.rpc.camera_server.SubscribeStopVideoStreamingRequest\x1a\x34.mavsdk.rpc.camera_server.StopVideoStreamingResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9a\x01\n\x19RespondStopVideoStreaming\x12:.mavsdk.rpc.camera_server.RespondStopVideoStreamingRequest\x1a;.mavsdk.rpc.camera_server.RespondStopVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12x\n\x10SubscribeSetMode\x12\x31.mavsdk.rpc.camera_server.SubscribeSetModeRequest\x1a).mavsdk.rpc.camera_server.SetModeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12y\n\x0eRespondSetMode\x12/.mavsdk.rpc.camera_server.RespondSetModeRequest\x1a\x30.mavsdk.rpc.camera_server.RespondSetModeResponse"\x04\x80\xb5\x18\x01\x12\x99\x01\n\x1bSubscribeStorageInformation\x12<.mavsdk.rpc.camera_server.SubscribeStorageInformationRequest\x1a\x34.mavsdk.rpc.camera_server.StorageInformationResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9a\x01\n\x19RespondStorageInformation\x12:.mavsdk.rpc.camera_server.RespondStorageInformationRequest\x1a;.mavsdk.rpc.camera_server.RespondStorageInformationResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeCaptureStatus\x12\x37.mavsdk.rpc.camera_server.SubscribeCaptureStatusRequest\x1a/.mavsdk.rpc.camera_server.CaptureStatusResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondCaptureStatus\x12\x35.mavsdk.rpc.camera_server.RespondCaptureStatusRequest\x1a\x36.mavsdk.rpc.camera_server.RespondCaptureStatusResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeFormatStorage\x12\x37.mavsdk.rpc.camera_server.SubscribeFormatStorageRequest\x1a/.mavsdk.rpc.camera_server.FormatStorageResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondFormatStorage\x12\x35.mavsdk.rpc.camera_server.RespondFormatStorageRequest\x1a\x36.mavsdk.rpc.camera_server.RespondFormatStorageResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeResetSettings\x12\x37.mavsdk.rpc.camera_server.SubscribeResetSettingsRequest\x1a/.mavsdk.rpc.camera_server.ResetSettingsResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondResetSettings\x12\x35.mavsdk.rpc.camera_server.RespondResetSettingsRequest\x1a\x36.mavsdk.rpc.camera_server.RespondResetSettingsResponse"\x04\x80\xb5\x18\x01\x12\x84\x01\n\x14SubscribeZoomInStart\x12\x35.mavsdk.rpc.camera_server.SubscribeZoomInStartRequest\x1a-.mavsdk.rpc.camera_server.ZoomInStartResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x85\x01\n\x12RespondZoomInStart\x12\x33.mavsdk.rpc.camera_server.RespondZoomInStartRequest\x1a\x34.mavsdk.rpc.camera_server.RespondZoomInStartResponse"\x04\x80\xb5\x18\x01\x12\x87\x01\n\x15SubscribeZoomOutStart\x12\x36.mavsdk.rpc.camera_server.SubscribeZoomOutStartRequest\x1a..mavsdk.rpc.camera_server.ZoomOutStartResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x88\x01\n\x13RespondZoomOutStart\x12\x34.mavsdk.rpc.camera_server.RespondZoomOutStartRequest\x1a\x35.mavsdk.rpc.camera_server.RespondZoomOutStartResponse"\x04\x80\xb5\x18\x01\x12{\n\x11SubscribeZoomStop\x12\x32.mavsdk.rpc.camera_server.SubscribeZoomStopRequest\x1a*.mavsdk.rpc.camera_server.ZoomStopResponse"\x04\x80\xb5\x18\x00\x30\x01\x12|\n\x0fRespondZoomStop\x12\x30.mavsdk.rpc.camera_server.RespondZoomStopRequest\x1a\x31.mavsdk.rpc.camera_server.RespondZoomStopResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeZoomRange\x12\x33.mavsdk.rpc.camera_server.SubscribeZoomRangeRequest\x1a+.mavsdk.rpc.camera_server.ZoomRangeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondZoomRange\x12\x31.mavsdk.rpc.camera_server.RespondZoomRangeRequest\x1a\x32.mavsdk.rpc.camera_server.RespondZoomRangeResponse"\x04\x80\xb5\x18\x01\x12\x9d\x01\n\x1aSetTrackingRectangleStatus\x12;.mavsdk.rpc.camera_server.SetTrackingRectangleStatusRequest\x1a<.mavsdk.rpc.camera_server.SetTrackingRectangleStatusResponse"\x04\x80\xb5\x18\x01\x12\x8b\x01\n\x14SetTrackingOffStatus\x12\x35.mavsdk.rpc.camera_server.SetTrackingOffStatusRequest\x1a\x36.mavsdk.rpc.camera_server.SetTrackingOffStatusResponse"\x04\x80\xb5\x18\x01\x12\x9f\x01\n\x1dSubscribeTrackingPointCommand\x12>.mavsdk.rpc.camera_server.SubscribeTrackingPointCommandRequest\x1a\x36.mavsdk.rpc.camera_server.TrackingPointCommandResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\xab\x01\n!SubscribeTrackingRectangleCommand\x12\x42.mavsdk.rpc.camera_server.SubscribeTrackingRectangleCommandRequest\x1a:.mavsdk.rpc.camera_server.TrackingRectangleCommandResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x99\x01\n\x1bSubscribeTrackingOffCommand\x12<.mavsdk.rpc.camera_server.SubscribeTrackingOffCommandRequest\x1a\x34.mavsdk.rpc.camera_server.TrackingOffCommandResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\xa0\x01\n\x1bRespondTrackingPointCommand\x12<.mavsdk.rpc.camera_server.RespondTrackingPointCommandRequest\x1a=.mavsdk.rpc.camera_server.RespondTrackingPointCommandResponse"\x04\x80\xb5\x18\x01\x12\xac\x01\n\x1fRespondTrackingRectangleCommand\x12@.mavsdk.rpc.camera_server.RespondTrackingRectangleCommandRequest\x1a\x41.mavsdk.rpc.camera_server.RespondTrackingRectangleCommandResponse"\x04\x80\xb5\x18\x01\x12\x9a\x01\n\x19RespondTrackingOffCommand\x12:.mavsdk.rpc.camera_server.RespondTrackingOffCommandRequest\x1a;.mavsdk.rpc.camera_server.RespondTrackingOffCommandResponse"\x04\x80\xb5\x18\x01\x42,\n\x17io.mavsdk.camera_serverB\x11\x43\x61meraServerProtob\x06proto3' + b'\n!camera_server/camera_server.proto\x12\x18mavsdk.rpc.camera_server\x1a\x14mavsdk_options.proto"S\n\x15SetInformationRequest\x12:\n\x0binformation\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.camera_server.Information"d\n\x16SetInformationResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"]\n\x18SetVideoStreamingRequest\x12\x41\n\x0fvideo_streaming\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera_server.VideoStreaming"g\n\x19SetVideoStreamingResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"+\n\x14SetInProgressRequest\x12\x13\n\x0bin_progress\x18\x01 \x01(\x08"c\n\x15SetInProgressResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeTakePhotoRequest""\n\x11TakePhotoResponse\x12\r\n\x05index\x18\x01 \x01(\x05"\x9d\x01\n\x17RespondTakePhotoRequest\x12\x45\n\x13take_photo_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback\x12;\n\x0c\x63\x61pture_info\x18\x02 \x01(\x0b\x32%.mavsdk.rpc.camera_server.CaptureInfo"f\n\x18RespondTakePhotoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1c\n\x1aSubscribeStartVideoRequest"\'\n\x12StartVideoResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"b\n\x18RespondStartVideoRequest\x12\x46\n\x14start_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"g\n\x19RespondStartVideoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeStopVideoRequest"&\n\x11StopVideoResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"`\n\x17RespondStopVideoRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"f\n\x18RespondStopVideoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"%\n#SubscribeStartVideoStreamingRequest"0\n\x1bStartVideoStreamingResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"u\n!RespondStartVideoStreamingRequest\x12P\n\x1estart_video_streaming_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"p\n"RespondStartVideoStreamingResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"$\n"SubscribeStopVideoStreamingRequest"/\n\x1aStopVideoStreamingResponse\x12\x11\n\tstream_id\x18\x01 \x01(\x05"s\n RespondStopVideoStreamingRequest\x12O\n\x1dstop_video_streaming_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"o\n!RespondStopVideoStreamingResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x19\n\x17SubscribeSetModeRequest"?\n\x0fSetModeResponse\x12,\n\x04mode\x18\x01 \x01(\x0e\x32\x1e.mavsdk.rpc.camera_server.Mode"\\\n\x15RespondSetModeRequest\x12\x43\n\x11set_mode_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"d\n\x16RespondSetModeResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"$\n"SubscribeStorageInformationRequest"0\n\x1aStorageInformationResponse\x12\x12\n\nstorage_id\x18\x01 \x01(\x05"\xbd\x01\n RespondStorageInformationRequest\x12N\n\x1cstorage_information_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback\x12I\n\x13storage_information\x18\x02 \x01(\x0b\x32,.mavsdk.rpc.camera_server.StorageInformation"o\n!RespondStorageInformationResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeCaptureStatusRequest")\n\x15\x43\x61ptureStatusResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"\xa9\x01\n\x1bRespondCaptureStatusRequest\x12I\n\x17\x63\x61pture_status_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback\x12?\n\x0e\x63\x61pture_status\x18\x02 \x01(\x0b\x32\'.mavsdk.rpc.camera_server.CaptureStatus"j\n\x1cRespondCaptureStatusResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeFormatStorageRequest"+\n\x15\x46ormatStorageResponse\x12\x12\n\nstorage_id\x18\x01 \x01(\x05"h\n\x1bRespondFormatStorageRequest\x12I\n\x17\x66ormat_storage_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"j\n\x1cRespondFormatStorageResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeResetSettingsRequest")\n\x15ResetSettingsResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"h\n\x1bRespondResetSettingsRequest\x12I\n\x17reset_settings_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"j\n\x1cRespondResetSettingsResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1d\n\x1bSubscribeZoomInStartRequest"\'\n\x13ZoomInStartResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"e\n\x19RespondZoomInStartRequest\x12H\n\x16zoom_in_start_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"h\n\x1aRespondZoomInStartResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1e\n\x1cSubscribeZoomOutStartRequest"(\n\x14ZoomOutStartResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"g\n\x1aRespondZoomOutStartRequest\x12I\n\x17zoom_out_start_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"i\n\x1bRespondZoomOutStartResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1a\n\x18SubscribeZoomStopRequest"$\n\x10ZoomStopResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"^\n\x16RespondZoomStopRequest\x12\x44\n\x12zoom_stop_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"e\n\x17RespondZoomStopResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeZoomRangeRequest"#\n\x11ZoomRangeResponse\x12\x0e\n\x06\x66\x61\x63tor\x18\x01 \x01(\x02"`\n\x17RespondZoomRangeRequest\x12\x45\n\x13zoom_range_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"f\n\x18RespondZoomRangeResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1d\n\x1bSubscribeFocusInStepRequest"\'\n\x13\x46ocusInStepResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"e\n\x19RespondFocusInStepRequest\x12H\n\x16\x66ocus_in_step_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"h\n\x1aRespondFocusInStepResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1e\n\x1cSubscribeFocusOutStepRequest"(\n\x14\x46ocusOutStepResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"g\n\x1aRespondFocusOutStepRequest\x12I\n\x17\x66ocus_out_step_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"i\n\x1bRespondFocusOutStepResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1e\n\x1cSubscribeFocusInStartRequest"(\n\x14\x46ocusInStartResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"g\n\x1aRespondFocusInStartRequest\x12I\n\x17\x66ocus_in_start_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"i\n\x1bRespondFocusInStartResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1f\n\x1dSubscribeFocusOutStartRequest")\n\x15\x46ocusOutStartResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"i\n\x1bRespondFocusOutStartRequest\x12J\n\x18\x66ocus_out_start_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"j\n\x1cRespondFocusOutStartResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeFocusStopRequest"%\n\x11\x46ocusStopResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"`\n\x17RespondFocusStopRequest\x12\x45\n\x13\x66ocus_stop_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"f\n\x18RespondFocusStopResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1c\n\x1aSubscribeFocusRangeRequest".\n\x12\x46ocusRangeResponse\x12\x18\n\x10\x66ocus_distance_m\x18\x01 \x01(\x02"b\n\x18RespondFocusRangeRequest\x12\x46\n\x14\x66ocus_range_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"g\n\x19RespondFocusRangeResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1d\n\x1bSubscribeFocusMetersRequest"/\n\x13\x46ocusMetersResponse\x12\x18\n\x10\x66ocus_distance_m\x18\x01 \x01(\x02"d\n\x19RespondFocusMetersRequest\x12G\n\x15\x66ocus_meters_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"h\n\x1aRespondFocusMetersResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x1b\n\x19SubscribeFocusAutoRequest"%\n\x11\x46ocusAutoResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"`\n\x17RespondFocusAutoRequest\x12\x45\n\x13\x66ocus_auto_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"f\n\x18RespondFocusAutoResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"!\n\x1fSubscribeFocusAutoSingleRequest"+\n\x17\x46ocusAutoSingleResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"m\n\x1dRespondFocusAutoSingleRequest\x12L\n\x1a\x66ocus_auto_single_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"l\n\x1eRespondFocusAutoSingleResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"%\n#SubscribeFocusAutoContinuousRequest"/\n\x1b\x46ocusAutoContinuousResponse\x12\x10\n\x08reserved\x18\x01 \x01(\x05"u\n!RespondFocusAutoContinuousRequest\x12P\n\x1e\x66ocus_auto_continuous_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"p\n"RespondFocusAutoContinuousResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"\x8c\x03\n\x0bInformation\x12\x13\n\x0bvendor_name\x18\x01 \x01(\t\x12\x12\n\nmodel_name\x18\x02 \x01(\t\x12\x18\n\x10\x66irmware_version\x18\x03 \x01(\t\x12\x17\n\x0f\x66ocal_length_mm\x18\x04 \x01(\x02\x12!\n\x19horizontal_sensor_size_mm\x18\x05 \x01(\x02\x12\x1f\n\x17vertical_sensor_size_mm\x18\x06 \x01(\x02\x12 \n\x18horizontal_resolution_px\x18\x07 \x01(\r\x12\x1e\n\x16vertical_resolution_px\x18\x08 \x01(\r\x12\x0f\n\x07lens_id\x18\t \x01(\r\x12\x1f\n\x17\x64\x65\x66inition_file_version\x18\n \x01(\r\x12\x1b\n\x13\x64\x65\x66inition_file_uri\x18\x0b \x01(\t\x12%\n\x1dimage_in_video_mode_supported\x18\x0c \x01(\x08\x12%\n\x1dvideo_in_image_mode_supported\x18\r \x01(\x08";\n\x0eVideoStreaming\x12\x17\n\x0fhas_rtsp_server\x18\x01 \x01(\x08\x12\x10\n\x08rtsp_uri\x18\x02 \x01(\t"q\n\x08Position\x12\x14\n\x0clatitude_deg\x18\x01 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x02 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x12\x1b\n\x13relative_altitude_m\x18\x04 \x01(\x02"8\n\nQuaternion\x12\t\n\x01w\x18\x01 \x01(\x02\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12\t\n\x01z\x18\x04 \x01(\x02"\xd0\x01\n\x0b\x43\x61ptureInfo\x12\x34\n\x08position\x18\x01 \x01(\x0b\x32".mavsdk.rpc.camera_server.Position\x12\x41\n\x13\x61ttitude_quaternion\x18\x02 \x01(\x0b\x32$.mavsdk.rpc.camera_server.Quaternion\x12\x13\n\x0btime_utc_us\x18\x03 \x01(\x04\x12\x12\n\nis_success\x18\x04 \x01(\x08\x12\r\n\x05index\x18\x05 \x01(\x05\x12\x10\n\x08\x66ile_url\x18\x06 \x01(\t"\xb3\x02\n\x12\x43\x61meraServerResult\x12\x43\n\x06result\x18\x01 \x01(\x0e\x32\x33.mavsdk.rpc.camera_server.CameraServerResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xc3\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x16\n\x12RESULT_IN_PROGRESS\x10\x02\x12\x0f\n\x0bRESULT_BUSY\x10\x03\x12\x11\n\rRESULT_DENIED\x10\x04\x12\x10\n\x0cRESULT_ERROR\x10\x05\x12\x12\n\x0eRESULT_TIMEOUT\x10\x06\x12\x19\n\x15RESULT_WRONG_ARGUMENT\x10\x07\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x08"\x8c\x05\n\x12StorageInformation\x12\x18\n\x10used_storage_mib\x18\x01 \x01(\x02\x12\x1d\n\x15\x61vailable_storage_mib\x18\x02 \x01(\x02\x12\x19\n\x11total_storage_mib\x18\x03 \x01(\x02\x12R\n\x0estorage_status\x18\x04 \x01(\x0e\x32:.mavsdk.rpc.camera_server.StorageInformation.StorageStatus\x12\x12\n\nstorage_id\x18\x05 \x01(\r\x12N\n\x0cstorage_type\x18\x06 \x01(\x0e\x32\x38.mavsdk.rpc.camera_server.StorageInformation.StorageType\x12\x18\n\x10read_speed_mib_s\x18\x07 \x01(\x02\x12\x19\n\x11write_speed_mib_s\x18\x08 \x01(\x02"\x91\x01\n\rStorageStatus\x12 \n\x1cSTORAGE_STATUS_NOT_AVAILABLE\x10\x00\x12\x1e\n\x1aSTORAGE_STATUS_UNFORMATTED\x10\x01\x12\x1c\n\x18STORAGE_STATUS_FORMATTED\x10\x02\x12 \n\x1cSTORAGE_STATUS_NOT_SUPPORTED\x10\x03"\xa0\x01\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x1a\n\x16STORAGE_TYPE_USB_STICK\x10\x01\x12\x13\n\x0fSTORAGE_TYPE_SD\x10\x02\x12\x18\n\x14STORAGE_TYPE_MICROSD\x10\x03\x12\x13\n\x0fSTORAGE_TYPE_HD\x10\x07\x12\x17\n\x12STORAGE_TYPE_OTHER\x10\xfe\x01"\xee\x03\n\rCaptureStatus\x12\x18\n\x10image_interval_s\x18\x01 \x01(\x02\x12\x18\n\x10recording_time_s\x18\x02 \x01(\x02\x12\x1e\n\x16\x61vailable_capacity_mib\x18\x03 \x01(\x02\x12I\n\x0cimage_status\x18\x04 \x01(\x0e\x32\x33.mavsdk.rpc.camera_server.CaptureStatus.ImageStatus\x12I\n\x0cvideo_status\x18\x05 \x01(\x0e\x32\x33.mavsdk.rpc.camera_server.CaptureStatus.VideoStatus\x12\x13\n\x0bimage_count\x18\x06 \x01(\x05"\x91\x01\n\x0bImageStatus\x12\x15\n\x11IMAGE_STATUS_IDLE\x10\x00\x12$\n IMAGE_STATUS_CAPTURE_IN_PROGRESS\x10\x01\x12\x1e\n\x1aIMAGE_STATUS_INTERVAL_IDLE\x10\x02\x12%\n!IMAGE_STATUS_INTERVAL_IN_PROGRESS\x10\x03"J\n\x0bVideoStatus\x12\x15\n\x11VIDEO_STATUS_IDLE\x10\x00\x12$\n VIDEO_STATUS_CAPTURE_IN_PROGRESS\x10\x01"\\\n\x1dSetTrackingPointStatusRequest\x12;\n\rtracked_point\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera_server.TrackPoint" \n\x1eSetTrackingPointStatusResponse"h\n!SetTrackingRectangleStatusRequest\x12\x43\n\x11tracked_rectangle\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera_server.TrackRectangle"$\n"SetTrackingRectangleStatusResponse"\x1d\n\x1bSetTrackingOffStatusRequest"\x1e\n\x1cSetTrackingOffStatusResponse"&\n$SubscribeTrackingPointCommandRequest"Y\n\x1cTrackingPointCommandResponse\x12\x39\n\x0btrack_point\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera_server.TrackPoint"*\n(SubscribeTrackingRectangleCommandRequest"e\n TrackingRectangleCommandResponse\x12\x41\n\x0ftrack_rectangle\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.camera_server.TrackRectangle"$\n"SubscribeTrackingOffCommandRequest"+\n\x1aTrackingOffCommandResponse\x12\r\n\x05\x64ummy\x18\x01 \x01(\x05"k\n"RespondTrackingPointCommandRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"q\n#RespondTrackingPointCommandResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"o\n&RespondTrackingRectangleCommandRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"u\n\'RespondTrackingRectangleCommandResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"i\n RespondTrackingOffCommandRequest\x12\x45\n\x13stop_video_feedback\x18\x01 \x01(\x0e\x32(.mavsdk.rpc.camera_server.CameraFeedback"o\n!RespondTrackingOffCommandResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"J\n\x12SetPositionRequest\x12\x34\n\x08position\x18\x01 \x01(\x0b\x32".mavsdk.rpc.camera_server.Position"a\n\x13SetPositionResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"a\n\x1cSetAttitudeQuaternionRequest\x12\x41\n\x13\x61ttitude_quaternion\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.camera_server.Quaternion"k\n\x1dSetAttitudeQuaternionResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"+\n\x14SetZoomFactorRequest\x12\x13\n\x0bzoom_factor\x18\x01 \x01(\x02"c\n\x15SetZoomFactorResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult"M\n\x15SetFieldOfViewRequest\x12\x1a\n\x12horizontal_fov_deg\x18\x01 \x01(\x02\x12\x18\n\x10vertical_fov_deg\x18\x02 \x01(\x02"d\n\x16SetFieldOfViewResponse\x12J\n\x14\x63\x61mera_server_result\x18\x01 \x01(\x0b\x32,.mavsdk.rpc.camera_server.CameraServerResult">\n\nTrackPoint\x12\x0f\n\x07point_x\x18\x01 \x01(\x02\x12\x0f\n\x07point_y\x18\x02 \x01(\x02\x12\x0e\n\x06radius\x18\x03 \x01(\x02"\x84\x01\n\x0eTrackRectangle\x12\x19\n\x11top_left_corner_x\x18\x01 \x01(\x02\x12\x19\n\x11top_left_corner_y\x18\x02 \x01(\x02\x12\x1d\n\x15\x62ottom_right_corner_x\x18\x03 \x01(\x02\x12\x1d\n\x15\x62ottom_right_corner_y\x18\x04 \x01(\x02*{\n\x0e\x43\x61meraFeedback\x12\x1b\n\x17\x43\x41MERA_FEEDBACK_UNKNOWN\x10\x00\x12\x16\n\x12\x43\x41MERA_FEEDBACK_OK\x10\x01\x12\x18\n\x14\x43\x41MERA_FEEDBACK_BUSY\x10\x02\x12\x1a\n\x16\x43\x41MERA_FEEDBACK_FAILED\x10\x03*8\n\x04Mode\x12\x10\n\x0cMODE_UNKNOWN\x10\x00\x12\x0e\n\nMODE_PHOTO\x10\x01\x12\x0e\n\nMODE_VIDEO\x10\x02\x32\x82\x45\n\x13\x43\x61meraServerService\x12y\n\x0eSetInformation\x12/.mavsdk.rpc.camera_server.SetInformationRequest\x1a\x30.mavsdk.rpc.camera_server.SetInformationResponse"\x04\x80\xb5\x18\x01\x12\x82\x01\n\x11SetVideoStreaming\x12\x32.mavsdk.rpc.camera_server.SetVideoStreamingRequest\x1a\x33.mavsdk.rpc.camera_server.SetVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12v\n\rSetInProgress\x12..mavsdk.rpc.camera_server.SetInProgressRequest\x1a/.mavsdk.rpc.camera_server.SetInProgressResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeTakePhoto\x12\x33.mavsdk.rpc.camera_server.SubscribeTakePhotoRequest\x1a+.mavsdk.rpc.camera_server.TakePhotoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondTakePhoto\x12\x31.mavsdk.rpc.camera_server.RespondTakePhotoRequest\x1a\x32.mavsdk.rpc.camera_server.RespondTakePhotoResponse"\x04\x80\xb5\x18\x01\x12\x81\x01\n\x13SubscribeStartVideo\x12\x34.mavsdk.rpc.camera_server.SubscribeStartVideoRequest\x1a,.mavsdk.rpc.camera_server.StartVideoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x82\x01\n\x11RespondStartVideo\x12\x32.mavsdk.rpc.camera_server.RespondStartVideoRequest\x1a\x33.mavsdk.rpc.camera_server.RespondStartVideoResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeStopVideo\x12\x33.mavsdk.rpc.camera_server.SubscribeStopVideoRequest\x1a+.mavsdk.rpc.camera_server.StopVideoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondStopVideo\x12\x31.mavsdk.rpc.camera_server.RespondStopVideoRequest\x1a\x32.mavsdk.rpc.camera_server.RespondStopVideoResponse"\x04\x80\xb5\x18\x01\x12\x9c\x01\n\x1cSubscribeStartVideoStreaming\x12=.mavsdk.rpc.camera_server.SubscribeStartVideoStreamingRequest\x1a\x35.mavsdk.rpc.camera_server.StartVideoStreamingResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9d\x01\n\x1aRespondStartVideoStreaming\x12;.mavsdk.rpc.camera_server.RespondStartVideoStreamingRequest\x1a<.mavsdk.rpc.camera_server.RespondStartVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12\x99\x01\n\x1bSubscribeStopVideoStreaming\x12<.mavsdk.rpc.camera_server.SubscribeStopVideoStreamingRequest\x1a\x34.mavsdk.rpc.camera_server.StopVideoStreamingResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9a\x01\n\x19RespondStopVideoStreaming\x12:.mavsdk.rpc.camera_server.RespondStopVideoStreamingRequest\x1a;.mavsdk.rpc.camera_server.RespondStopVideoStreamingResponse"\x04\x80\xb5\x18\x01\x12x\n\x10SubscribeSetMode\x12\x31.mavsdk.rpc.camera_server.SubscribeSetModeRequest\x1a).mavsdk.rpc.camera_server.SetModeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12y\n\x0eRespondSetMode\x12/.mavsdk.rpc.camera_server.RespondSetModeRequest\x1a\x30.mavsdk.rpc.camera_server.RespondSetModeResponse"\x04\x80\xb5\x18\x01\x12\x99\x01\n\x1bSubscribeStorageInformation\x12<.mavsdk.rpc.camera_server.SubscribeStorageInformationRequest\x1a\x34.mavsdk.rpc.camera_server.StorageInformationResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9a\x01\n\x19RespondStorageInformation\x12:.mavsdk.rpc.camera_server.RespondStorageInformationRequest\x1a;.mavsdk.rpc.camera_server.RespondStorageInformationResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeCaptureStatus\x12\x37.mavsdk.rpc.camera_server.SubscribeCaptureStatusRequest\x1a/.mavsdk.rpc.camera_server.CaptureStatusResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondCaptureStatus\x12\x35.mavsdk.rpc.camera_server.RespondCaptureStatusRequest\x1a\x36.mavsdk.rpc.camera_server.RespondCaptureStatusResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeFormatStorage\x12\x37.mavsdk.rpc.camera_server.SubscribeFormatStorageRequest\x1a/.mavsdk.rpc.camera_server.FormatStorageResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondFormatStorage\x12\x35.mavsdk.rpc.camera_server.RespondFormatStorageRequest\x1a\x36.mavsdk.rpc.camera_server.RespondFormatStorageResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeResetSettings\x12\x37.mavsdk.rpc.camera_server.SubscribeResetSettingsRequest\x1a/.mavsdk.rpc.camera_server.ResetSettingsResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondResetSettings\x12\x35.mavsdk.rpc.camera_server.RespondResetSettingsRequest\x1a\x36.mavsdk.rpc.camera_server.RespondResetSettingsResponse"\x04\x80\xb5\x18\x01\x12\x84\x01\n\x14SubscribeZoomInStart\x12\x35.mavsdk.rpc.camera_server.SubscribeZoomInStartRequest\x1a-.mavsdk.rpc.camera_server.ZoomInStartResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x85\x01\n\x12RespondZoomInStart\x12\x33.mavsdk.rpc.camera_server.RespondZoomInStartRequest\x1a\x34.mavsdk.rpc.camera_server.RespondZoomInStartResponse"\x04\x80\xb5\x18\x01\x12\x87\x01\n\x15SubscribeZoomOutStart\x12\x36.mavsdk.rpc.camera_server.SubscribeZoomOutStartRequest\x1a..mavsdk.rpc.camera_server.ZoomOutStartResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x88\x01\n\x13RespondZoomOutStart\x12\x34.mavsdk.rpc.camera_server.RespondZoomOutStartRequest\x1a\x35.mavsdk.rpc.camera_server.RespondZoomOutStartResponse"\x04\x80\xb5\x18\x01\x12{\n\x11SubscribeZoomStop\x12\x32.mavsdk.rpc.camera_server.SubscribeZoomStopRequest\x1a*.mavsdk.rpc.camera_server.ZoomStopResponse"\x04\x80\xb5\x18\x00\x30\x01\x12|\n\x0fRespondZoomStop\x12\x30.mavsdk.rpc.camera_server.RespondZoomStopRequest\x1a\x31.mavsdk.rpc.camera_server.RespondZoomStopResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeZoomRange\x12\x33.mavsdk.rpc.camera_server.SubscribeZoomRangeRequest\x1a+.mavsdk.rpc.camera_server.ZoomRangeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondZoomRange\x12\x31.mavsdk.rpc.camera_server.RespondZoomRangeRequest\x1a\x32.mavsdk.rpc.camera_server.RespondZoomRangeResponse"\x04\x80\xb5\x18\x01\x12\x84\x01\n\x14SubscribeFocusInStep\x12\x35.mavsdk.rpc.camera_server.SubscribeFocusInStepRequest\x1a-.mavsdk.rpc.camera_server.FocusInStepResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x85\x01\n\x12RespondFocusInStep\x12\x33.mavsdk.rpc.camera_server.RespondFocusInStepRequest\x1a\x34.mavsdk.rpc.camera_server.RespondFocusInStepResponse"\x04\x80\xb5\x18\x01\x12\x87\x01\n\x15SubscribeFocusOutStep\x12\x36.mavsdk.rpc.camera_server.SubscribeFocusOutStepRequest\x1a..mavsdk.rpc.camera_server.FocusOutStepResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x88\x01\n\x13RespondFocusOutStep\x12\x34.mavsdk.rpc.camera_server.RespondFocusOutStepRequest\x1a\x35.mavsdk.rpc.camera_server.RespondFocusOutStepResponse"\x04\x80\xb5\x18\x01\x12\x87\x01\n\x15SubscribeFocusInStart\x12\x36.mavsdk.rpc.camera_server.SubscribeFocusInStartRequest\x1a..mavsdk.rpc.camera_server.FocusInStartResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x88\x01\n\x13RespondFocusInStart\x12\x34.mavsdk.rpc.camera_server.RespondFocusInStartRequest\x1a\x35.mavsdk.rpc.camera_server.RespondFocusInStartResponse"\x04\x80\xb5\x18\x01\x12\x8a\x01\n\x16SubscribeFocusOutStart\x12\x37.mavsdk.rpc.camera_server.SubscribeFocusOutStartRequest\x1a/.mavsdk.rpc.camera_server.FocusOutStartResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x8b\x01\n\x14RespondFocusOutStart\x12\x35.mavsdk.rpc.camera_server.RespondFocusOutStartRequest\x1a\x36.mavsdk.rpc.camera_server.RespondFocusOutStartResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeFocusStop\x12\x33.mavsdk.rpc.camera_server.SubscribeFocusStopRequest\x1a+.mavsdk.rpc.camera_server.FocusStopResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondFocusStop\x12\x31.mavsdk.rpc.camera_server.RespondFocusStopRequest\x1a\x32.mavsdk.rpc.camera_server.RespondFocusStopResponse"\x04\x80\xb5\x18\x01\x12\x81\x01\n\x13SubscribeFocusRange\x12\x34.mavsdk.rpc.camera_server.SubscribeFocusRangeRequest\x1a,.mavsdk.rpc.camera_server.FocusRangeResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x82\x01\n\x11RespondFocusRange\x12\x32.mavsdk.rpc.camera_server.RespondFocusRangeRequest\x1a\x33.mavsdk.rpc.camera_server.RespondFocusRangeResponse"\x04\x80\xb5\x18\x01\x12\x84\x01\n\x14SubscribeFocusMeters\x12\x35.mavsdk.rpc.camera_server.SubscribeFocusMetersRequest\x1a-.mavsdk.rpc.camera_server.FocusMetersResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x85\x01\n\x12RespondFocusMeters\x12\x33.mavsdk.rpc.camera_server.RespondFocusMetersRequest\x1a\x34.mavsdk.rpc.camera_server.RespondFocusMetersResponse"\x04\x80\xb5\x18\x01\x12~\n\x12SubscribeFocusAuto\x12\x33.mavsdk.rpc.camera_server.SubscribeFocusAutoRequest\x1a+.mavsdk.rpc.camera_server.FocusAutoResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x7f\n\x10RespondFocusAuto\x12\x31.mavsdk.rpc.camera_server.RespondFocusAutoRequest\x1a\x32.mavsdk.rpc.camera_server.RespondFocusAutoResponse"\x04\x80\xb5\x18\x01\x12\x90\x01\n\x18SubscribeFocusAutoSingle\x12\x39.mavsdk.rpc.camera_server.SubscribeFocusAutoSingleRequest\x1a\x31.mavsdk.rpc.camera_server.FocusAutoSingleResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x91\x01\n\x16RespondFocusAutoSingle\x12\x37.mavsdk.rpc.camera_server.RespondFocusAutoSingleRequest\x1a\x38.mavsdk.rpc.camera_server.RespondFocusAutoSingleResponse"\x04\x80\xb5\x18\x01\x12\x9c\x01\n\x1cSubscribeFocusAutoContinuous\x12=.mavsdk.rpc.camera_server.SubscribeFocusAutoContinuousRequest\x1a\x35.mavsdk.rpc.camera_server.FocusAutoContinuousResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9d\x01\n\x1aRespondFocusAutoContinuous\x12;.mavsdk.rpc.camera_server.RespondFocusAutoContinuousRequest\x1a<.mavsdk.rpc.camera_server.RespondFocusAutoContinuousResponse"\x04\x80\xb5\x18\x01\x12\x9d\x01\n\x1aSetTrackingRectangleStatus\x12;.mavsdk.rpc.camera_server.SetTrackingRectangleStatusRequest\x1a<.mavsdk.rpc.camera_server.SetTrackingRectangleStatusResponse"\x04\x80\xb5\x18\x01\x12\x8b\x01\n\x14SetTrackingOffStatus\x12\x35.mavsdk.rpc.camera_server.SetTrackingOffStatusRequest\x1a\x36.mavsdk.rpc.camera_server.SetTrackingOffStatusResponse"\x04\x80\xb5\x18\x01\x12\x9f\x01\n\x1dSubscribeTrackingPointCommand\x12>.mavsdk.rpc.camera_server.SubscribeTrackingPointCommandRequest\x1a\x36.mavsdk.rpc.camera_server.TrackingPointCommandResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\xab\x01\n!SubscribeTrackingRectangleCommand\x12\x42.mavsdk.rpc.camera_server.SubscribeTrackingRectangleCommandRequest\x1a:.mavsdk.rpc.camera_server.TrackingRectangleCommandResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x99\x01\n\x1bSubscribeTrackingOffCommand\x12<.mavsdk.rpc.camera_server.SubscribeTrackingOffCommandRequest\x1a\x34.mavsdk.rpc.camera_server.TrackingOffCommandResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\xa0\x01\n\x1bRespondTrackingPointCommand\x12<.mavsdk.rpc.camera_server.RespondTrackingPointCommandRequest\x1a=.mavsdk.rpc.camera_server.RespondTrackingPointCommandResponse"\x04\x80\xb5\x18\x01\x12\xac\x01\n\x1fRespondTrackingRectangleCommand\x12@.mavsdk.rpc.camera_server.RespondTrackingRectangleCommandRequest\x1a\x41.mavsdk.rpc.camera_server.RespondTrackingRectangleCommandResponse"\x04\x80\xb5\x18\x01\x12\x9a\x01\n\x19RespondTrackingOffCommand\x12:.mavsdk.rpc.camera_server.RespondTrackingOffCommandRequest\x1a;.mavsdk.rpc.camera_server.RespondTrackingOffCommandResponse"\x04\x80\xb5\x18\x01\x12p\n\x0bSetPosition\x12,.mavsdk.rpc.camera_server.SetPositionRequest\x1a-.mavsdk.rpc.camera_server.SetPositionResponse"\x04\x80\xb5\x18\x01\x12\x8e\x01\n\x15SetAttitudeQuaternion\x12\x36.mavsdk.rpc.camera_server.SetAttitudeQuaternionRequest\x1a\x37.mavsdk.rpc.camera_server.SetAttitudeQuaternionResponse"\x04\x80\xb5\x18\x01\x12v\n\rSetZoomFactor\x12..mavsdk.rpc.camera_server.SetZoomFactorRequest\x1a/.mavsdk.rpc.camera_server.SetZoomFactorResponse"\x04\x80\xb5\x18\x01\x12y\n\x0eSetFieldOfView\x12/.mavsdk.rpc.camera_server.SetFieldOfViewRequest\x1a\x30.mavsdk.rpc.camera_server.SetFieldOfViewResponse"\x04\x80\xb5\x18\x01\x42,\n\x17io.mavsdk.camera_serverB\x11\x43\x61meraServerProtob\x06proto3' ) _globals = globals() @@ -222,6 +222,126 @@ _globals["_CAMERASERVERSERVICE"].methods_by_name[ "RespondZoomRange" ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusInStep" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusInStep" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusInStep" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusInStep" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusOutStep" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusOutStep" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusOutStep" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusOutStep" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusInStart" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusInStart" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusInStart" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusInStart" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusOutStart" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusOutStart" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusOutStart" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusOutStart" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusStop" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusStop" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusStop" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusStop" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusRange" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusRange" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusRange" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusRange" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusMeters" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusMeters" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusMeters" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusMeters" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusAuto" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusAuto" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusAuto" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusAuto" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusAutoSingle" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusAutoSingle" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusAutoSingle" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusAutoSingle" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusAutoContinuous" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SubscribeFocusAutoContinuous" + ]._serialized_options = b"\200\265\030\000" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusAutoContinuous" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "RespondFocusAutoContinuous" + ]._serialized_options = b"\200\265\030\001" _globals["_CAMERASERVERSERVICE"].methods_by_name[ "SetTrackingRectangleStatus" ]._loaded_options = None @@ -270,10 +390,34 @@ _globals["_CAMERASERVERSERVICE"].methods_by_name[ "RespondTrackingOffCommand" ]._serialized_options = b"\200\265\030\001" - _globals["_CAMERAFEEDBACK"]._serialized_start = 8729 - _globals["_CAMERAFEEDBACK"]._serialized_end = 8852 - _globals["_MODE"]._serialized_start = 8854 - _globals["_MODE"]._serialized_end = 8910 + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetPosition" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetPosition" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetAttitudeQuaternion" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetAttitudeQuaternion" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetZoomFactor" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetZoomFactor" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetFieldOfView" + ]._loaded_options = None + _globals["_CAMERASERVERSERVICE"].methods_by_name[ + "SetFieldOfView" + ]._serialized_options = b"\200\265\030\001" + _globals["_CAMERAFEEDBACK"]._serialized_start = 12316 + _globals["_CAMERAFEEDBACK"]._serialized_end = 12439 + _globals["_MODE"]._serialized_start = 12441 + _globals["_MODE"]._serialized_end = 12497 _globals["_SETINFORMATIONREQUEST"]._serialized_start = 85 _globals["_SETINFORMATIONREQUEST"]._serialized_end = 168 _globals["_SETINFORMATIONRESPONSE"]._serialized_start = 170 @@ -398,72 +542,168 @@ _globals["_RESPONDZOOMRANGEREQUEST"]._serialized_end = 4746 _globals["_RESPONDZOOMRANGERESPONSE"]._serialized_start = 4748 _globals["_RESPONDZOOMRANGERESPONSE"]._serialized_end = 4850 - _globals["_INFORMATION"]._serialized_start = 4853 - _globals["_INFORMATION"]._serialized_end = 5249 - _globals["_VIDEOSTREAMING"]._serialized_start = 5251 - _globals["_VIDEOSTREAMING"]._serialized_end = 5310 - _globals["_POSITION"]._serialized_start = 5312 - _globals["_POSITION"]._serialized_end = 5425 - _globals["_QUATERNION"]._serialized_start = 5427 - _globals["_QUATERNION"]._serialized_end = 5483 - _globals["_CAPTUREINFO"]._serialized_start = 5486 - _globals["_CAPTUREINFO"]._serialized_end = 5694 - _globals["_CAMERASERVERRESULT"]._serialized_start = 5697 - _globals["_CAMERASERVERRESULT"]._serialized_end = 6004 - _globals["_CAMERASERVERRESULT_RESULT"]._serialized_start = 5809 - _globals["_CAMERASERVERRESULT_RESULT"]._serialized_end = 6004 - _globals["_STORAGEINFORMATION"]._serialized_start = 6007 - _globals["_STORAGEINFORMATION"]._serialized_end = 6659 - _globals["_STORAGEINFORMATION_STORAGESTATUS"]._serialized_start = 6351 - _globals["_STORAGEINFORMATION_STORAGESTATUS"]._serialized_end = 6496 - _globals["_STORAGEINFORMATION_STORAGETYPE"]._serialized_start = 6499 - _globals["_STORAGEINFORMATION_STORAGETYPE"]._serialized_end = 6659 - _globals["_CAPTURESTATUS"]._serialized_start = 6662 - _globals["_CAPTURESTATUS"]._serialized_end = 7156 - _globals["_CAPTURESTATUS_IMAGESTATUS"]._serialized_start = 6935 - _globals["_CAPTURESTATUS_IMAGESTATUS"]._serialized_end = 7080 - _globals["_CAPTURESTATUS_VIDEOSTATUS"]._serialized_start = 7082 - _globals["_CAPTURESTATUS_VIDEOSTATUS"]._serialized_end = 7156 - _globals["_SETTRACKINGPOINTSTATUSREQUEST"]._serialized_start = 7158 - _globals["_SETTRACKINGPOINTSTATUSREQUEST"]._serialized_end = 7250 - _globals["_SETTRACKINGPOINTSTATUSRESPONSE"]._serialized_start = 7252 - _globals["_SETTRACKINGPOINTSTATUSRESPONSE"]._serialized_end = 7284 - _globals["_SETTRACKINGRECTANGLESTATUSREQUEST"]._serialized_start = 7286 - _globals["_SETTRACKINGRECTANGLESTATUSREQUEST"]._serialized_end = 7390 - _globals["_SETTRACKINGRECTANGLESTATUSRESPONSE"]._serialized_start = 7392 - _globals["_SETTRACKINGRECTANGLESTATUSRESPONSE"]._serialized_end = 7428 - _globals["_SETTRACKINGOFFSTATUSREQUEST"]._serialized_start = 7430 - _globals["_SETTRACKINGOFFSTATUSREQUEST"]._serialized_end = 7459 - _globals["_SETTRACKINGOFFSTATUSRESPONSE"]._serialized_start = 7461 - _globals["_SETTRACKINGOFFSTATUSRESPONSE"]._serialized_end = 7491 - _globals["_SUBSCRIBETRACKINGPOINTCOMMANDREQUEST"]._serialized_start = 7493 - _globals["_SUBSCRIBETRACKINGPOINTCOMMANDREQUEST"]._serialized_end = 7531 - _globals["_TRACKINGPOINTCOMMANDRESPONSE"]._serialized_start = 7533 - _globals["_TRACKINGPOINTCOMMANDRESPONSE"]._serialized_end = 7622 - _globals["_SUBSCRIBETRACKINGRECTANGLECOMMANDREQUEST"]._serialized_start = 7624 - _globals["_SUBSCRIBETRACKINGRECTANGLECOMMANDREQUEST"]._serialized_end = 7666 - _globals["_TRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_start = 7668 - _globals["_TRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_end = 7769 - _globals["_SUBSCRIBETRACKINGOFFCOMMANDREQUEST"]._serialized_start = 7771 - _globals["_SUBSCRIBETRACKINGOFFCOMMANDREQUEST"]._serialized_end = 7807 - _globals["_TRACKINGOFFCOMMANDRESPONSE"]._serialized_start = 7809 - _globals["_TRACKINGOFFCOMMANDRESPONSE"]._serialized_end = 7852 - _globals["_RESPONDTRACKINGPOINTCOMMANDREQUEST"]._serialized_start = 7854 - _globals["_RESPONDTRACKINGPOINTCOMMANDREQUEST"]._serialized_end = 7961 - _globals["_RESPONDTRACKINGPOINTCOMMANDRESPONSE"]._serialized_start = 7963 - _globals["_RESPONDTRACKINGPOINTCOMMANDRESPONSE"]._serialized_end = 8076 - _globals["_RESPONDTRACKINGRECTANGLECOMMANDREQUEST"]._serialized_start = 8078 - _globals["_RESPONDTRACKINGRECTANGLECOMMANDREQUEST"]._serialized_end = 8189 - _globals["_RESPONDTRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_start = 8191 - _globals["_RESPONDTRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_end = 8308 - _globals["_RESPONDTRACKINGOFFCOMMANDREQUEST"]._serialized_start = 8310 - _globals["_RESPONDTRACKINGOFFCOMMANDREQUEST"]._serialized_end = 8415 - _globals["_RESPONDTRACKINGOFFCOMMANDRESPONSE"]._serialized_start = 8417 - _globals["_RESPONDTRACKINGOFFCOMMANDRESPONSE"]._serialized_end = 8528 - _globals["_TRACKPOINT"]._serialized_start = 8530 - _globals["_TRACKPOINT"]._serialized_end = 8592 - _globals["_TRACKRECTANGLE"]._serialized_start = 8595 - _globals["_TRACKRECTANGLE"]._serialized_end = 8727 - _globals["_CAMERASERVERSERVICE"]._serialized_start = 8913 - _globals["_CAMERASERVERSERVICE"]._serialized_end = 14473 + _globals["_SUBSCRIBEFOCUSINSTEPREQUEST"]._serialized_start = 4852 + _globals["_SUBSCRIBEFOCUSINSTEPREQUEST"]._serialized_end = 4881 + _globals["_FOCUSINSTEPRESPONSE"]._serialized_start = 4883 + _globals["_FOCUSINSTEPRESPONSE"]._serialized_end = 4922 + _globals["_RESPONDFOCUSINSTEPREQUEST"]._serialized_start = 4924 + _globals["_RESPONDFOCUSINSTEPREQUEST"]._serialized_end = 5025 + _globals["_RESPONDFOCUSINSTEPRESPONSE"]._serialized_start = 5027 + _globals["_RESPONDFOCUSINSTEPRESPONSE"]._serialized_end = 5131 + _globals["_SUBSCRIBEFOCUSOUTSTEPREQUEST"]._serialized_start = 5133 + _globals["_SUBSCRIBEFOCUSOUTSTEPREQUEST"]._serialized_end = 5163 + _globals["_FOCUSOUTSTEPRESPONSE"]._serialized_start = 5165 + _globals["_FOCUSOUTSTEPRESPONSE"]._serialized_end = 5205 + _globals["_RESPONDFOCUSOUTSTEPREQUEST"]._serialized_start = 5207 + _globals["_RESPONDFOCUSOUTSTEPREQUEST"]._serialized_end = 5310 + _globals["_RESPONDFOCUSOUTSTEPRESPONSE"]._serialized_start = 5312 + _globals["_RESPONDFOCUSOUTSTEPRESPONSE"]._serialized_end = 5417 + _globals["_SUBSCRIBEFOCUSINSTARTREQUEST"]._serialized_start = 5419 + _globals["_SUBSCRIBEFOCUSINSTARTREQUEST"]._serialized_end = 5449 + _globals["_FOCUSINSTARTRESPONSE"]._serialized_start = 5451 + _globals["_FOCUSINSTARTRESPONSE"]._serialized_end = 5491 + _globals["_RESPONDFOCUSINSTARTREQUEST"]._serialized_start = 5493 + _globals["_RESPONDFOCUSINSTARTREQUEST"]._serialized_end = 5596 + _globals["_RESPONDFOCUSINSTARTRESPONSE"]._serialized_start = 5598 + _globals["_RESPONDFOCUSINSTARTRESPONSE"]._serialized_end = 5703 + _globals["_SUBSCRIBEFOCUSOUTSTARTREQUEST"]._serialized_start = 5705 + _globals["_SUBSCRIBEFOCUSOUTSTARTREQUEST"]._serialized_end = 5736 + _globals["_FOCUSOUTSTARTRESPONSE"]._serialized_start = 5738 + _globals["_FOCUSOUTSTARTRESPONSE"]._serialized_end = 5779 + _globals["_RESPONDFOCUSOUTSTARTREQUEST"]._serialized_start = 5781 + _globals["_RESPONDFOCUSOUTSTARTREQUEST"]._serialized_end = 5886 + _globals["_RESPONDFOCUSOUTSTARTRESPONSE"]._serialized_start = 5888 + _globals["_RESPONDFOCUSOUTSTARTRESPONSE"]._serialized_end = 5994 + _globals["_SUBSCRIBEFOCUSSTOPREQUEST"]._serialized_start = 5996 + _globals["_SUBSCRIBEFOCUSSTOPREQUEST"]._serialized_end = 6023 + _globals["_FOCUSSTOPRESPONSE"]._serialized_start = 6025 + _globals["_FOCUSSTOPRESPONSE"]._serialized_end = 6062 + _globals["_RESPONDFOCUSSTOPREQUEST"]._serialized_start = 6064 + _globals["_RESPONDFOCUSSTOPREQUEST"]._serialized_end = 6160 + _globals["_RESPONDFOCUSSTOPRESPONSE"]._serialized_start = 6162 + _globals["_RESPONDFOCUSSTOPRESPONSE"]._serialized_end = 6264 + _globals["_SUBSCRIBEFOCUSRANGEREQUEST"]._serialized_start = 6266 + _globals["_SUBSCRIBEFOCUSRANGEREQUEST"]._serialized_end = 6294 + _globals["_FOCUSRANGERESPONSE"]._serialized_start = 6296 + _globals["_FOCUSRANGERESPONSE"]._serialized_end = 6342 + _globals["_RESPONDFOCUSRANGEREQUEST"]._serialized_start = 6344 + _globals["_RESPONDFOCUSRANGEREQUEST"]._serialized_end = 6442 + _globals["_RESPONDFOCUSRANGERESPONSE"]._serialized_start = 6444 + _globals["_RESPONDFOCUSRANGERESPONSE"]._serialized_end = 6547 + _globals["_SUBSCRIBEFOCUSMETERSREQUEST"]._serialized_start = 6549 + _globals["_SUBSCRIBEFOCUSMETERSREQUEST"]._serialized_end = 6578 + _globals["_FOCUSMETERSRESPONSE"]._serialized_start = 6580 + _globals["_FOCUSMETERSRESPONSE"]._serialized_end = 6627 + _globals["_RESPONDFOCUSMETERSREQUEST"]._serialized_start = 6629 + _globals["_RESPONDFOCUSMETERSREQUEST"]._serialized_end = 6729 + _globals["_RESPONDFOCUSMETERSRESPONSE"]._serialized_start = 6731 + _globals["_RESPONDFOCUSMETERSRESPONSE"]._serialized_end = 6835 + _globals["_SUBSCRIBEFOCUSAUTOREQUEST"]._serialized_start = 6837 + _globals["_SUBSCRIBEFOCUSAUTOREQUEST"]._serialized_end = 6864 + _globals["_FOCUSAUTORESPONSE"]._serialized_start = 6866 + _globals["_FOCUSAUTORESPONSE"]._serialized_end = 6903 + _globals["_RESPONDFOCUSAUTOREQUEST"]._serialized_start = 6905 + _globals["_RESPONDFOCUSAUTOREQUEST"]._serialized_end = 7001 + _globals["_RESPONDFOCUSAUTORESPONSE"]._serialized_start = 7003 + _globals["_RESPONDFOCUSAUTORESPONSE"]._serialized_end = 7105 + _globals["_SUBSCRIBEFOCUSAUTOSINGLEREQUEST"]._serialized_start = 7107 + _globals["_SUBSCRIBEFOCUSAUTOSINGLEREQUEST"]._serialized_end = 7140 + _globals["_FOCUSAUTOSINGLERESPONSE"]._serialized_start = 7142 + _globals["_FOCUSAUTOSINGLERESPONSE"]._serialized_end = 7185 + _globals["_RESPONDFOCUSAUTOSINGLEREQUEST"]._serialized_start = 7187 + _globals["_RESPONDFOCUSAUTOSINGLEREQUEST"]._serialized_end = 7296 + _globals["_RESPONDFOCUSAUTOSINGLERESPONSE"]._serialized_start = 7298 + _globals["_RESPONDFOCUSAUTOSINGLERESPONSE"]._serialized_end = 7406 + _globals["_SUBSCRIBEFOCUSAUTOCONTINUOUSREQUEST"]._serialized_start = 7408 + _globals["_SUBSCRIBEFOCUSAUTOCONTINUOUSREQUEST"]._serialized_end = 7445 + _globals["_FOCUSAUTOCONTINUOUSRESPONSE"]._serialized_start = 7447 + _globals["_FOCUSAUTOCONTINUOUSRESPONSE"]._serialized_end = 7494 + _globals["_RESPONDFOCUSAUTOCONTINUOUSREQUEST"]._serialized_start = 7496 + _globals["_RESPONDFOCUSAUTOCONTINUOUSREQUEST"]._serialized_end = 7613 + _globals["_RESPONDFOCUSAUTOCONTINUOUSRESPONSE"]._serialized_start = 7615 + _globals["_RESPONDFOCUSAUTOCONTINUOUSRESPONSE"]._serialized_end = 7727 + _globals["_INFORMATION"]._serialized_start = 7730 + _globals["_INFORMATION"]._serialized_end = 8126 + _globals["_VIDEOSTREAMING"]._serialized_start = 8128 + _globals["_VIDEOSTREAMING"]._serialized_end = 8187 + _globals["_POSITION"]._serialized_start = 8189 + _globals["_POSITION"]._serialized_end = 8302 + _globals["_QUATERNION"]._serialized_start = 8304 + _globals["_QUATERNION"]._serialized_end = 8360 + _globals["_CAPTUREINFO"]._serialized_start = 8363 + _globals["_CAPTUREINFO"]._serialized_end = 8571 + _globals["_CAMERASERVERRESULT"]._serialized_start = 8574 + _globals["_CAMERASERVERRESULT"]._serialized_end = 8881 + _globals["_CAMERASERVERRESULT_RESULT"]._serialized_start = 8686 + _globals["_CAMERASERVERRESULT_RESULT"]._serialized_end = 8881 + _globals["_STORAGEINFORMATION"]._serialized_start = 8884 + _globals["_STORAGEINFORMATION"]._serialized_end = 9536 + _globals["_STORAGEINFORMATION_STORAGESTATUS"]._serialized_start = 9228 + _globals["_STORAGEINFORMATION_STORAGESTATUS"]._serialized_end = 9373 + _globals["_STORAGEINFORMATION_STORAGETYPE"]._serialized_start = 9376 + _globals["_STORAGEINFORMATION_STORAGETYPE"]._serialized_end = 9536 + _globals["_CAPTURESTATUS"]._serialized_start = 9539 + _globals["_CAPTURESTATUS"]._serialized_end = 10033 + _globals["_CAPTURESTATUS_IMAGESTATUS"]._serialized_start = 9812 + _globals["_CAPTURESTATUS_IMAGESTATUS"]._serialized_end = 9957 + _globals["_CAPTURESTATUS_VIDEOSTATUS"]._serialized_start = 9959 + _globals["_CAPTURESTATUS_VIDEOSTATUS"]._serialized_end = 10033 + _globals["_SETTRACKINGPOINTSTATUSREQUEST"]._serialized_start = 10035 + _globals["_SETTRACKINGPOINTSTATUSREQUEST"]._serialized_end = 10127 + _globals["_SETTRACKINGPOINTSTATUSRESPONSE"]._serialized_start = 10129 + _globals["_SETTRACKINGPOINTSTATUSRESPONSE"]._serialized_end = 10161 + _globals["_SETTRACKINGRECTANGLESTATUSREQUEST"]._serialized_start = 10163 + _globals["_SETTRACKINGRECTANGLESTATUSREQUEST"]._serialized_end = 10267 + _globals["_SETTRACKINGRECTANGLESTATUSRESPONSE"]._serialized_start = 10269 + _globals["_SETTRACKINGRECTANGLESTATUSRESPONSE"]._serialized_end = 10305 + _globals["_SETTRACKINGOFFSTATUSREQUEST"]._serialized_start = 10307 + _globals["_SETTRACKINGOFFSTATUSREQUEST"]._serialized_end = 10336 + _globals["_SETTRACKINGOFFSTATUSRESPONSE"]._serialized_start = 10338 + _globals["_SETTRACKINGOFFSTATUSRESPONSE"]._serialized_end = 10368 + _globals["_SUBSCRIBETRACKINGPOINTCOMMANDREQUEST"]._serialized_start = 10370 + _globals["_SUBSCRIBETRACKINGPOINTCOMMANDREQUEST"]._serialized_end = 10408 + _globals["_TRACKINGPOINTCOMMANDRESPONSE"]._serialized_start = 10410 + _globals["_TRACKINGPOINTCOMMANDRESPONSE"]._serialized_end = 10499 + _globals["_SUBSCRIBETRACKINGRECTANGLECOMMANDREQUEST"]._serialized_start = 10501 + _globals["_SUBSCRIBETRACKINGRECTANGLECOMMANDREQUEST"]._serialized_end = 10543 + _globals["_TRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_start = 10545 + _globals["_TRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_end = 10646 + _globals["_SUBSCRIBETRACKINGOFFCOMMANDREQUEST"]._serialized_start = 10648 + _globals["_SUBSCRIBETRACKINGOFFCOMMANDREQUEST"]._serialized_end = 10684 + _globals["_TRACKINGOFFCOMMANDRESPONSE"]._serialized_start = 10686 + _globals["_TRACKINGOFFCOMMANDRESPONSE"]._serialized_end = 10729 + _globals["_RESPONDTRACKINGPOINTCOMMANDREQUEST"]._serialized_start = 10731 + _globals["_RESPONDTRACKINGPOINTCOMMANDREQUEST"]._serialized_end = 10838 + _globals["_RESPONDTRACKINGPOINTCOMMANDRESPONSE"]._serialized_start = 10840 + _globals["_RESPONDTRACKINGPOINTCOMMANDRESPONSE"]._serialized_end = 10953 + _globals["_RESPONDTRACKINGRECTANGLECOMMANDREQUEST"]._serialized_start = 10955 + _globals["_RESPONDTRACKINGRECTANGLECOMMANDREQUEST"]._serialized_end = 11066 + _globals["_RESPONDTRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_start = 11068 + _globals["_RESPONDTRACKINGRECTANGLECOMMANDRESPONSE"]._serialized_end = 11185 + _globals["_RESPONDTRACKINGOFFCOMMANDREQUEST"]._serialized_start = 11187 + _globals["_RESPONDTRACKINGOFFCOMMANDREQUEST"]._serialized_end = 11292 + _globals["_RESPONDTRACKINGOFFCOMMANDRESPONSE"]._serialized_start = 11294 + _globals["_RESPONDTRACKINGOFFCOMMANDRESPONSE"]._serialized_end = 11405 + _globals["_SETPOSITIONREQUEST"]._serialized_start = 11407 + _globals["_SETPOSITIONREQUEST"]._serialized_end = 11481 + _globals["_SETPOSITIONRESPONSE"]._serialized_start = 11483 + _globals["_SETPOSITIONRESPONSE"]._serialized_end = 11580 + _globals["_SETATTITUDEQUATERNIONREQUEST"]._serialized_start = 11582 + _globals["_SETATTITUDEQUATERNIONREQUEST"]._serialized_end = 11679 + _globals["_SETATTITUDEQUATERNIONRESPONSE"]._serialized_start = 11681 + _globals["_SETATTITUDEQUATERNIONRESPONSE"]._serialized_end = 11788 + _globals["_SETZOOMFACTORREQUEST"]._serialized_start = 11790 + _globals["_SETZOOMFACTORREQUEST"]._serialized_end = 11833 + _globals["_SETZOOMFACTORRESPONSE"]._serialized_start = 11835 + _globals["_SETZOOMFACTORRESPONSE"]._serialized_end = 11934 + _globals["_SETFIELDOFVIEWREQUEST"]._serialized_start = 11936 + _globals["_SETFIELDOFVIEWREQUEST"]._serialized_end = 12013 + _globals["_SETFIELDOFVIEWRESPONSE"]._serialized_start = 12015 + _globals["_SETFIELDOFVIEWRESPONSE"]._serialized_end = 12115 + _globals["_TRACKPOINT"]._serialized_start = 12117 + _globals["_TRACKPOINT"]._serialized_end = 12179 + _globals["_TRACKRECTANGLE"]._serialized_start = 12182 + _globals["_TRACKRECTANGLE"]._serialized_end = 12314 + _globals["_CAMERASERVERSERVICE"]._serialized_start = 12500 + _globals["_CAMERASERVERSERVICE"]._serialized_end = 21334 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/camera_server_pb2_grpc.py b/mavsdk/camera_server_pb2_grpc.py index 4d51d2c1..fb48dfd2 100644 --- a/mavsdk/camera_server_pb2_grpc.py +++ b/mavsdk/camera_server_pb2_grpc.py @@ -224,6 +224,126 @@ def __init__(self, channel): response_deserializer=camera__server_dot_camera__server__pb2.RespondZoomRangeResponse.FromString, _registered_method=True, ) + self.SubscribeFocusInStep = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusInStep", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusInStepRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusInStepResponse.FromString, + _registered_method=True, + ) + self.RespondFocusInStep = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusInStep", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusInStepRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusInStepResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusOutStep = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusOutStep", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusOutStepRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusOutStepResponse.FromString, + _registered_method=True, + ) + self.RespondFocusOutStep = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusOutStep", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusOutStepRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusOutStepResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusInStart = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusInStart", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusInStartRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusInStartResponse.FromString, + _registered_method=True, + ) + self.RespondFocusInStart = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusInStart", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusInStartRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusInStartResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusOutStart = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusOutStart", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusOutStartRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusOutStartResponse.FromString, + _registered_method=True, + ) + self.RespondFocusOutStart = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusOutStart", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusOutStartRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusOutStartResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusStop = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusStop", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusStopRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusStopResponse.FromString, + _registered_method=True, + ) + self.RespondFocusStop = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusStop", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusStopRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusStopResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusRange = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusRange", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusRangeRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusRangeResponse.FromString, + _registered_method=True, + ) + self.RespondFocusRange = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusRange", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusRangeRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusRangeResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusMeters = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusMeters", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusMetersRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusMetersResponse.FromString, + _registered_method=True, + ) + self.RespondFocusMeters = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusMeters", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusMetersRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusMetersResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusAuto = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusAuto", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusAutoRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusAutoResponse.FromString, + _registered_method=True, + ) + self.RespondFocusAuto = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusAuto", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusAutoRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusAutoResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusAutoSingle = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusAutoSingle", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusAutoSingleRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusAutoSingleResponse.FromString, + _registered_method=True, + ) + self.RespondFocusAutoSingle = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusAutoSingle", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusAutoSingleRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusAutoSingleResponse.FromString, + _registered_method=True, + ) + self.SubscribeFocusAutoContinuous = channel.unary_stream( + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusAutoContinuous", + request_serializer=camera__server_dot_camera__server__pb2.SubscribeFocusAutoContinuousRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.FocusAutoContinuousResponse.FromString, + _registered_method=True, + ) + self.RespondFocusAutoContinuous = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusAutoContinuous", + request_serializer=camera__server_dot_camera__server__pb2.RespondFocusAutoContinuousRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.RespondFocusAutoContinuousResponse.FromString, + _registered_method=True, + ) self.SetTrackingRectangleStatus = channel.unary_unary( "/mavsdk.rpc.camera_server.CameraServerService/SetTrackingRectangleStatus", request_serializer=camera__server_dot_camera__server__pb2.SetTrackingRectangleStatusRequest.SerializeToString, @@ -272,6 +392,30 @@ def __init__(self, channel): response_deserializer=camera__server_dot_camera__server__pb2.RespondTrackingOffCommandResponse.FromString, _registered_method=True, ) + self.SetPosition = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/SetPosition", + request_serializer=camera__server_dot_camera__server__pb2.SetPositionRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.SetPositionResponse.FromString, + _registered_method=True, + ) + self.SetAttitudeQuaternion = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/SetAttitudeQuaternion", + request_serializer=camera__server_dot_camera__server__pb2.SetAttitudeQuaternionRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.SetAttitudeQuaternionResponse.FromString, + _registered_method=True, + ) + self.SetZoomFactor = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/SetZoomFactor", + request_serializer=camera__server_dot_camera__server__pb2.SetZoomFactorRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.SetZoomFactorResponse.FromString, + _registered_method=True, + ) + self.SetFieldOfView = channel.unary_unary( + "/mavsdk.rpc.camera_server.CameraServerService/SetFieldOfView", + request_serializer=camera__server_dot_camera__server__pb2.SetFieldOfViewRequest.SerializeToString, + response_deserializer=camera__server_dot_camera__server__pb2.SetFieldOfViewResponse.FromString, + _registered_method=True, + ) class CameraServerServiceServicer(object): @@ -463,6 +607,126 @@ def RespondZoomRange(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def SubscribeFocusInStep(self, request, context): + """Subscribe to focus in step command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusInStep(self, request, context): + """Respond to focus in step.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusOutStep(self, request, context): + """Subscribe to focus out step command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusOutStep(self, request, context): + """Respond to focus out step.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusInStart(self, request, context): + """Subscribe to focus in start command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusInStart(self, request, context): + """Respond to focus in start.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusOutStart(self, request, context): + """Subscribe to focus out start command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusOutStart(self, request, context): + """Respond to focus out start.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusStop(self, request, context): + """Subscribe to focus stop command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusStop(self, request, context): + """Respond to focus stop.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusRange(self, request, context): + """Subscribe to focus range command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusRange(self, request, context): + """Respond to focus range.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusMeters(self, request, context): + """Subscribe to focus meters command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusMeters(self, request, context): + """Respond to focus meters.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusAuto(self, request, context): + """Subscribe to focus auto command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusAuto(self, request, context): + """Respond to focus auto.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusAutoSingle(self, request, context): + """Subscribe to focus auto single command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusAutoSingle(self, request, context): + """Respond to focus auto single.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeFocusAutoContinuous(self, request, context): + """Subscribe to focus auto continuous command.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def RespondFocusAutoContinuous(self, request, context): + """Respond to focus auto continuous.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def SetTrackingRectangleStatus(self, request, context): """Set/update the current rectangle tracking status.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -511,6 +775,30 @@ def RespondTrackingOffCommand(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def SetPosition(self, request, context): + """Set the camera's GPS position.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SetAttitudeQuaternion(self, request, context): + """Set the camera's attitude quaternion.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SetZoomFactor(self, request, context): + """Set the camera's zoom factor for CAMERA_FOV_STATUS reporting.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SetFieldOfView(self, request, context): + """Set the field of view explicitly, for cameras that do not report a zoom factor.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def add_CameraServerServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -669,6 +957,106 @@ def add_CameraServerServiceServicer_to_server(servicer, server): request_deserializer=camera__server_dot_camera__server__pb2.RespondZoomRangeRequest.FromString, response_serializer=camera__server_dot_camera__server__pb2.RespondZoomRangeResponse.SerializeToString, ), + "SubscribeFocusInStep": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusInStep, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusInStepRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusInStepResponse.SerializeToString, + ), + "RespondFocusInStep": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusInStep, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusInStepRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusInStepResponse.SerializeToString, + ), + "SubscribeFocusOutStep": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusOutStep, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusOutStepRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusOutStepResponse.SerializeToString, + ), + "RespondFocusOutStep": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusOutStep, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusOutStepRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusOutStepResponse.SerializeToString, + ), + "SubscribeFocusInStart": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusInStart, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusInStartRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusInStartResponse.SerializeToString, + ), + "RespondFocusInStart": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusInStart, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusInStartRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusInStartResponse.SerializeToString, + ), + "SubscribeFocusOutStart": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusOutStart, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusOutStartRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusOutStartResponse.SerializeToString, + ), + "RespondFocusOutStart": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusOutStart, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusOutStartRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusOutStartResponse.SerializeToString, + ), + "SubscribeFocusStop": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusStop, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusStopRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusStopResponse.SerializeToString, + ), + "RespondFocusStop": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusStop, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusStopRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusStopResponse.SerializeToString, + ), + "SubscribeFocusRange": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusRange, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusRangeRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusRangeResponse.SerializeToString, + ), + "RespondFocusRange": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusRange, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusRangeRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusRangeResponse.SerializeToString, + ), + "SubscribeFocusMeters": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusMeters, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusMetersRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusMetersResponse.SerializeToString, + ), + "RespondFocusMeters": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusMeters, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusMetersRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusMetersResponse.SerializeToString, + ), + "SubscribeFocusAuto": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusAuto, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusAutoRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusAutoResponse.SerializeToString, + ), + "RespondFocusAuto": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusAuto, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusAutoRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusAutoResponse.SerializeToString, + ), + "SubscribeFocusAutoSingle": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusAutoSingle, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusAutoSingleRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusAutoSingleResponse.SerializeToString, + ), + "RespondFocusAutoSingle": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusAutoSingle, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusAutoSingleRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusAutoSingleResponse.SerializeToString, + ), + "SubscribeFocusAutoContinuous": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeFocusAutoContinuous, + request_deserializer=camera__server_dot_camera__server__pb2.SubscribeFocusAutoContinuousRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.FocusAutoContinuousResponse.SerializeToString, + ), + "RespondFocusAutoContinuous": grpc.unary_unary_rpc_method_handler( + servicer.RespondFocusAutoContinuous, + request_deserializer=camera__server_dot_camera__server__pb2.RespondFocusAutoContinuousRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.RespondFocusAutoContinuousResponse.SerializeToString, + ), "SetTrackingRectangleStatus": grpc.unary_unary_rpc_method_handler( servicer.SetTrackingRectangleStatus, request_deserializer=camera__server_dot_camera__server__pb2.SetTrackingRectangleStatusRequest.FromString, @@ -709,6 +1097,26 @@ def add_CameraServerServiceServicer_to_server(servicer, server): request_deserializer=camera__server_dot_camera__server__pb2.RespondTrackingOffCommandRequest.FromString, response_serializer=camera__server_dot_camera__server__pb2.RespondTrackingOffCommandResponse.SerializeToString, ), + "SetPosition": grpc.unary_unary_rpc_method_handler( + servicer.SetPosition, + request_deserializer=camera__server_dot_camera__server__pb2.SetPositionRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.SetPositionResponse.SerializeToString, + ), + "SetAttitudeQuaternion": grpc.unary_unary_rpc_method_handler( + servicer.SetAttitudeQuaternion, + request_deserializer=camera__server_dot_camera__server__pb2.SetAttitudeQuaternionRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.SetAttitudeQuaternionResponse.SerializeToString, + ), + "SetZoomFactor": grpc.unary_unary_rpc_method_handler( + servicer.SetZoomFactor, + request_deserializer=camera__server_dot_camera__server__pb2.SetZoomFactorRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.SetZoomFactorResponse.SerializeToString, + ), + "SetFieldOfView": grpc.unary_unary_rpc_method_handler( + servicer.SetFieldOfView, + request_deserializer=camera__server_dot_camera__server__pb2.SetFieldOfViewRequest.FromString, + response_serializer=camera__server_dot_camera__server__pb2.SetFieldOfViewResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( "mavsdk.rpc.camera_server.CameraServerService", rpc_method_handlers @@ -1654,7 +2062,7 @@ def RespondZoomRange( ) @staticmethod - def SetTrackingRectangleStatus( + def SubscribeFocusInStep( request, target, options=(), @@ -1666,12 +2074,12 @@ def SetTrackingRectangleStatus( timeout=None, metadata=None, ): - return grpc.experimental.unary_unary( + return grpc.experimental.unary_stream( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/SetTrackingRectangleStatus", - camera__server_dot_camera__server__pb2.SetTrackingRectangleStatusRequest.SerializeToString, - camera__server_dot_camera__server__pb2.SetTrackingRectangleStatusResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusInStep", + camera__server_dot_camera__server__pb2.SubscribeFocusInStepRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusInStepResponse.FromString, options, channel_credentials, insecure, @@ -1684,7 +2092,7 @@ def SetTrackingRectangleStatus( ) @staticmethod - def SetTrackingOffStatus( + def RespondFocusInStep( request, target, options=(), @@ -1699,9 +2107,9 @@ def SetTrackingOffStatus( return grpc.experimental.unary_unary( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/SetTrackingOffStatus", - camera__server_dot_camera__server__pb2.SetTrackingOffStatusRequest.SerializeToString, - camera__server_dot_camera__server__pb2.SetTrackingOffStatusResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusInStep", + camera__server_dot_camera__server__pb2.RespondFocusInStepRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusInStepResponse.FromString, options, channel_credentials, insecure, @@ -1714,7 +2122,7 @@ def SetTrackingOffStatus( ) @staticmethod - def SubscribeTrackingPointCommand( + def SubscribeFocusOutStep( request, target, options=(), @@ -1729,9 +2137,9 @@ def SubscribeTrackingPointCommand( return grpc.experimental.unary_stream( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/SubscribeTrackingPointCommand", - camera__server_dot_camera__server__pb2.SubscribeTrackingPointCommandRequest.SerializeToString, - camera__server_dot_camera__server__pb2.TrackingPointCommandResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusOutStep", + camera__server_dot_camera__server__pb2.SubscribeFocusOutStepRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusOutStepResponse.FromString, options, channel_credentials, insecure, @@ -1744,7 +2152,7 @@ def SubscribeTrackingPointCommand( ) @staticmethod - def SubscribeTrackingRectangleCommand( + def RespondFocusOutStep( request, target, options=(), @@ -1756,12 +2164,12 @@ def SubscribeTrackingRectangleCommand( timeout=None, metadata=None, ): - return grpc.experimental.unary_stream( + return grpc.experimental.unary_unary( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/SubscribeTrackingRectangleCommand", - camera__server_dot_camera__server__pb2.SubscribeTrackingRectangleCommandRequest.SerializeToString, - camera__server_dot_camera__server__pb2.TrackingRectangleCommandResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusOutStep", + camera__server_dot_camera__server__pb2.RespondFocusOutStepRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusOutStepResponse.FromString, options, channel_credentials, insecure, @@ -1774,7 +2182,7 @@ def SubscribeTrackingRectangleCommand( ) @staticmethod - def SubscribeTrackingOffCommand( + def SubscribeFocusInStart( request, target, options=(), @@ -1789,9 +2197,9 @@ def SubscribeTrackingOffCommand( return grpc.experimental.unary_stream( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/SubscribeTrackingOffCommand", - camera__server_dot_camera__server__pb2.SubscribeTrackingOffCommandRequest.SerializeToString, - camera__server_dot_camera__server__pb2.TrackingOffCommandResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusInStart", + camera__server_dot_camera__server__pb2.SubscribeFocusInStartRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusInStartResponse.FromString, options, channel_credentials, insecure, @@ -1804,7 +2212,7 @@ def SubscribeTrackingOffCommand( ) @staticmethod - def RespondTrackingPointCommand( + def RespondFocusInStart( request, target, options=(), @@ -1819,9 +2227,9 @@ def RespondTrackingPointCommand( return grpc.experimental.unary_unary( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/RespondTrackingPointCommand", - camera__server_dot_camera__server__pb2.RespondTrackingPointCommandRequest.SerializeToString, - camera__server_dot_camera__server__pb2.RespondTrackingPointCommandResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusInStart", + camera__server_dot_camera__server__pb2.RespondFocusInStartRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusInStartResponse.FromString, options, channel_credentials, insecure, @@ -1834,7 +2242,37 @@ def RespondTrackingPointCommand( ) @staticmethod - def RespondTrackingRectangleCommand( + def SubscribeFocusOutStart( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusOutStart", + camera__server_dot_camera__server__pb2.SubscribeFocusOutStartRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusOutStartResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusOutStart( request, target, options=(), @@ -1849,9 +2287,9 @@ def RespondTrackingRectangleCommand( return grpc.experimental.unary_unary( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/RespondTrackingRectangleCommand", - camera__server_dot_camera__server__pb2.RespondTrackingRectangleCommandRequest.SerializeToString, - camera__server_dot_camera__server__pb2.RespondTrackingRectangleCommandResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusOutStart", + camera__server_dot_camera__server__pb2.RespondFocusOutStartRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusOutStartResponse.FromString, options, channel_credentials, insecure, @@ -1864,7 +2302,37 @@ def RespondTrackingRectangleCommand( ) @staticmethod - def RespondTrackingOffCommand( + def SubscribeFocusStop( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusStop", + camera__server_dot_camera__server__pb2.SubscribeFocusStopRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusStopResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusStop( request, target, options=(), @@ -1879,9 +2347,669 @@ def RespondTrackingOffCommand( return grpc.experimental.unary_unary( request, target, - "/mavsdk.rpc.camera_server.CameraServerService/RespondTrackingOffCommand", - camera__server_dot_camera__server__pb2.RespondTrackingOffCommandRequest.SerializeToString, - camera__server_dot_camera__server__pb2.RespondTrackingOffCommandResponse.FromString, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusStop", + camera__server_dot_camera__server__pb2.RespondFocusStopRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusStopResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeFocusRange( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusRange", + camera__server_dot_camera__server__pb2.SubscribeFocusRangeRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusRangeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusRange( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusRange", + camera__server_dot_camera__server__pb2.RespondFocusRangeRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusRangeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeFocusMeters( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusMeters", + camera__server_dot_camera__server__pb2.SubscribeFocusMetersRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusMetersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusMeters( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusMeters", + camera__server_dot_camera__server__pb2.RespondFocusMetersRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusMetersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeFocusAuto( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusAuto", + camera__server_dot_camera__server__pb2.SubscribeFocusAutoRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusAutoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusAuto( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusAuto", + camera__server_dot_camera__server__pb2.RespondFocusAutoRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusAutoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeFocusAutoSingle( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusAutoSingle", + camera__server_dot_camera__server__pb2.SubscribeFocusAutoSingleRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusAutoSingleResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusAutoSingle( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusAutoSingle", + camera__server_dot_camera__server__pb2.RespondFocusAutoSingleRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusAutoSingleResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeFocusAutoContinuous( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeFocusAutoContinuous", + camera__server_dot_camera__server__pb2.SubscribeFocusAutoContinuousRequest.SerializeToString, + camera__server_dot_camera__server__pb2.FocusAutoContinuousResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondFocusAutoContinuous( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondFocusAutoContinuous", + camera__server_dot_camera__server__pb2.RespondFocusAutoContinuousRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondFocusAutoContinuousResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetTrackingRectangleStatus( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SetTrackingRectangleStatus", + camera__server_dot_camera__server__pb2.SetTrackingRectangleStatusRequest.SerializeToString, + camera__server_dot_camera__server__pb2.SetTrackingRectangleStatusResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetTrackingOffStatus( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SetTrackingOffStatus", + camera__server_dot_camera__server__pb2.SetTrackingOffStatusRequest.SerializeToString, + camera__server_dot_camera__server__pb2.SetTrackingOffStatusResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeTrackingPointCommand( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeTrackingPointCommand", + camera__server_dot_camera__server__pb2.SubscribeTrackingPointCommandRequest.SerializeToString, + camera__server_dot_camera__server__pb2.TrackingPointCommandResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeTrackingRectangleCommand( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeTrackingRectangleCommand", + camera__server_dot_camera__server__pb2.SubscribeTrackingRectangleCommandRequest.SerializeToString, + camera__server_dot_camera__server__pb2.TrackingRectangleCommandResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeTrackingOffCommand( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SubscribeTrackingOffCommand", + camera__server_dot_camera__server__pb2.SubscribeTrackingOffCommandRequest.SerializeToString, + camera__server_dot_camera__server__pb2.TrackingOffCommandResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondTrackingPointCommand( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondTrackingPointCommand", + camera__server_dot_camera__server__pb2.RespondTrackingPointCommandRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondTrackingPointCommandResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondTrackingRectangleCommand( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondTrackingRectangleCommand", + camera__server_dot_camera__server__pb2.RespondTrackingRectangleCommandRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondTrackingRectangleCommandResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def RespondTrackingOffCommand( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/RespondTrackingOffCommand", + camera__server_dot_camera__server__pb2.RespondTrackingOffCommandRequest.SerializeToString, + camera__server_dot_camera__server__pb2.RespondTrackingOffCommandResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetPosition( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SetPosition", + camera__server_dot_camera__server__pb2.SetPositionRequest.SerializeToString, + camera__server_dot_camera__server__pb2.SetPositionResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetAttitudeQuaternion( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SetAttitudeQuaternion", + camera__server_dot_camera__server__pb2.SetAttitudeQuaternionRequest.SerializeToString, + camera__server_dot_camera__server__pb2.SetAttitudeQuaternionResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetZoomFactor( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SetZoomFactor", + camera__server_dot_camera__server__pb2.SetZoomFactorRequest.SerializeToString, + camera__server_dot_camera__server__pb2.SetZoomFactorResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetFieldOfView( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.camera_server.CameraServerService/SetFieldOfView", + camera__server_dot_camera__server__pb2.SetFieldOfViewRequest.SerializeToString, + camera__server_dot_camera__server__pb2.SetFieldOfViewResponse.FromString, options, channel_credentials, insecure, diff --git a/mavsdk/core.py b/mavsdk/core.py index 0e2da796..30eae606 100644 --- a/mavsdk/core.py +++ b/mavsdk/core.py @@ -103,3 +103,61 @@ async def set_mavlink_timeout(self, timeout_s): request = core_pb2.SetMavlinkTimeoutRequest() request.timeout_s = timeout_s response = await self._stub.SetMavlinkTimeout(request) + + async def feed_heartbeat_watchdog(self): + """ + Feed the heartbeat watchdog. + + MAVSDK can be configured with a heartbeat watchdog (deadman timer). + While configured, the periodic heartbeats sent by MAVSDK are only sent + as long as this keeps being called within the timeout period. If the + watchdog times out, heartbeats stop until it is fed again. + + Call this at least twice per timeout period. Heartbeats are sent at 1 Hz + and the deadline is only checked when one is due, so feeding exactly once + per period leaves no margin and a single late feed already drops a + heartbeat. + + This allows MAVSDK's heartbeats to reflect the liveness of the client: + if the client hangs or dies, heartbeats stop. + + Has no effect if no watchdog is configured (e.g. with the + --heartbeat-watchdog-timeout option of mavsdk_server, or + SetHeartbeatWatchdogTimeout). + + + """ + + request = core_pb2.FeedHeartbeatWatchdogRequest() + response = await self._stub.FeedHeartbeatWatchdog(request) + + async def set_heartbeat_watchdog_timeout(self, timeout_s): + """ + Set the heartbeat watchdog timeout. + + When timeout_s is greater than 0, the periodic heartbeats sent by MAVSDK + are only sent as long as FeedHeartbeatWatchdog is called at least once + per timeout period. If the watchdog times out, heartbeats stop until it + is fed again. + + When timeout_s is 0, the watchdog is disabled and heartbeats follow the + usual policy (always_send_heartbeats or a connected system). + + Values greater than 0 and less than 2 are rejected: heartbeats are sent + at 1 Hz, so a timeout shorter than two heartbeat periods cannot be met + reliably. + + This is an alternative to configuring the watchdog at mavsdk_server + startup with the --heartbeat-watchdog-timeout option. + + Parameters + ---------- + timeout_s : double + Timeout in seconds. 0 disables the watchdog. Minimum 2 when enabled. + + + """ + + request = core_pb2.SetHeartbeatWatchdogTimeoutRequest() + request.timeout_s = timeout_s + response = await self._stub.SetHeartbeatWatchdogTimeout(request) diff --git a/mavsdk/core_pb2.py b/mavsdk/core_pb2.py index 95e3a48e..6a837645 100644 --- a/mavsdk/core_pb2.py +++ b/mavsdk/core_pb2.py @@ -20,7 +20,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x0f\x63ore/core.proto\x12\x0fmavsdk.rpc.core"!\n\x1fSubscribeConnectionStateRequest"U\n\x17\x43onnectionStateResponse\x12:\n\x10\x63onnection_state\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.core.ConnectionState"-\n\x18SetMavlinkTimeoutRequest\x12\x11\n\ttimeout_s\x18\x01 \x01(\x01"\x1b\n\x19SetMavlinkTimeoutResponse"\'\n\x0f\x43onnectionState\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x32\xf7\x01\n\x0b\x43oreService\x12z\n\x18SubscribeConnectionState\x12\x30.mavsdk.rpc.core.SubscribeConnectionStateRequest\x1a(.mavsdk.rpc.core.ConnectionStateResponse"\x00\x30\x01\x12l\n\x11SetMavlinkTimeout\x12).mavsdk.rpc.core.SetMavlinkTimeoutRequest\x1a*.mavsdk.rpc.core.SetMavlinkTimeoutResponse"\x00\x42\x1b\n\x0eio.mavsdk.coreB\tCoreProtob\x06proto3' + b'\n\x0f\x63ore/core.proto\x12\x0fmavsdk.rpc.core"!\n\x1fSubscribeConnectionStateRequest"U\n\x17\x43onnectionStateResponse\x12:\n\x10\x63onnection_state\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.core.ConnectionState"-\n\x18SetMavlinkTimeoutRequest\x12\x11\n\ttimeout_s\x18\x01 \x01(\x01"\x1b\n\x19SetMavlinkTimeoutResponse"\x1e\n\x1c\x46\x65\x65\x64HeartbeatWatchdogRequest"\x1f\n\x1d\x46\x65\x65\x64HeartbeatWatchdogResponse"7\n"SetHeartbeatWatchdogTimeoutRequest\x12\x11\n\ttimeout_s\x18\x01 \x01(\x01"%\n#SetHeartbeatWatchdogTimeoutResponse"\'\n\x0f\x43onnectionState\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x32\xfe\x03\n\x0b\x43oreService\x12z\n\x18SubscribeConnectionState\x12\x30.mavsdk.rpc.core.SubscribeConnectionStateRequest\x1a(.mavsdk.rpc.core.ConnectionStateResponse"\x00\x30\x01\x12l\n\x11SetMavlinkTimeout\x12).mavsdk.rpc.core.SetMavlinkTimeoutRequest\x1a*.mavsdk.rpc.core.SetMavlinkTimeoutResponse"\x00\x12x\n\x15\x46\x65\x65\x64HeartbeatWatchdog\x12-.mavsdk.rpc.core.FeedHeartbeatWatchdogRequest\x1a..mavsdk.rpc.core.FeedHeartbeatWatchdogResponse"\x00\x12\x8a\x01\n\x1bSetHeartbeatWatchdogTimeout\x12\x33.mavsdk.rpc.core.SetHeartbeatWatchdogTimeoutRequest\x1a\x34.mavsdk.rpc.core.SetHeartbeatWatchdogTimeoutResponse"\x00\x42\x1b\n\x0eio.mavsdk.coreB\tCoreProtob\x06proto3' ) _globals = globals() @@ -37,8 +37,16 @@ _globals["_SETMAVLINKTIMEOUTREQUEST"]._serialized_end = 203 _globals["_SETMAVLINKTIMEOUTRESPONSE"]._serialized_start = 205 _globals["_SETMAVLINKTIMEOUTRESPONSE"]._serialized_end = 232 - _globals["_CONNECTIONSTATE"]._serialized_start = 234 - _globals["_CONNECTIONSTATE"]._serialized_end = 273 - _globals["_CORESERVICE"]._serialized_start = 276 - _globals["_CORESERVICE"]._serialized_end = 523 + _globals["_FEEDHEARTBEATWATCHDOGREQUEST"]._serialized_start = 234 + _globals["_FEEDHEARTBEATWATCHDOGREQUEST"]._serialized_end = 264 + _globals["_FEEDHEARTBEATWATCHDOGRESPONSE"]._serialized_start = 266 + _globals["_FEEDHEARTBEATWATCHDOGRESPONSE"]._serialized_end = 297 + _globals["_SETHEARTBEATWATCHDOGTIMEOUTREQUEST"]._serialized_start = 299 + _globals["_SETHEARTBEATWATCHDOGTIMEOUTREQUEST"]._serialized_end = 354 + _globals["_SETHEARTBEATWATCHDOGTIMEOUTRESPONSE"]._serialized_start = 356 + _globals["_SETHEARTBEATWATCHDOGTIMEOUTRESPONSE"]._serialized_end = 393 + _globals["_CONNECTIONSTATE"]._serialized_start = 395 + _globals["_CONNECTIONSTATE"]._serialized_end = 434 + _globals["_CORESERVICE"]._serialized_start = 437 + _globals["_CORESERVICE"]._serialized_end = 947 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/core_pb2_grpc.py b/mavsdk/core_pb2_grpc.py index c0875396..a06a58ec 100644 --- a/mavsdk/core_pb2_grpc.py +++ b/mavsdk/core_pb2_grpc.py @@ -50,6 +50,18 @@ def __init__(self, channel): response_deserializer=core_dot_core__pb2.SetMavlinkTimeoutResponse.FromString, _registered_method=True, ) + self.FeedHeartbeatWatchdog = channel.unary_unary( + "/mavsdk.rpc.core.CoreService/FeedHeartbeatWatchdog", + request_serializer=core_dot_core__pb2.FeedHeartbeatWatchdogRequest.SerializeToString, + response_deserializer=core_dot_core__pb2.FeedHeartbeatWatchdogResponse.FromString, + _registered_method=True, + ) + self.SetHeartbeatWatchdogTimeout = channel.unary_unary( + "/mavsdk.rpc.core.CoreService/SetHeartbeatWatchdogTimeout", + request_serializer=core_dot_core__pb2.SetHeartbeatWatchdogTimeoutRequest.SerializeToString, + response_deserializer=core_dot_core__pb2.SetHeartbeatWatchdogTimeoutResponse.FromString, + _registered_method=True, + ) class CoreServiceServicer(object): @@ -76,6 +88,54 @@ def SetMavlinkTimeout(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def FeedHeartbeatWatchdog(self, request, context): + """ + Feed the heartbeat watchdog. + + MAVSDK can be configured with a heartbeat watchdog (deadman timer). + While configured, the periodic heartbeats sent by MAVSDK are only sent + as long as this keeps being called within the timeout period. If the + watchdog times out, heartbeats stop until it is fed again. + + Call this at least twice per timeout period. Heartbeats are sent at 1 Hz + and the deadline is only checked when one is due, so feeding exactly once + per period leaves no margin and a single late feed already drops a + heartbeat. + + This allows MAVSDK's heartbeats to reflect the liveness of the client: + if the client hangs or dies, heartbeats stop. + + Has no effect if no watchdog is configured (e.g. with the + --heartbeat-watchdog-timeout option of mavsdk_server, or + SetHeartbeatWatchdogTimeout). + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SetHeartbeatWatchdogTimeout(self, request, context): + """ + Set the heartbeat watchdog timeout. + + When timeout_s is greater than 0, the periodic heartbeats sent by MAVSDK + are only sent as long as FeedHeartbeatWatchdog is called at least once + per timeout period. If the watchdog times out, heartbeats stop until it + is fed again. + + When timeout_s is 0, the watchdog is disabled and heartbeats follow the + usual policy (always_send_heartbeats or a connected system). + + Values greater than 0 and less than 2 are rejected: heartbeats are sent + at 1 Hz, so a timeout shorter than two heartbeat periods cannot be met + reliably. + + This is an alternative to configuring the watchdog at mavsdk_server + startup with the --heartbeat-watchdog-timeout option. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def add_CoreServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -89,6 +149,16 @@ def add_CoreServiceServicer_to_server(servicer, server): request_deserializer=core_dot_core__pb2.SetMavlinkTimeoutRequest.FromString, response_serializer=core_dot_core__pb2.SetMavlinkTimeoutResponse.SerializeToString, ), + "FeedHeartbeatWatchdog": grpc.unary_unary_rpc_method_handler( + servicer.FeedHeartbeatWatchdog, + request_deserializer=core_dot_core__pb2.FeedHeartbeatWatchdogRequest.FromString, + response_serializer=core_dot_core__pb2.FeedHeartbeatWatchdogResponse.SerializeToString, + ), + "SetHeartbeatWatchdogTimeout": grpc.unary_unary_rpc_method_handler( + servicer.SetHeartbeatWatchdogTimeout, + request_deserializer=core_dot_core__pb2.SetHeartbeatWatchdogTimeoutRequest.FromString, + response_serializer=core_dot_core__pb2.SetHeartbeatWatchdogTimeoutResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( "mavsdk.rpc.core.CoreService", rpc_method_handlers @@ -162,3 +232,63 @@ def SetMavlinkTimeout( metadata, _registered_method=True, ) + + @staticmethod + def FeedHeartbeatWatchdog( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.core.CoreService/FeedHeartbeatWatchdog", + core_dot_core__pb2.FeedHeartbeatWatchdogRequest.SerializeToString, + core_dot_core__pb2.FeedHeartbeatWatchdogResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SetHeartbeatWatchdogTimeout( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.core.CoreService/SetHeartbeatWatchdogTimeout", + core_dot_core__pb2.SetHeartbeatWatchdogTimeoutRequest.SerializeToString, + core_dot_core__pb2.SetHeartbeatWatchdogTimeoutResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) diff --git a/mavsdk/ftp.py b/mavsdk/ftp.py index ea950b1a..8ad64752 100644 --- a/mavsdk/ftp.py +++ b/mavsdk/ftp.py @@ -6,56 +6,176 @@ from enum import Enum +class FilesystemEntry: + """ + A file system entry (file or directory) with metadata. + + Parameters + ---------- + name : std::string + The name of the file or directory. + + entry_type : EntryType + Whether the entry is a file or a directory. + + size_bytes : uint64_t + The size of the file in bytes (0 for directories). + + modification_time_s : uint64_t + Last modification time in seconds since UNIX epoch (UTC), 0 if unknown. + + """ + + class EntryType(Enum): + """ + The type of a file system entry. + + Values + ------ + UNKNOWN + Unknown entry type + + FILE + A regular file + + DIRECTORY + A directory + + """ + + UNKNOWN = 0 + FILE = 1 + DIRECTORY = 2 + + def translate_to_rpc(self): + if self == FilesystemEntry.EntryType.UNKNOWN: + return ftp_pb2.FilesystemEntry.ENTRY_TYPE_UNKNOWN + if self == FilesystemEntry.EntryType.FILE: + return ftp_pb2.FilesystemEntry.ENTRY_TYPE_FILE + if self == FilesystemEntry.EntryType.DIRECTORY: + return ftp_pb2.FilesystemEntry.ENTRY_TYPE_DIRECTORY + + @staticmethod + def translate_from_rpc(rpc_enum_value): + """Parses a gRPC response""" + if rpc_enum_value == ftp_pb2.FilesystemEntry.ENTRY_TYPE_UNKNOWN: + return FilesystemEntry.EntryType.UNKNOWN + if rpc_enum_value == ftp_pb2.FilesystemEntry.ENTRY_TYPE_FILE: + return FilesystemEntry.EntryType.FILE + if rpc_enum_value == ftp_pb2.FilesystemEntry.ENTRY_TYPE_DIRECTORY: + return FilesystemEntry.EntryType.DIRECTORY + + def __str__(self): + return self.name + + def __init__(self, name, entry_type, size_bytes, modification_time_s): + """Initializes the FilesystemEntry object""" + self.name = name + self.entry_type = entry_type + self.size_bytes = size_bytes + self.modification_time_s = modification_time_s + + def __eq__(self, to_compare): + """Checks if two FilesystemEntry are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # FilesystemEntry object + return ( + (self.name == to_compare.name) + and (self.entry_type == to_compare.entry_type) + and (self.size_bytes == to_compare.size_bytes) + and (self.modification_time_s == to_compare.modification_time_s) + ) + + except AttributeError: + return False + + def __str__(self): + """FilesystemEntry in string representation""" + struct_repr = ", ".join( + [ + "name: " + str(self.name), + "entry_type: " + str(self.entry_type), + "size_bytes: " + str(self.size_bytes), + "modification_time_s: " + str(self.modification_time_s), + ] + ) + + return f"FilesystemEntry: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcFilesystemEntry): + """Translates a gRPC struct to the SDK equivalent""" + return FilesystemEntry( + rpcFilesystemEntry.name, + FilesystemEntry.EntryType.translate_from_rpc(rpcFilesystemEntry.entry_type), + rpcFilesystemEntry.size_bytes, + rpcFilesystemEntry.modification_time_s, + ) + + def translate_to_rpc(self, rpcFilesystemEntry): + """Translates this SDK object into its gRPC equivalent""" + + rpcFilesystemEntry.name = self.name + + rpcFilesystemEntry.entry_type = self.entry_type.translate_to_rpc() + + rpcFilesystemEntry.size_bytes = self.size_bytes + + rpcFilesystemEntry.modification_time_s = self.modification_time_s + + class ListDirectoryData: """ The output of a directory list Parameters ---------- - dirs : [std::string] - The found directories. - - files : [std::string] - The found files. + entries : [FilesystemEntry] + The directory entries (files and directories) with their metadata. """ - def __init__(self, dirs, files): + def __init__(self, entries): """Initializes the ListDirectoryData object""" - self.dirs = dirs - self.files = files + self.entries = entries def __eq__(self, to_compare): """Checks if two ListDirectoryData are the same""" try: # Try to compare - this likely fails when it is compared to a non # ListDirectoryData object - return (self.dirs == to_compare.dirs) and (self.files == to_compare.files) + return self.entries == to_compare.entries except AttributeError: return False def __str__(self): """ListDirectoryData in string representation""" - struct_repr = ", ".join( - ["dirs: " + str(self.dirs), "files: " + str(self.files)] - ) + struct_repr = ", ".join(["entries: " + str(self.entries)]) return f"ListDirectoryData: [{struct_repr}]" @staticmethod def translate_from_rpc(rpcListDirectoryData): """Translates a gRPC struct to the SDK equivalent""" - return ListDirectoryData(rpcListDirectoryData.dirs, rpcListDirectoryData.files) + return ListDirectoryData( + [ + FilesystemEntry.translate_from_rpc(elem) + for elem in rpcListDirectoryData.entries + ] + ) def translate_to_rpc(self, rpcListDirectoryData): """Translates this SDK object into its gRPC equivalent""" - for elem in self.dirs: - rpcListDirectoryData.dirs.append(elem) + rpc_elems_list = [] + for elem in self.entries: + rpc_elem = ftp_pb2.FilesystemEntry() + elem.translate_to_rpc(rpc_elem) + rpc_elems_list.append(rpc_elem) - for elem in self.files: - rpcListDirectoryData.files.append(elem) + rpcListDirectoryData.entries.extend(rpc_elems_list) class ProgressData: diff --git a/mavsdk/ftp_pb2.py b/mavsdk/ftp_pb2.py index c29d26a2..839be783 100644 --- a/mavsdk/ftp_pb2.py +++ b/mavsdk/ftp_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\rftp/ftp.proto\x12\x0emavsdk.rpc.ftp\x1a\x14mavsdk_options.proto"Z\n\x18SubscribeDownloadRequest\x12\x18\n\x10remote_file_path\x18\x01 \x01(\t\x12\x11\n\tlocal_dir\x18\x02 \x01(\t\x12\x11\n\tuse_burst\x18\x03 \x01(\x08"v\n\x10\x44ownloadResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12\x33\n\rprogress_data\x18\x02 \x01(\x0b\x32\x1c.mavsdk.rpc.ftp.ProgressData"E\n\x16SubscribeUploadRequest\x12\x17\n\x0flocal_file_path\x18\x01 \x01(\t\x12\x12\n\nremote_dir\x18\x02 \x01(\t"t\n\x0eUploadResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12\x33\n\rprogress_data\x18\x02 \x01(\x0b\x32\x1c.mavsdk.rpc.ftp.ProgressData"*\n\x14ListDirectoryRequest\x12\x12\n\nremote_dir\x18\x01 \x01(\t"0\n\x11ListDirectoryData\x12\x0c\n\x04\x64irs\x18\x01 \x03(\t\x12\r\n\x05\x66iles\x18\x02 \x03(\t"w\n\x15ListDirectoryResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12/\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32!.mavsdk.rpc.ftp.ListDirectoryData",\n\x16\x43reateDirectoryRequest\x12\x12\n\nremote_dir\x18\x01 \x01(\t"H\n\x17\x43reateDirectoryResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult",\n\x16RemoveDirectoryRequest\x12\x12\n\nremote_dir\x18\x01 \x01(\t"H\n\x17RemoveDirectoryResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult"-\n\x11RemoveFileRequest\x12\x18\n\x10remote_file_path\x18\x01 \x01(\t"C\n\x12RemoveFileResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult"A\n\rRenameRequest\x12\x18\n\x10remote_from_path\x18\x01 \x01(\t\x12\x16\n\x0eremote_to_path\x18\x02 \x01(\t"?\n\x0eRenameResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult"M\n\x18\x41reFilesIdenticalRequest\x12\x17\n\x0flocal_file_path\x18\x01 \x01(\t\x12\x18\n\x10remote_file_path\x18\x02 \x01(\t"a\n\x19\x41reFilesIdenticalResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12\x15\n\rare_identical\x18\x02 \x01(\x08"(\n\x16SetTargetCompidRequest\x12\x0e\n\x06\x63ompid\x18\x01 \x01(\r"H\n\x17SetTargetCompidResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult">\n\x0cProgressData\x12\x19\n\x11\x62ytes_transferred\x18\x01 \x01(\r\x12\x13\n\x0btotal_bytes\x18\x02 \x01(\r"\x8e\x03\n\tFtpResult\x12\x30\n\x06result\x18\x01 \x01(\x0e\x32 .mavsdk.rpc.ftp.FtpResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xba\x02\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x0f\n\x0bRESULT_NEXT\x10\x02\x12\x12\n\x0eRESULT_TIMEOUT\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x18\n\x14RESULT_FILE_IO_ERROR\x10\x05\x12\x16\n\x12RESULT_FILE_EXISTS\x10\x06\x12\x1e\n\x1aRESULT_FILE_DOES_NOT_EXIST\x10\x07\x12\x19\n\x15RESULT_FILE_PROTECTED\x10\x08\x12\x1c\n\x18RESULT_INVALID_PARAMETER\x10\t\x12\x16\n\x12RESULT_UNSUPPORTED\x10\n\x12\x19\n\x15RESULT_PROTOCOL_ERROR\x10\x0b\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x0c\x32\x84\x07\n\nFtpService\x12k\n\x11SubscribeDownload\x12(.mavsdk.rpc.ftp.SubscribeDownloadRequest\x1a .mavsdk.rpc.ftp.DownloadResponse"\x08\x80\xb5\x18\x00\x88\xb5\x18\x01\x30\x01\x12\x65\n\x0fSubscribeUpload\x12&.mavsdk.rpc.ftp.SubscribeUploadRequest\x1a\x1e.mavsdk.rpc.ftp.UploadResponse"\x08\x80\xb5\x18\x00\x88\xb5\x18\x01\x30\x01\x12^\n\rListDirectory\x12$.mavsdk.rpc.ftp.ListDirectoryRequest\x1a%.mavsdk.rpc.ftp.ListDirectoryResponse"\x00\x12\x64\n\x0f\x43reateDirectory\x12&.mavsdk.rpc.ftp.CreateDirectoryRequest\x1a\'.mavsdk.rpc.ftp.CreateDirectoryResponse"\x00\x12\x64\n\x0fRemoveDirectory\x12&.mavsdk.rpc.ftp.RemoveDirectoryRequest\x1a\'.mavsdk.rpc.ftp.RemoveDirectoryResponse"\x00\x12U\n\nRemoveFile\x12!.mavsdk.rpc.ftp.RemoveFileRequest\x1a".mavsdk.rpc.ftp.RemoveFileResponse"\x00\x12I\n\x06Rename\x12\x1d.mavsdk.rpc.ftp.RenameRequest\x1a\x1e.mavsdk.rpc.ftp.RenameResponse"\x00\x12j\n\x11\x41reFilesIdentical\x12(.mavsdk.rpc.ftp.AreFilesIdenticalRequest\x1a).mavsdk.rpc.ftp.AreFilesIdenticalResponse"\x00\x12h\n\x0fSetTargetCompid\x12&.mavsdk.rpc.ftp.SetTargetCompidRequest\x1a\'.mavsdk.rpc.ftp.SetTargetCompidResponse"\x04\x80\xb5\x18\x01\x42\x19\n\rio.mavsdk.ftpB\x08\x46tpProtob\x06proto3' + b'\n\rftp/ftp.proto\x12\x0emavsdk.rpc.ftp\x1a\x14mavsdk_options.proto"Z\n\x18SubscribeDownloadRequest\x12\x18\n\x10remote_file_path\x18\x01 \x01(\t\x12\x11\n\tlocal_dir\x18\x02 \x01(\t\x12\x11\n\tuse_burst\x18\x03 \x01(\x08"v\n\x10\x44ownloadResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12\x33\n\rprogress_data\x18\x02 \x01(\x0b\x32\x1c.mavsdk.rpc.ftp.ProgressData"E\n\x16SubscribeUploadRequest\x12\x17\n\x0flocal_file_path\x18\x01 \x01(\t\x12\x12\n\nremote_dir\x18\x02 \x01(\t"t\n\x0eUploadResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12\x33\n\rprogress_data\x18\x02 \x01(\x0b\x32\x1c.mavsdk.rpc.ftp.ProgressData"*\n\x14ListDirectoryRequest\x12\x12\n\nremote_dir\x18\x01 \x01(\t"\xe3\x01\n\x0f\x46ilesystemEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12=\n\nentry_type\x18\x02 \x01(\x0e\x32).mavsdk.rpc.ftp.FilesystemEntry.EntryType\x12\x12\n\nsize_bytes\x18\x03 \x01(\x04\x12\x1b\n\x13modification_time_s\x18\x04 \x01(\x04"R\n\tEntryType\x12\x16\n\x12\x45NTRY_TYPE_UNKNOWN\x10\x00\x12\x13\n\x0f\x45NTRY_TYPE_FILE\x10\x01\x12\x18\n\x14\x45NTRY_TYPE_DIRECTORY\x10\x02"E\n\x11ListDirectoryData\x12\x30\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x1f.mavsdk.rpc.ftp.FilesystemEntry"w\n\x15ListDirectoryResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12/\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32!.mavsdk.rpc.ftp.ListDirectoryData",\n\x16\x43reateDirectoryRequest\x12\x12\n\nremote_dir\x18\x01 \x01(\t"H\n\x17\x43reateDirectoryResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult",\n\x16RemoveDirectoryRequest\x12\x12\n\nremote_dir\x18\x01 \x01(\t"H\n\x17RemoveDirectoryResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult"-\n\x11RemoveFileRequest\x12\x18\n\x10remote_file_path\x18\x01 \x01(\t"C\n\x12RemoveFileResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult"A\n\rRenameRequest\x12\x18\n\x10remote_from_path\x18\x01 \x01(\t\x12\x16\n\x0eremote_to_path\x18\x02 \x01(\t"?\n\x0eRenameResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult"M\n\x18\x41reFilesIdenticalRequest\x12\x17\n\x0flocal_file_path\x18\x01 \x01(\t\x12\x18\n\x10remote_file_path\x18\x02 \x01(\t"a\n\x19\x41reFilesIdenticalResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult\x12\x15\n\rare_identical\x18\x02 \x01(\x08"(\n\x16SetTargetCompidRequest\x12\x0e\n\x06\x63ompid\x18\x01 \x01(\r"H\n\x17SetTargetCompidResponse\x12-\n\nftp_result\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.ftp.FtpResult">\n\x0cProgressData\x12\x19\n\x11\x62ytes_transferred\x18\x01 \x01(\r\x12\x13\n\x0btotal_bytes\x18\x02 \x01(\r"\x8e\x03\n\tFtpResult\x12\x30\n\x06result\x18\x01 \x01(\x0e\x32 .mavsdk.rpc.ftp.FtpResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xba\x02\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x0f\n\x0bRESULT_NEXT\x10\x02\x12\x12\n\x0eRESULT_TIMEOUT\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x18\n\x14RESULT_FILE_IO_ERROR\x10\x05\x12\x16\n\x12RESULT_FILE_EXISTS\x10\x06\x12\x1e\n\x1aRESULT_FILE_DOES_NOT_EXIST\x10\x07\x12\x19\n\x15RESULT_FILE_PROTECTED\x10\x08\x12\x1c\n\x18RESULT_INVALID_PARAMETER\x10\t\x12\x16\n\x12RESULT_UNSUPPORTED\x10\n\x12\x19\n\x15RESULT_PROTOCOL_ERROR\x10\x0b\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x0c\x32\x84\x07\n\nFtpService\x12k\n\x11SubscribeDownload\x12(.mavsdk.rpc.ftp.SubscribeDownloadRequest\x1a .mavsdk.rpc.ftp.DownloadResponse"\x08\x80\xb5\x18\x00\x88\xb5\x18\x01\x30\x01\x12\x65\n\x0fSubscribeUpload\x12&.mavsdk.rpc.ftp.SubscribeUploadRequest\x1a\x1e.mavsdk.rpc.ftp.UploadResponse"\x08\x80\xb5\x18\x00\x88\xb5\x18\x01\x30\x01\x12^\n\rListDirectory\x12$.mavsdk.rpc.ftp.ListDirectoryRequest\x1a%.mavsdk.rpc.ftp.ListDirectoryResponse"\x00\x12\x64\n\x0f\x43reateDirectory\x12&.mavsdk.rpc.ftp.CreateDirectoryRequest\x1a\'.mavsdk.rpc.ftp.CreateDirectoryResponse"\x00\x12\x64\n\x0fRemoveDirectory\x12&.mavsdk.rpc.ftp.RemoveDirectoryRequest\x1a\'.mavsdk.rpc.ftp.RemoveDirectoryResponse"\x00\x12U\n\nRemoveFile\x12!.mavsdk.rpc.ftp.RemoveFileRequest\x1a".mavsdk.rpc.ftp.RemoveFileResponse"\x00\x12I\n\x06Rename\x12\x1d.mavsdk.rpc.ftp.RenameRequest\x1a\x1e.mavsdk.rpc.ftp.RenameResponse"\x00\x12j\n\x11\x41reFilesIdentical\x12(.mavsdk.rpc.ftp.AreFilesIdenticalRequest\x1a).mavsdk.rpc.ftp.AreFilesIdenticalResponse"\x00\x12h\n\x0fSetTargetCompid\x12&.mavsdk.rpc.ftp.SetTargetCompidRequest\x1a\'.mavsdk.rpc.ftp.SetTargetCompidResponse"\x04\x80\xb5\x18\x01\x42\x19\n\rio.mavsdk.ftpB\x08\x46tpProtob\x06proto3' ) _globals = globals() @@ -54,40 +54,44 @@ _globals["_UPLOADRESPONSE"]._serialized_end = 454 _globals["_LISTDIRECTORYREQUEST"]._serialized_start = 456 _globals["_LISTDIRECTORYREQUEST"]._serialized_end = 498 - _globals["_LISTDIRECTORYDATA"]._serialized_start = 500 - _globals["_LISTDIRECTORYDATA"]._serialized_end = 548 - _globals["_LISTDIRECTORYRESPONSE"]._serialized_start = 550 - _globals["_LISTDIRECTORYRESPONSE"]._serialized_end = 669 - _globals["_CREATEDIRECTORYREQUEST"]._serialized_start = 671 - _globals["_CREATEDIRECTORYREQUEST"]._serialized_end = 715 - _globals["_CREATEDIRECTORYRESPONSE"]._serialized_start = 717 - _globals["_CREATEDIRECTORYRESPONSE"]._serialized_end = 789 - _globals["_REMOVEDIRECTORYREQUEST"]._serialized_start = 791 - _globals["_REMOVEDIRECTORYREQUEST"]._serialized_end = 835 - _globals["_REMOVEDIRECTORYRESPONSE"]._serialized_start = 837 - _globals["_REMOVEDIRECTORYRESPONSE"]._serialized_end = 909 - _globals["_REMOVEFILEREQUEST"]._serialized_start = 911 - _globals["_REMOVEFILEREQUEST"]._serialized_end = 956 - _globals["_REMOVEFILERESPONSE"]._serialized_start = 958 - _globals["_REMOVEFILERESPONSE"]._serialized_end = 1025 - _globals["_RENAMEREQUEST"]._serialized_start = 1027 - _globals["_RENAMEREQUEST"]._serialized_end = 1092 - _globals["_RENAMERESPONSE"]._serialized_start = 1094 - _globals["_RENAMERESPONSE"]._serialized_end = 1157 - _globals["_AREFILESIDENTICALREQUEST"]._serialized_start = 1159 - _globals["_AREFILESIDENTICALREQUEST"]._serialized_end = 1236 - _globals["_AREFILESIDENTICALRESPONSE"]._serialized_start = 1238 - _globals["_AREFILESIDENTICALRESPONSE"]._serialized_end = 1335 - _globals["_SETTARGETCOMPIDREQUEST"]._serialized_start = 1337 - _globals["_SETTARGETCOMPIDREQUEST"]._serialized_end = 1377 - _globals["_SETTARGETCOMPIDRESPONSE"]._serialized_start = 1379 - _globals["_SETTARGETCOMPIDRESPONSE"]._serialized_end = 1451 - _globals["_PROGRESSDATA"]._serialized_start = 1453 - _globals["_PROGRESSDATA"]._serialized_end = 1515 - _globals["_FTPRESULT"]._serialized_start = 1518 - _globals["_FTPRESULT"]._serialized_end = 1916 - _globals["_FTPRESULT_RESULT"]._serialized_start = 1602 - _globals["_FTPRESULT_RESULT"]._serialized_end = 1916 - _globals["_FTPSERVICE"]._serialized_start = 1919 - _globals["_FTPSERVICE"]._serialized_end = 2819 + _globals["_FILESYSTEMENTRY"]._serialized_start = 501 + _globals["_FILESYSTEMENTRY"]._serialized_end = 728 + _globals["_FILESYSTEMENTRY_ENTRYTYPE"]._serialized_start = 646 + _globals["_FILESYSTEMENTRY_ENTRYTYPE"]._serialized_end = 728 + _globals["_LISTDIRECTORYDATA"]._serialized_start = 730 + _globals["_LISTDIRECTORYDATA"]._serialized_end = 799 + _globals["_LISTDIRECTORYRESPONSE"]._serialized_start = 801 + _globals["_LISTDIRECTORYRESPONSE"]._serialized_end = 920 + _globals["_CREATEDIRECTORYREQUEST"]._serialized_start = 922 + _globals["_CREATEDIRECTORYREQUEST"]._serialized_end = 966 + _globals["_CREATEDIRECTORYRESPONSE"]._serialized_start = 968 + _globals["_CREATEDIRECTORYRESPONSE"]._serialized_end = 1040 + _globals["_REMOVEDIRECTORYREQUEST"]._serialized_start = 1042 + _globals["_REMOVEDIRECTORYREQUEST"]._serialized_end = 1086 + _globals["_REMOVEDIRECTORYRESPONSE"]._serialized_start = 1088 + _globals["_REMOVEDIRECTORYRESPONSE"]._serialized_end = 1160 + _globals["_REMOVEFILEREQUEST"]._serialized_start = 1162 + _globals["_REMOVEFILEREQUEST"]._serialized_end = 1207 + _globals["_REMOVEFILERESPONSE"]._serialized_start = 1209 + _globals["_REMOVEFILERESPONSE"]._serialized_end = 1276 + _globals["_RENAMEREQUEST"]._serialized_start = 1278 + _globals["_RENAMEREQUEST"]._serialized_end = 1343 + _globals["_RENAMERESPONSE"]._serialized_start = 1345 + _globals["_RENAMERESPONSE"]._serialized_end = 1408 + _globals["_AREFILESIDENTICALREQUEST"]._serialized_start = 1410 + _globals["_AREFILESIDENTICALREQUEST"]._serialized_end = 1487 + _globals["_AREFILESIDENTICALRESPONSE"]._serialized_start = 1489 + _globals["_AREFILESIDENTICALRESPONSE"]._serialized_end = 1586 + _globals["_SETTARGETCOMPIDREQUEST"]._serialized_start = 1588 + _globals["_SETTARGETCOMPIDREQUEST"]._serialized_end = 1628 + _globals["_SETTARGETCOMPIDRESPONSE"]._serialized_start = 1630 + _globals["_SETTARGETCOMPIDRESPONSE"]._serialized_end = 1702 + _globals["_PROGRESSDATA"]._serialized_start = 1704 + _globals["_PROGRESSDATA"]._serialized_end = 1766 + _globals["_FTPRESULT"]._serialized_start = 1769 + _globals["_FTPRESULT"]._serialized_end = 2167 + _globals["_FTPRESULT_RESULT"]._serialized_start = 1853 + _globals["_FTPRESULT_RESULT"]._serialized_end = 2167 + _globals["_FTPSERVICE"]._serialized_start = 2170 + _globals["_FTPSERVICE"]._serialized_end = 3070 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/ftp_server.py b/mavsdk/ftp_server.py index 09b7efe3..b6e8e48b 100644 --- a/mavsdk/ftp_server.py +++ b/mavsdk/ftp_server.py @@ -150,6 +150,10 @@ async def set_root_dir(self, path): The permissions are the same as the file permission for the user running the server. The root directory can't be changed while an FTP process is in progress. + The contents of the root directory are trusted: symbolic links inside it are + followed even when they point outside of the root directory. Only place symlinks + there if exposing their targets to a client is intended. + Parameters ---------- path : std::string diff --git a/mavsdk/ftp_server_pb2_grpc.py b/mavsdk/ftp_server_pb2_grpc.py index b1e96465..30263c7d 100644 --- a/mavsdk/ftp_server_pb2_grpc.py +++ b/mavsdk/ftp_server_pb2_grpc.py @@ -57,6 +57,10 @@ def SetRootDir(self, request, context): The directory needs to exist when this is called. The permissions are the same as the file permission for the user running the server. The root directory can't be changed while an FTP process is in progress. + + The contents of the root directory are trusted: symbolic links inside it are + followed even when they point outside of the root directory. Only place symlinks + there if exposing their targets to a client is intended. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") diff --git a/mavsdk/info.py b/mavsdk/info.py index c2b97580..d969e025 100644 --- a/mavsdk/info.py +++ b/mavsdk/info.py @@ -599,31 +599,6 @@ def _extract_result(self, response): """Returns the response status and description""" return InfoResult.translate_from_rpc(response.info_result) - async def get_flight_information(self): - """ - Get flight information of the system. - - Returns - ------- - flight_info : FlightInfo - Flight information of the system - - Raises - ------ - InfoError - If the request fails. The error contains the reason for the failure. - """ - - request = info_pb2.GetFlightInformationRequest() - response = await self._stub.GetFlightInformation(request) - - result = self._extract_result(response) - - if result.result != InfoResult.Result.SUCCESS: - raise InfoError(result, "get_flight_information()") - - return FlightInfo.translate_from_rpc(response.flight_info) - async def get_identification(self): """ Get the identification of the system. diff --git a/mavsdk/info_pb2.py b/mavsdk/info_pb2.py index 90785842..4a2399d6 100644 --- a/mavsdk/info_pb2.py +++ b/mavsdk/info_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x0finfo/info.proto\x12\x0fmavsdk.rpc.info\x1a\x14mavsdk_options.proto"\x1d\n\x1bGetFlightInformationRequest"\x82\x01\n\x1cGetFlightInformationResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12\x30\n\x0b\x66light_info\x18\x02 \x01(\x0b\x32\x1b.mavsdk.rpc.info.FlightInfo"\x1a\n\x18GetIdentificationRequest"\x86\x01\n\x19GetIdentificationResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12\x37\n\x0eidentification\x18\x02 \x01(\x0b\x32\x1f.mavsdk.rpc.info.Identification"\x13\n\x11GetProductRequest"q\n\x12GetProductResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12)\n\x07product\x18\x02 \x01(\x0b\x32\x18.mavsdk.rpc.info.Product"\x13\n\x11GetVersionRequest"q\n\x12GetVersionResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12)\n\x07version\x18\x02 \x01(\x0b\x32\x18.mavsdk.rpc.info.Version"\x17\n\x15GetSpeedFactorRequest"`\n\x16GetSpeedFactorResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12\x14\n\x0cspeed_factor\x18\x02 \x01(\x01"#\n!SubscribeFlightInformationRequest"M\n\x19\x46lightInformationResponse\x12\x30\n\x0b\x66light_info\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.FlightInfo"{\n\nFlightInfo\x12\x14\n\x0ctime_boot_ms\x18\x01 \x01(\r\x12\x12\n\nflight_uid\x18\x02 \x01(\x04\x12 \n\x18\x64uration_since_arming_ms\x18\x03 \x01(\r\x12!\n\x19\x64uration_since_takeoff_ms\x18\x04 \x01(\r":\n\x0eIdentification\x12\x14\n\x0chardware_uid\x18\x01 \x01(\t\x12\x12\n\nlegacy_uid\x18\x02 \x01(\x04"[\n\x07Product\x12\x11\n\tvendor_id\x18\x01 \x01(\x05\x12\x13\n\x0bvendor_name\x18\x02 \x01(\t\x12\x12\n\nproduct_id\x18\x03 \x01(\x05\x12\x14\n\x0cproduct_name\x18\x04 \x01(\t"\x87\x05\n\x07Version\x12\x17\n\x0f\x66light_sw_major\x18\x01 \x01(\x05\x12\x17\n\x0f\x66light_sw_minor\x18\x02 \x01(\x05\x12\x17\n\x0f\x66light_sw_patch\x18\x03 \x01(\x05\x12\x1e\n\x16\x66light_sw_vendor_major\x18\x04 \x01(\x05\x12\x1e\n\x16\x66light_sw_vendor_minor\x18\x05 \x01(\x05\x12\x1e\n\x16\x66light_sw_vendor_patch\x18\x06 \x01(\x05\x12\x13\n\x0bos_sw_major\x18\x07 \x01(\x05\x12\x13\n\x0bos_sw_minor\x18\x08 \x01(\x05\x12\x13\n\x0bos_sw_patch\x18\t \x01(\x05\x12\x1a\n\x12\x66light_sw_git_hash\x18\n \x01(\t\x12\x16\n\x0eos_sw_git_hash\x18\x0b \x01(\t\x12R\n\x16\x66light_sw_version_type\x18\x0c \x01(\x0e\x32\x32.mavsdk.rpc.info.Version.FlightSoftwareVersionType"\x89\x02\n\x19\x46lightSoftwareVersionType\x12(\n$FLIGHT_SOFTWARE_VERSION_TYPE_UNKNOWN\x10\x00\x12$\n FLIGHT_SOFTWARE_VERSION_TYPE_DEV\x10\x01\x12&\n"FLIGHT_SOFTWARE_VERSION_TYPE_ALPHA\x10\x02\x12%\n!FLIGHT_SOFTWARE_VERSION_TYPE_BETA\x10\x03\x12#\n\x1f\x46LIGHT_SOFTWARE_VERSION_TYPE_RC\x10\x04\x12(\n$FLIGHT_SOFTWARE_VERSION_TYPE_RELEASE\x10\x05"\xc5\x01\n\nInfoResult\x12\x32\n\x06result\x18\x01 \x01(\x0e\x32".mavsdk.rpc.info.InfoResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"o\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\'\n#RESULT_INFORMATION_NOT_RECEIVED_YET\x10\x02\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x03\x32\xa4\x05\n\x0bInfoService\x12y\n\x14GetFlightInformation\x12,.mavsdk.rpc.info.GetFlightInformationRequest\x1a-.mavsdk.rpc.info.GetFlightInformationResponse"\x04\x80\xb5\x18\x01\x12p\n\x11GetIdentification\x12).mavsdk.rpc.info.GetIdentificationRequest\x1a*.mavsdk.rpc.info.GetIdentificationResponse"\x04\x80\xb5\x18\x01\x12[\n\nGetProduct\x12".mavsdk.rpc.info.GetProductRequest\x1a#.mavsdk.rpc.info.GetProductResponse"\x04\x80\xb5\x18\x01\x12[\n\nGetVersion\x12".mavsdk.rpc.info.GetVersionRequest\x1a#.mavsdk.rpc.info.GetVersionResponse"\x04\x80\xb5\x18\x01\x12g\n\x0eGetSpeedFactor\x12&.mavsdk.rpc.info.GetSpeedFactorRequest\x1a\'.mavsdk.rpc.info.GetSpeedFactorResponse"\x04\x80\xb5\x18\x01\x12\x84\x01\n\x1aSubscribeFlightInformation\x12\x32.mavsdk.rpc.info.SubscribeFlightInformationRequest\x1a*.mavsdk.rpc.info.FlightInformationResponse"\x04\x80\xb5\x18\x00\x30\x01\x42\x1b\n\x0eio.mavsdk.infoB\tInfoProtob\x06proto3' + b'\n\x0finfo/info.proto\x12\x0fmavsdk.rpc.info\x1a\x14mavsdk_options.proto"\x1a\n\x18GetIdentificationRequest"\x86\x01\n\x19GetIdentificationResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12\x37\n\x0eidentification\x18\x02 \x01(\x0b\x32\x1f.mavsdk.rpc.info.Identification"\x13\n\x11GetProductRequest"q\n\x12GetProductResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12)\n\x07product\x18\x02 \x01(\x0b\x32\x18.mavsdk.rpc.info.Product"\x13\n\x11GetVersionRequest"q\n\x12GetVersionResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12)\n\x07version\x18\x02 \x01(\x0b\x32\x18.mavsdk.rpc.info.Version"\x17\n\x15GetSpeedFactorRequest"`\n\x16GetSpeedFactorResponse\x12\x30\n\x0binfo_result\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.InfoResult\x12\x14\n\x0cspeed_factor\x18\x02 \x01(\x01"#\n!SubscribeFlightInformationRequest"M\n\x19\x46lightInformationResponse\x12\x30\n\x0b\x66light_info\x18\x01 \x01(\x0b\x32\x1b.mavsdk.rpc.info.FlightInfo"{\n\nFlightInfo\x12\x14\n\x0ctime_boot_ms\x18\x01 \x01(\r\x12\x12\n\nflight_uid\x18\x02 \x01(\x04\x12 \n\x18\x64uration_since_arming_ms\x18\x03 \x01(\r\x12!\n\x19\x64uration_since_takeoff_ms\x18\x04 \x01(\r":\n\x0eIdentification\x12\x14\n\x0chardware_uid\x18\x01 \x01(\t\x12\x12\n\nlegacy_uid\x18\x02 \x01(\x04"[\n\x07Product\x12\x11\n\tvendor_id\x18\x01 \x01(\x05\x12\x13\n\x0bvendor_name\x18\x02 \x01(\t\x12\x12\n\nproduct_id\x18\x03 \x01(\x05\x12\x14\n\x0cproduct_name\x18\x04 \x01(\t"\x87\x05\n\x07Version\x12\x17\n\x0f\x66light_sw_major\x18\x01 \x01(\x05\x12\x17\n\x0f\x66light_sw_minor\x18\x02 \x01(\x05\x12\x17\n\x0f\x66light_sw_patch\x18\x03 \x01(\x05\x12\x1e\n\x16\x66light_sw_vendor_major\x18\x04 \x01(\x05\x12\x1e\n\x16\x66light_sw_vendor_minor\x18\x05 \x01(\x05\x12\x1e\n\x16\x66light_sw_vendor_patch\x18\x06 \x01(\x05\x12\x13\n\x0bos_sw_major\x18\x07 \x01(\x05\x12\x13\n\x0bos_sw_minor\x18\x08 \x01(\x05\x12\x13\n\x0bos_sw_patch\x18\t \x01(\x05\x12\x1a\n\x12\x66light_sw_git_hash\x18\n \x01(\t\x12\x16\n\x0eos_sw_git_hash\x18\x0b \x01(\t\x12R\n\x16\x66light_sw_version_type\x18\x0c \x01(\x0e\x32\x32.mavsdk.rpc.info.Version.FlightSoftwareVersionType"\x89\x02\n\x19\x46lightSoftwareVersionType\x12(\n$FLIGHT_SOFTWARE_VERSION_TYPE_UNKNOWN\x10\x00\x12$\n FLIGHT_SOFTWARE_VERSION_TYPE_DEV\x10\x01\x12&\n"FLIGHT_SOFTWARE_VERSION_TYPE_ALPHA\x10\x02\x12%\n!FLIGHT_SOFTWARE_VERSION_TYPE_BETA\x10\x03\x12#\n\x1f\x46LIGHT_SOFTWARE_VERSION_TYPE_RC\x10\x04\x12(\n$FLIGHT_SOFTWARE_VERSION_TYPE_RELEASE\x10\x05"\xc5\x01\n\nInfoResult\x12\x32\n\x06result\x18\x01 \x01(\x0e\x32".mavsdk.rpc.info.InfoResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"o\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\'\n#RESULT_INFORMATION_NOT_RECEIVED_YET\x10\x02\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x03\x32\xa9\x04\n\x0bInfoService\x12p\n\x11GetIdentification\x12).mavsdk.rpc.info.GetIdentificationRequest\x1a*.mavsdk.rpc.info.GetIdentificationResponse"\x04\x80\xb5\x18\x01\x12[\n\nGetProduct\x12".mavsdk.rpc.info.GetProductRequest\x1a#.mavsdk.rpc.info.GetProductResponse"\x04\x80\xb5\x18\x01\x12[\n\nGetVersion\x12".mavsdk.rpc.info.GetVersionRequest\x1a#.mavsdk.rpc.info.GetVersionResponse"\x04\x80\xb5\x18\x01\x12g\n\x0eGetSpeedFactor\x12&.mavsdk.rpc.info.GetSpeedFactorRequest\x1a\'.mavsdk.rpc.info.GetSpeedFactorResponse"\x04\x80\xb5\x18\x01\x12\x84\x01\n\x1aSubscribeFlightInformation\x12\x32.mavsdk.rpc.info.SubscribeFlightInformationRequest\x1a*.mavsdk.rpc.info.FlightInformationResponse"\x04\x80\xb5\x18\x00\x30\x01\x42\x1b\n\x0eio.mavsdk.infoB\tInfoProtob\x06proto3' ) _globals = globals() @@ -32,12 +32,6 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals["DESCRIPTOR"]._loaded_options = None _globals["DESCRIPTOR"]._serialized_options = b"\n\016io.mavsdk.infoB\tInfoProto" - _globals["_INFOSERVICE"].methods_by_name[ - "GetFlightInformation" - ]._loaded_options = None - _globals["_INFOSERVICE"].methods_by_name[ - "GetFlightInformation" - ]._serialized_options = b"\200\265\030\001" _globals["_INFOSERVICE"].methods_by_name["GetIdentification"]._loaded_options = None _globals["_INFOSERVICE"].methods_by_name[ "GetIdentification" @@ -60,44 +54,40 @@ _globals["_INFOSERVICE"].methods_by_name[ "SubscribeFlightInformation" ]._serialized_options = b"\200\265\030\000" - _globals["_GETFLIGHTINFORMATIONREQUEST"]._serialized_start = 58 - _globals["_GETFLIGHTINFORMATIONREQUEST"]._serialized_end = 87 - _globals["_GETFLIGHTINFORMATIONRESPONSE"]._serialized_start = 90 - _globals["_GETFLIGHTINFORMATIONRESPONSE"]._serialized_end = 220 - _globals["_GETIDENTIFICATIONREQUEST"]._serialized_start = 222 - _globals["_GETIDENTIFICATIONREQUEST"]._serialized_end = 248 - _globals["_GETIDENTIFICATIONRESPONSE"]._serialized_start = 251 - _globals["_GETIDENTIFICATIONRESPONSE"]._serialized_end = 385 - _globals["_GETPRODUCTREQUEST"]._serialized_start = 387 - _globals["_GETPRODUCTREQUEST"]._serialized_end = 406 - _globals["_GETPRODUCTRESPONSE"]._serialized_start = 408 - _globals["_GETPRODUCTRESPONSE"]._serialized_end = 521 - _globals["_GETVERSIONREQUEST"]._serialized_start = 523 - _globals["_GETVERSIONREQUEST"]._serialized_end = 542 - _globals["_GETVERSIONRESPONSE"]._serialized_start = 544 - _globals["_GETVERSIONRESPONSE"]._serialized_end = 657 - _globals["_GETSPEEDFACTORREQUEST"]._serialized_start = 659 - _globals["_GETSPEEDFACTORREQUEST"]._serialized_end = 682 - _globals["_GETSPEEDFACTORRESPONSE"]._serialized_start = 684 - _globals["_GETSPEEDFACTORRESPONSE"]._serialized_end = 780 - _globals["_SUBSCRIBEFLIGHTINFORMATIONREQUEST"]._serialized_start = 782 - _globals["_SUBSCRIBEFLIGHTINFORMATIONREQUEST"]._serialized_end = 817 - _globals["_FLIGHTINFORMATIONRESPONSE"]._serialized_start = 819 - _globals["_FLIGHTINFORMATIONRESPONSE"]._serialized_end = 896 - _globals["_FLIGHTINFO"]._serialized_start = 898 - _globals["_FLIGHTINFO"]._serialized_end = 1021 - _globals["_IDENTIFICATION"]._serialized_start = 1023 - _globals["_IDENTIFICATION"]._serialized_end = 1081 - _globals["_PRODUCT"]._serialized_start = 1083 - _globals["_PRODUCT"]._serialized_end = 1174 - _globals["_VERSION"]._serialized_start = 1177 - _globals["_VERSION"]._serialized_end = 1824 - _globals["_VERSION_FLIGHTSOFTWAREVERSIONTYPE"]._serialized_start = 1559 - _globals["_VERSION_FLIGHTSOFTWAREVERSIONTYPE"]._serialized_end = 1824 - _globals["_INFORESULT"]._serialized_start = 1827 - _globals["_INFORESULT"]._serialized_end = 2024 - _globals["_INFORESULT_RESULT"]._serialized_start = 1913 - _globals["_INFORESULT_RESULT"]._serialized_end = 2024 - _globals["_INFOSERVICE"]._serialized_start = 2027 - _globals["_INFOSERVICE"]._serialized_end = 2703 + _globals["_GETIDENTIFICATIONREQUEST"]._serialized_start = 58 + _globals["_GETIDENTIFICATIONREQUEST"]._serialized_end = 84 + _globals["_GETIDENTIFICATIONRESPONSE"]._serialized_start = 87 + _globals["_GETIDENTIFICATIONRESPONSE"]._serialized_end = 221 + _globals["_GETPRODUCTREQUEST"]._serialized_start = 223 + _globals["_GETPRODUCTREQUEST"]._serialized_end = 242 + _globals["_GETPRODUCTRESPONSE"]._serialized_start = 244 + _globals["_GETPRODUCTRESPONSE"]._serialized_end = 357 + _globals["_GETVERSIONREQUEST"]._serialized_start = 359 + _globals["_GETVERSIONREQUEST"]._serialized_end = 378 + _globals["_GETVERSIONRESPONSE"]._serialized_start = 380 + _globals["_GETVERSIONRESPONSE"]._serialized_end = 493 + _globals["_GETSPEEDFACTORREQUEST"]._serialized_start = 495 + _globals["_GETSPEEDFACTORREQUEST"]._serialized_end = 518 + _globals["_GETSPEEDFACTORRESPONSE"]._serialized_start = 520 + _globals["_GETSPEEDFACTORRESPONSE"]._serialized_end = 616 + _globals["_SUBSCRIBEFLIGHTINFORMATIONREQUEST"]._serialized_start = 618 + _globals["_SUBSCRIBEFLIGHTINFORMATIONREQUEST"]._serialized_end = 653 + _globals["_FLIGHTINFORMATIONRESPONSE"]._serialized_start = 655 + _globals["_FLIGHTINFORMATIONRESPONSE"]._serialized_end = 732 + _globals["_FLIGHTINFO"]._serialized_start = 734 + _globals["_FLIGHTINFO"]._serialized_end = 857 + _globals["_IDENTIFICATION"]._serialized_start = 859 + _globals["_IDENTIFICATION"]._serialized_end = 917 + _globals["_PRODUCT"]._serialized_start = 919 + _globals["_PRODUCT"]._serialized_end = 1010 + _globals["_VERSION"]._serialized_start = 1013 + _globals["_VERSION"]._serialized_end = 1660 + _globals["_VERSION_FLIGHTSOFTWAREVERSIONTYPE"]._serialized_start = 1395 + _globals["_VERSION_FLIGHTSOFTWAREVERSIONTYPE"]._serialized_end = 1660 + _globals["_INFORESULT"]._serialized_start = 1663 + _globals["_INFORESULT"]._serialized_end = 1860 + _globals["_INFORESULT_RESULT"]._serialized_start = 1749 + _globals["_INFORESULT_RESULT"]._serialized_end = 1860 + _globals["_INFOSERVICE"]._serialized_start = 1863 + _globals["_INFOSERVICE"]._serialized_end = 2416 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/info_pb2_grpc.py b/mavsdk/info_pb2_grpc.py index e339d489..80315448 100644 --- a/mavsdk/info_pb2_grpc.py +++ b/mavsdk/info_pb2_grpc.py @@ -38,12 +38,6 @@ def __init__(self, channel): Args: channel: A grpc.Channel. """ - self.GetFlightInformation = channel.unary_unary( - "/mavsdk.rpc.info.InfoService/GetFlightInformation", - request_serializer=info_dot_info__pb2.GetFlightInformationRequest.SerializeToString, - response_deserializer=info_dot_info__pb2.GetFlightInformationResponse.FromString, - _registered_method=True, - ) self.GetIdentification = channel.unary_unary( "/mavsdk.rpc.info.InfoService/GetIdentification", request_serializer=info_dot_info__pb2.GetIdentificationRequest.SerializeToString, @@ -79,12 +73,6 @@ def __init__(self, channel): class InfoServiceServicer(object): """Provide information about the hardware and/or software of a system.""" - def GetFlightInformation(self, request, context): - """Get flight information of the system.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details("Method not implemented!") - raise NotImplementedError("Method not implemented!") - def GetIdentification(self, request, context): """Get the identification of the system.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -118,11 +106,6 @@ def SubscribeFlightInformation(self, request, context): def add_InfoServiceServicer_to_server(servicer, server): rpc_method_handlers = { - "GetFlightInformation": grpc.unary_unary_rpc_method_handler( - servicer.GetFlightInformation, - request_deserializer=info_dot_info__pb2.GetFlightInformationRequest.FromString, - response_serializer=info_dot_info__pb2.GetFlightInformationResponse.SerializeToString, - ), "GetIdentification": grpc.unary_unary_rpc_method_handler( servicer.GetIdentification, request_deserializer=info_dot_info__pb2.GetIdentificationRequest.FromString, @@ -162,36 +145,6 @@ def add_InfoServiceServicer_to_server(servicer, server): class InfoService(object): """Provide information about the hardware and/or software of a system.""" - @staticmethod - def GetFlightInformation( - request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None, - ): - return grpc.experimental.unary_unary( - request, - target, - "/mavsdk.rpc.info.InfoService/GetFlightInformation", - info_dot_info__pb2.GetFlightInformationRequest.SerializeToString, - info_dot_info__pb2.GetFlightInformationResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True, - ) - @staticmethod def GetIdentification( request, diff --git a/mavsdk/mavlink_direct_server.py b/mavsdk/mavlink_direct_server.py new file mode 100644 index 00000000..3f611f0d --- /dev/null +++ b/mavsdk/mavlink_direct_server.py @@ -0,0 +1,408 @@ +# -*- coding: utf-8 -*- +# DO NOT EDIT! This file is auto-generated from +# https://github.com/mavlink/MAVSDK-Python/tree/main/other/templates/py +from ._base import AsyncBase +from . import mavlink_direct_server_pb2, mavlink_direct_server_pb2_grpc +from enum import Enum + + +class MavlinkMessage: + """ + A complete MAVLink message with all header information and fields + + Parameters + ---------- + message_name : std::string + MAVLink message name (e.g., "HEARTBEAT", "GLOBAL_POSITION_INT") + + system_id : uint32_t + System ID of the sender (for received messages) + + component_id : uint32_t + Component ID of the sender (for received messages) + + target_system_id : uint32_t + Target system ID (for sending, 0 for broadcast) + + target_component_id : uint32_t + Target component ID (for sending, 0 for broadcast) + + fields_json : std::string + All message fields as single JSON object + + """ + + def __init__( + self, + message_name, + system_id, + component_id, + target_system_id, + target_component_id, + fields_json, + ): + """Initializes the MavlinkMessage object""" + self.message_name = message_name + self.system_id = system_id + self.component_id = component_id + self.target_system_id = target_system_id + self.target_component_id = target_component_id + self.fields_json = fields_json + + def __eq__(self, to_compare): + """Checks if two MavlinkMessage are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # MavlinkMessage object + return ( + (self.message_name == to_compare.message_name) + and (self.system_id == to_compare.system_id) + and (self.component_id == to_compare.component_id) + and (self.target_system_id == to_compare.target_system_id) + and (self.target_component_id == to_compare.target_component_id) + and (self.fields_json == to_compare.fields_json) + ) + + except AttributeError: + return False + + def __str__(self): + """MavlinkMessage in string representation""" + struct_repr = ", ".join( + [ + "message_name: " + str(self.message_name), + "system_id: " + str(self.system_id), + "component_id: " + str(self.component_id), + "target_system_id: " + str(self.target_system_id), + "target_component_id: " + str(self.target_component_id), + "fields_json: " + str(self.fields_json), + ] + ) + + return f"MavlinkMessage: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcMavlinkMessage): + """Translates a gRPC struct to the SDK equivalent""" + return MavlinkMessage( + rpcMavlinkMessage.message_name, + rpcMavlinkMessage.system_id, + rpcMavlinkMessage.component_id, + rpcMavlinkMessage.target_system_id, + rpcMavlinkMessage.target_component_id, + rpcMavlinkMessage.fields_json, + ) + + def translate_to_rpc(self, rpcMavlinkMessage): + """Translates this SDK object into its gRPC equivalent""" + + rpcMavlinkMessage.message_name = self.message_name + + rpcMavlinkMessage.system_id = self.system_id + + rpcMavlinkMessage.component_id = self.component_id + + rpcMavlinkMessage.target_system_id = self.target_system_id + + rpcMavlinkMessage.target_component_id = self.target_component_id + + rpcMavlinkMessage.fields_json = self.fields_json + + +class MavlinkDirectServerResult: + """ + Result type. + + Parameters + ---------- + result : Result + Result enum value + + result_str : std::string + Human-readable English string describing the result + + """ + + class Result(Enum): + """ + Possible results returned for action requests. + + Values + ------ + UNKNOWN + Unknown result + + SUCCESS + Request succeeded + + ERROR + Error + + INVALID_MESSAGE + Invalid MAVLink message + + INVALID_FIELD + Invalid field name or value + + CONNECTION_ERROR + Connection error + + NO_SYSTEM + No system connected + + TIMEOUT + Request timed out + + """ + + UNKNOWN = 0 + SUCCESS = 1 + ERROR = 2 + INVALID_MESSAGE = 3 + INVALID_FIELD = 4 + CONNECTION_ERROR = 5 + NO_SYSTEM = 6 + TIMEOUT = 7 + + def translate_to_rpc(self): + if self == MavlinkDirectServerResult.Result.UNKNOWN: + return ( + mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_UNKNOWN + ) + if self == MavlinkDirectServerResult.Result.SUCCESS: + return ( + mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_SUCCESS + ) + if self == MavlinkDirectServerResult.Result.ERROR: + return mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_ERROR + if self == MavlinkDirectServerResult.Result.INVALID_MESSAGE: + return mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_INVALID_MESSAGE + if self == MavlinkDirectServerResult.Result.INVALID_FIELD: + return mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_INVALID_FIELD + if self == MavlinkDirectServerResult.Result.CONNECTION_ERROR: + return mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_CONNECTION_ERROR + if self == MavlinkDirectServerResult.Result.NO_SYSTEM: + return ( + mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_NO_SYSTEM + ) + if self == MavlinkDirectServerResult.Result.TIMEOUT: + return ( + mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_TIMEOUT + ) + + @staticmethod + def translate_from_rpc(rpc_enum_value): + """Parses a gRPC response""" + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_UNKNOWN + ): + return MavlinkDirectServerResult.Result.UNKNOWN + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_SUCCESS + ): + return MavlinkDirectServerResult.Result.SUCCESS + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_ERROR + ): + return MavlinkDirectServerResult.Result.ERROR + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_INVALID_MESSAGE + ): + return MavlinkDirectServerResult.Result.INVALID_MESSAGE + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_INVALID_FIELD + ): + return MavlinkDirectServerResult.Result.INVALID_FIELD + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_CONNECTION_ERROR + ): + return MavlinkDirectServerResult.Result.CONNECTION_ERROR + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_NO_SYSTEM + ): + return MavlinkDirectServerResult.Result.NO_SYSTEM + if ( + rpc_enum_value + == mavlink_direct_server_pb2.MavlinkDirectServerResult.RESULT_TIMEOUT + ): + return MavlinkDirectServerResult.Result.TIMEOUT + + def __str__(self): + return self.name + + def __init__(self, result, result_str): + """Initializes the MavlinkDirectServerResult object""" + self.result = result + self.result_str = result_str + + def __eq__(self, to_compare): + """Checks if two MavlinkDirectServerResult are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # MavlinkDirectServerResult object + return (self.result == to_compare.result) and ( + self.result_str == to_compare.result_str + ) + + except AttributeError: + return False + + def __str__(self): + """MavlinkDirectServerResult in string representation""" + struct_repr = ", ".join( + ["result: " + str(self.result), "result_str: " + str(self.result_str)] + ) + + return f"MavlinkDirectServerResult: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcMavlinkDirectServerResult): + """Translates a gRPC struct to the SDK equivalent""" + return MavlinkDirectServerResult( + MavlinkDirectServerResult.Result.translate_from_rpc( + rpcMavlinkDirectServerResult.result + ), + rpcMavlinkDirectServerResult.result_str, + ) + + def translate_to_rpc(self, rpcMavlinkDirectServerResult): + """Translates this SDK object into its gRPC equivalent""" + + rpcMavlinkDirectServerResult.result = self.result.translate_to_rpc() + + rpcMavlinkDirectServerResult.result_str = self.result_str + + +class MavlinkDirectServerError(Exception): + """Raised when a MavlinkDirectServerResult is a fail code""" + + def __init__(self, result, origin, *params): + self._result = result + self._origin = origin + self._params = params + + def __str__(self): + return f"{self._result.result}: '{self._result.result_str}'; origin: {self._origin}; params: {self._params}" + + +class MavlinkDirectServer(AsyncBase): + """ + Enable direct MAVLink communication using libmav from a server component. + + Unlike MavlinkDirect, this does not require a discovered system: it sends from + the local server component, which makes it suitable for broadcasting messages + (e.g. as an autopilot or custom component) without a connected counterpart. + + Generated by dcsdkgen - MAVSDK MavlinkDirectServer API + """ + + # Plugin name + name = "MavlinkDirectServer" + + def _setup_stub(self, channel): + """Setups the api stub""" + self._stub = mavlink_direct_server_pb2_grpc.MavlinkDirectServerServiceStub( + channel + ) + + def _extract_result(self, response): + """Returns the response status and description""" + return MavlinkDirectServerResult.translate_from_rpc( + response.mavlink_direct_server_result + ) + + async def send_message(self, message): + """ + Send a MAVLink message directly. + + This allows sending any MAVLink message with full control over the message content. + Leave target_system_id and target_component_id at 0 to broadcast. + + Parameters + ---------- + message : MavlinkMessage + The MAVLink message to send + + Raises + ------ + MavlinkDirectServerError + If the request fails. The error contains the reason for the failure. + """ + + request = mavlink_direct_server_pb2.SendMessageRequest() + + message.translate_to_rpc(request.message) + + response = await self._stub.SendMessage(request) + + result = self._extract_result(response) + + if result.result != MavlinkDirectServerResult.Result.SUCCESS: + raise MavlinkDirectServerError(result, "send_message()", message) + + async def message(self, message_name): + """ + Subscribe to incoming MAVLink messages. + + This provides direct access to incoming MAVLink messages. Use an empty string + in message_name to subscribe to all messages, or specify a message name + (e.g., "HEARTBEAT") to filter for specific message types. Unlike the + MavlinkDirect (client) plugin, this is not scoped to a single system: it + receives matching messages from all systems. + + Parameters + ---------- + message_name : std::string + MAVLink message name to filter for (e.g., "HEARTBEAT"), empty string = all messages + + Yields + ------- + message : MavlinkMessage + The received MAVLink message + + + """ + + request = mavlink_direct_server_pb2.SubscribeMessageRequest() + request.message_name = message_name + message_stream = self._stub.SubscribeMessage(request) + + try: + async for response in message_stream: + yield MavlinkMessage.translate_from_rpc(response.message) + finally: + message_stream.cancel() + + async def load_custom_xml(self, xml_content): + """ + Load custom MAVLink message definitions from XML. + + This allows loading custom MAVLink message definitions at runtime, + extending the available message types beyond the built-in definitions. + + Parameters + ---------- + xml_content : std::string + The custom MAVLink XML definition content + + Raises + ------ + MavlinkDirectServerError + If the request fails. The error contains the reason for the failure. + """ + + request = mavlink_direct_server_pb2.LoadCustomXmlRequest() + request.xml_content = xml_content + response = await self._stub.LoadCustomXml(request) + + result = self._extract_result(response) + + if result.result != MavlinkDirectServerResult.Result.SUCCESS: + raise MavlinkDirectServerError(result, "load_custom_xml()", xml_content) diff --git a/mavsdk/mavlink_direct_server_pb2.py b/mavsdk/mavlink_direct_server_pb2.py new file mode 100644 index 00000000..667026d1 --- /dev/null +++ b/mavsdk/mavlink_direct_server_pb2.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: mavlink_direct_server/mavlink_direct_server.proto +# Protobuf Python Version: 6.31.1 +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + "", + "mavlink_direct_server/mavlink_direct_server.proto", +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from . import mavsdk_options_pb2 as mavsdk__options__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n1mavlink_direct_server/mavlink_direct_server.proto\x12 mavsdk.rpc.mavlink_direct_server\x1a\x14mavsdk_options.proto"W\n\x12SendMessageRequest\x12\x41\n\x07message\x18\x01 \x01(\x0b\x32\x30.mavsdk.rpc.mavlink_direct_server.MavlinkMessage"x\n\x13SendMessageResponse\x12\x61\n\x1cmavlink_direct_server_result\x18\x01 \x01(\x0b\x32;.mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerResult"/\n\x17SubscribeMessageRequest\x12\x14\n\x0cmessage_name\x18\x01 \x01(\t"T\n\x0fMessageResponse\x12\x41\n\x07message\x18\x01 \x01(\x0b\x32\x30.mavsdk.rpc.mavlink_direct_server.MavlinkMessage"+\n\x14LoadCustomXmlRequest\x12\x13\n\x0bxml_content\x18\x01 \x01(\t"z\n\x15LoadCustomXmlResponse\x12\x61\n\x1cmavlink_direct_server_result\x18\x01 \x01(\x0b\x32;.mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerResult"\x9b\x01\n\x0eMavlinkMessage\x12\x14\n\x0cmessage_name\x18\x01 \x01(\t\x12\x11\n\tsystem_id\x18\x02 \x01(\r\x12\x14\n\x0c\x63omponent_id\x18\x03 \x01(\r\x12\x18\n\x10target_system_id\x18\x04 \x01(\r\x12\x1b\n\x13target_component_id\x18\x05 \x01(\r\x12\x13\n\x0b\x66ields_json\x18\x06 \x01(\t"\xc5\x02\n\x19MavlinkDirectServerResult\x12R\n\x06result\x18\x01 \x01(\x0e\x32\x42.mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xbf\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x10\n\x0cRESULT_ERROR\x10\x02\x12\x1a\n\x16RESULT_INVALID_MESSAGE\x10\x03\x12\x18\n\x14RESULT_INVALID_FIELD\x10\x04\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x05\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x06\x12\x12\n\x0eRESULT_TIMEOUT\x10\x07\x32\xb3\x03\n\x1aMavlinkDirectServerService\x12\x80\x01\n\x0bSendMessage\x12\x34.mavsdk.rpc.mavlink_direct_server.SendMessageRequest\x1a\x35.mavsdk.rpc.mavlink_direct_server.SendMessageResponse"\x04\x80\xb5\x18\x01\x12\x88\x01\n\x10SubscribeMessage\x12\x39.mavsdk.rpc.mavlink_direct_server.SubscribeMessageRequest\x1a\x31.mavsdk.rpc.mavlink_direct_server.MessageResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x86\x01\n\rLoadCustomXml\x12\x36.mavsdk.rpc.mavlink_direct_server.LoadCustomXmlRequest\x1a\x37.mavsdk.rpc.mavlink_direct_server.LoadCustomXmlResponse"\x04\x80\xb5\x18\x01\x42;\n\x1fio.mavsdk.mavlink_direct_serverB\x18MavlinkDirectServerProtob\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages( + DESCRIPTOR, "mavlink_direct_server.mavlink_direct_server_pb2", _globals +) +if not _descriptor._USE_C_DESCRIPTORS: + _globals["DESCRIPTOR"]._loaded_options = None + _globals[ + "DESCRIPTOR" + ]._serialized_options = ( + b"\n\037io.mavsdk.mavlink_direct_serverB\030MavlinkDirectServerProto" + ) + _globals["_MAVLINKDIRECTSERVERSERVICE"].methods_by_name[ + "SendMessage" + ]._loaded_options = None + _globals["_MAVLINKDIRECTSERVERSERVICE"].methods_by_name[ + "SendMessage" + ]._serialized_options = b"\200\265\030\001" + _globals["_MAVLINKDIRECTSERVERSERVICE"].methods_by_name[ + "SubscribeMessage" + ]._loaded_options = None + _globals["_MAVLINKDIRECTSERVERSERVICE"].methods_by_name[ + "SubscribeMessage" + ]._serialized_options = b"\200\265\030\000" + _globals["_MAVLINKDIRECTSERVERSERVICE"].methods_by_name[ + "LoadCustomXml" + ]._loaded_options = None + _globals["_MAVLINKDIRECTSERVERSERVICE"].methods_by_name[ + "LoadCustomXml" + ]._serialized_options = b"\200\265\030\001" + _globals["_SENDMESSAGEREQUEST"]._serialized_start = 109 + _globals["_SENDMESSAGEREQUEST"]._serialized_end = 196 + _globals["_SENDMESSAGERESPONSE"]._serialized_start = 198 + _globals["_SENDMESSAGERESPONSE"]._serialized_end = 318 + _globals["_SUBSCRIBEMESSAGEREQUEST"]._serialized_start = 320 + _globals["_SUBSCRIBEMESSAGEREQUEST"]._serialized_end = 367 + _globals["_MESSAGERESPONSE"]._serialized_start = 369 + _globals["_MESSAGERESPONSE"]._serialized_end = 453 + _globals["_LOADCUSTOMXMLREQUEST"]._serialized_start = 455 + _globals["_LOADCUSTOMXMLREQUEST"]._serialized_end = 498 + _globals["_LOADCUSTOMXMLRESPONSE"]._serialized_start = 500 + _globals["_LOADCUSTOMXMLRESPONSE"]._serialized_end = 622 + _globals["_MAVLINKMESSAGE"]._serialized_start = 625 + _globals["_MAVLINKMESSAGE"]._serialized_end = 780 + _globals["_MAVLINKDIRECTSERVERRESULT"]._serialized_start = 783 + _globals["_MAVLINKDIRECTSERVERRESULT"]._serialized_end = 1108 + _globals["_MAVLINKDIRECTSERVERRESULT_RESULT"]._serialized_start = 917 + _globals["_MAVLINKDIRECTSERVERRESULT_RESULT"]._serialized_end = 1108 + _globals["_MAVLINKDIRECTSERVERSERVICE"]._serialized_start = 1111 + _globals["_MAVLINKDIRECTSERVERSERVICE"]._serialized_end = 1546 +# @@protoc_insertion_point(module_scope) diff --git a/mavsdk/mavlink_direct_server_pb2_grpc.py b/mavsdk/mavlink_direct_server_pb2_grpc.py new file mode 100644 index 00000000..52daa8b4 --- /dev/null +++ b/mavsdk/mavlink_direct_server_pb2_grpc.py @@ -0,0 +1,239 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" + +import grpc +import warnings + +from . import ( + mavlink_direct_server_pb2 as mavlink__direct__server_dot_mavlink__direct__server__pb2, +) + +GRPC_GENERATED_VERSION = "1.75.0" +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + + _version_not_supported = first_version_is_lower( + GRPC_VERSION, GRPC_GENERATED_VERSION + ) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f"The grpc package installed is at version {GRPC_VERSION}," + + f" but the generated code in mavlink_direct_server/mavlink_direct_server_pb2_grpc.py depends on" + + f" grpcio>={GRPC_GENERATED_VERSION}." + + f" Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}" + + f" or downgrade your generated code using grpcio-tools<={GRPC_VERSION}." + ) + + +class MavlinkDirectServerServiceStub(object): + """Enable direct MAVLink communication using libmav from a server component. + + Unlike MavlinkDirect, this does not require a discovered system: it sends from + the local server component, which makes it suitable for broadcasting messages + (e.g. as an autopilot or custom component) without a connected counterpart. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.SendMessage = channel.unary_unary( + "/mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService/SendMessage", + request_serializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.SendMessageRequest.SerializeToString, + response_deserializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.SendMessageResponse.FromString, + _registered_method=True, + ) + self.SubscribeMessage = channel.unary_stream( + "/mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService/SubscribeMessage", + request_serializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.SubscribeMessageRequest.SerializeToString, + response_deserializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.MessageResponse.FromString, + _registered_method=True, + ) + self.LoadCustomXml = channel.unary_unary( + "/mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService/LoadCustomXml", + request_serializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.LoadCustomXmlRequest.SerializeToString, + response_deserializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.LoadCustomXmlResponse.FromString, + _registered_method=True, + ) + + +class MavlinkDirectServerServiceServicer(object): + """Enable direct MAVLink communication using libmav from a server component. + + Unlike MavlinkDirect, this does not require a discovered system: it sends from + the local server component, which makes it suitable for broadcasting messages + (e.g. as an autopilot or custom component) without a connected counterpart. + """ + + def SendMessage(self, request, context): + """ + Send a MAVLink message directly. + + This allows sending any MAVLink message with full control over the message content. + Leave target_system_id and target_component_id at 0 to broadcast. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeMessage(self, request, context): + """ + Subscribe to incoming MAVLink messages. + + This provides direct access to incoming MAVLink messages. Use an empty string + in message_name to subscribe to all messages, or specify a message name + (e.g., "HEARTBEAT") to filter for specific message types. Unlike the + MavlinkDirect (client) plugin, this is not scoped to a single system: it + receives matching messages from all systems. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def LoadCustomXml(self, request, context): + """ + Load custom MAVLink message definitions from XML. + + This allows loading custom MAVLink message definitions at runtime, + extending the available message types beyond the built-in definitions. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + +def add_MavlinkDirectServerServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + "SendMessage": grpc.unary_unary_rpc_method_handler( + servicer.SendMessage, + request_deserializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.SendMessageRequest.FromString, + response_serializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.SendMessageResponse.SerializeToString, + ), + "SubscribeMessage": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeMessage, + request_deserializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.SubscribeMessageRequest.FromString, + response_serializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.MessageResponse.SerializeToString, + ), + "LoadCustomXml": grpc.unary_unary_rpc_method_handler( + servicer.LoadCustomXml, + request_deserializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.LoadCustomXmlRequest.FromString, + response_serializer=mavlink__direct__server_dot_mavlink__direct__server__pb2.LoadCustomXmlResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + "mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService", + rpc_method_handlers, + ) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers( + "mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService", + rpc_method_handlers, + ) + + +# This class is part of an EXPERIMENTAL API. +class MavlinkDirectServerService(object): + """Enable direct MAVLink communication using libmav from a server component. + + Unlike MavlinkDirect, this does not require a discovered system: it sends from + the local server component, which makes it suitable for broadcasting messages + (e.g. as an autopilot or custom component) without a connected counterpart. + """ + + @staticmethod + def SendMessage( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService/SendMessage", + mavlink__direct__server_dot_mavlink__direct__server__pb2.SendMessageRequest.SerializeToString, + mavlink__direct__server_dot_mavlink__direct__server__pb2.SendMessageResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def SubscribeMessage( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService/SubscribeMessage", + mavlink__direct__server_dot_mavlink__direct__server__pb2.SubscribeMessageRequest.SerializeToString, + mavlink__direct__server_dot_mavlink__direct__server__pb2.MessageResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + + @staticmethod + def LoadCustomXml( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/mavsdk.rpc.mavlink_direct_server.MavlinkDirectServerService/LoadCustomXml", + mavlink__direct__server_dot_mavlink__direct__server__pb2.LoadCustomXmlRequest.SerializeToString, + mavlink__direct__server_dot_mavlink__direct__server__pb2.LoadCustomXmlResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) diff --git a/mavsdk/mission.py b/mavsdk/mission.py index e173482e..43597254 100644 --- a/mavsdk/mission.py +++ b/mavsdk/mission.py @@ -1028,7 +1028,7 @@ async def pause_mission(self): Pause the mission. Pausing the mission puts the vehicle into - [HOLD mode](https://docs.px4.io/en/flight_modes/hold.html). + [HOLD mode](https://docs.px4.io/main/en/flight_modes_mc/hold.html). A multicopter should just hover at the spot while a fixedwing vehicle should loiter around the location where it paused. diff --git a/mavsdk/mission_pb2_grpc.py b/mavsdk/mission_pb2_grpc.py index 30874c1f..8f0ee7dc 100644 --- a/mavsdk/mission_pb2_grpc.py +++ b/mavsdk/mission_pb2_grpc.py @@ -202,7 +202,7 @@ def PauseMission(self, request, context): Pause the mission. Pausing the mission puts the vehicle into - [HOLD mode](https://docs.px4.io/en/flight_modes/hold.html). + [HOLD mode](https://docs.px4.io/main/en/flight_modes_mc/hold.html). A multicopter should just hover at the spot while a fixedwing vehicle should loiter around the location where it paused. """ diff --git a/mavsdk/mission_raw.py b/mavsdk/mission_raw.py index 8dde40d4..9b34ac45 100644 --- a/mavsdk/mission_raw.py +++ b/mavsdk/mission_raw.py @@ -6,58 +6,6 @@ from enum import Enum -class MissionProgress: - """ - Mission progress type. - - Parameters - ---------- - current : int32_t - Current mission item index (0-based), if equal to total, the mission is finished - - total : int32_t - Total number of mission items - - """ - - def __init__(self, current, total): - """Initializes the MissionProgress object""" - self.current = current - self.total = total - - def __eq__(self, to_compare): - """Checks if two MissionProgress are the same""" - try: - # Try to compare - this likely fails when it is compared to a non - # MissionProgress object - return (self.current == to_compare.current) and ( - self.total == to_compare.total - ) - - except AttributeError: - return False - - def __str__(self): - """MissionProgress in string representation""" - struct_repr = ", ".join( - ["current: " + str(self.current), "total: " + str(self.total)] - ) - - return f"MissionProgress: [{struct_repr}]" - - @staticmethod - def translate_from_rpc(rpcMissionProgress): - """Translates a gRPC struct to the SDK equivalent""" - return MissionProgress(rpcMissionProgress.current, rpcMissionProgress.total) - - def translate_to_rpc(self, rpcMissionProgress): - """Translates this SDK object into its gRPC equivalent""" - - rpcMissionProgress.current = self.current - - rpcMissionProgress.total = self.total - - class MissionItem: """ Mission item exactly identical to MAVLink MISSION_ITEM_INT. @@ -231,6 +179,111 @@ def translate_to_rpc(self, rpcMissionItem): rpcMissionItem.mission_type = self.mission_type +class MissionPlan: + """ + Mission plan type + + Parameters + ---------- + mission_items : [MissionItem] + The mission items + + """ + + def __init__(self, mission_items): + """Initializes the MissionPlan object""" + self.mission_items = mission_items + + def __eq__(self, to_compare): + """Checks if two MissionPlan are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # MissionPlan object + return self.mission_items == to_compare.mission_items + + except AttributeError: + return False + + def __str__(self): + """MissionPlan in string representation""" + struct_repr = ", ".join(["mission_items: " + str(self.mission_items)]) + + return f"MissionPlan: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcMissionPlan): + """Translates a gRPC struct to the SDK equivalent""" + return MissionPlan( + [ + MissionItem.translate_from_rpc(elem) + for elem in rpcMissionPlan.mission_items + ] + ) + + def translate_to_rpc(self, rpcMissionPlan): + """Translates this SDK object into its gRPC equivalent""" + + rpc_elems_list = [] + for elem in self.mission_items: + rpc_elem = mission_raw_pb2.MissionItem() + elem.translate_to_rpc(rpc_elem) + rpc_elems_list.append(rpc_elem) + + rpcMissionPlan.mission_items.extend(rpc_elems_list) + + +class MissionProgress: + """ + Mission progress type. + + Parameters + ---------- + current : int32_t + Current mission item index (0-based), if equal to total, the mission is finished + + total : int32_t + Total number of mission items + + """ + + def __init__(self, current, total): + """Initializes the MissionProgress object""" + self.current = current + self.total = total + + def __eq__(self, to_compare): + """Checks if two MissionProgress are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # MissionProgress object + return (self.current == to_compare.current) and ( + self.total == to_compare.total + ) + + except AttributeError: + return False + + def __str__(self): + """MissionProgress in string representation""" + struct_repr = ", ".join( + ["current: " + str(self.current), "total: " + str(self.total)] + ) + + return f"MissionProgress: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcMissionProgress): + """Translates a gRPC struct to the SDK equivalent""" + return MissionProgress(rpcMissionProgress.current, rpcMissionProgress.total) + + def translate_to_rpc(self, rpcMissionProgress): + """Translates this SDK object into its gRPC equivalent""" + + rpcMissionProgress.current = self.current + + rpcMissionProgress.total = self.total + + class MissionImportData: """ Mission import data @@ -409,6 +462,9 @@ class Result(Enum): FAILED_TO_PARSE_MISSION_PLANNER_PLAN Failed to parse the Mission Planner plan + NEXT + Intermediate message showing progress + """ UNKNOWN = 0 @@ -432,6 +488,7 @@ class Result(Enum): INT_MESSAGES_NOT_SUPPORTED = 18 FAILED_TO_OPEN_MISSION_PLANNER_PLAN = 19 FAILED_TO_PARSE_MISSION_PLANNER_PLAN = 20 + NEXT = 21 def translate_to_rpc(self): if self == MissionRawResult.Result.UNKNOWN: @@ -480,6 +537,8 @@ def translate_to_rpc(self): return mission_raw_pb2.MissionRawResult.RESULT_FAILED_TO_OPEN_MISSION_PLANNER_PLAN if self == MissionRawResult.Result.FAILED_TO_PARSE_MISSION_PLANNER_PLAN: return mission_raw_pb2.MissionRawResult.RESULT_FAILED_TO_PARSE_MISSION_PLANNER_PLAN + if self == MissionRawResult.Result.NEXT: + return mission_raw_pb2.MissionRawResult.RESULT_NEXT @staticmethod def translate_from_rpc(rpc_enum_value): @@ -562,6 +621,8 @@ def translate_from_rpc(rpc_enum_value): == mission_raw_pb2.MissionRawResult.RESULT_FAILED_TO_PARSE_MISSION_PLANNER_PLAN ): return MissionRawResult.Result.FAILED_TO_PARSE_MISSION_PLANNER_PLAN + if rpc_enum_value == mission_raw_pb2.MissionRawResult.RESULT_NEXT: + return MissionRawResult.Result.NEXT def __str__(self): return self.name @@ -607,6 +668,48 @@ def translate_to_rpc(self, rpcMissionRawResult): rpcMissionRawResult.result_str = self.result_str +class ProgressData: + """ + Progress data coming from mission upload. + + Parameters + ---------- + progress : float + Progress (0..1.0) + + """ + + def __init__(self, progress): + """Initializes the ProgressData object""" + self.progress = progress + + def __eq__(self, to_compare): + """Checks if two ProgressData are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # ProgressData object + return self.progress == to_compare.progress + + except AttributeError: + return False + + def __str__(self): + """ProgressData in string representation""" + struct_repr = ", ".join(["progress: " + str(self.progress)]) + + return f"ProgressData: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcProgressData): + """Translates a gRPC struct to the SDK equivalent""" + return ProgressData(rpcProgressData.progress) + + def translate_to_rpc(self, rpcProgressData): + """Translates this SDK object into its gRPC equivalent""" + + rpcProgressData.progress = self.progress + + class MissionRawError(Exception): """Raised when a MissionRawResult is a fail code""" @@ -672,6 +775,57 @@ async def upload_mission(self, mission_items): if result.result != MissionRawResult.Result.SUCCESS: raise MissionRawError(result, "upload_mission()", mission_items) + async def upload_mission_with_progress(self, mission_plan): + """ + Upload a list of raw mission items and report upload progress. + + Parameters + ---------- + mission_plan : MissionPlan + The mission plan + + Yields + ------- + progress_data : ProgressData + The progress data + + Raises + ------ + MissionRawError + If the request fails. The error contains the reason for the failure. + """ + + request = mission_raw_pb2.SubscribeUploadMissionWithProgressRequest() + + mission_plan.translate_to_rpc(request.mission_plan) + + upload_mission_with_progress_stream = ( + self._stub.SubscribeUploadMissionWithProgress(request) + ) + + try: + async for response in upload_mission_with_progress_stream: + result = self._extract_result(response) + + success_codes = [MissionRawResult.Result.SUCCESS] + if "NEXT" in [ + return_code.name for return_code in MissionRawResult.Result + ]: + success_codes.append(MissionRawResult.Result.NEXT) + + if result.result not in success_codes: + raise MissionRawError( + result, "upload_mission_with_progress()", mission_plan + ) + + if result.result == MissionRawResult.Result.SUCCESS: + upload_mission_with_progress_stream.cancel() + return + + yield ProgressData.translate_from_rpc(response.progress_data) + finally: + upload_mission_with_progress_stream.cancel() + async def upload_geofence(self, mission_items): """ Upload a list of geofence items to the system. @@ -876,7 +1030,7 @@ async def pause_mission(self): Pause the mission. Pausing the mission puts the vehicle into - [HOLD mode](https://docs.px4.io/en/flight_modes/hold.html). + [HOLD mode](https://docs.px4.io/main/en/flight_modes_mc/hold.html). A multicopter should just hover at the spot while a fixedwing vehicle should loiter around the location where it paused. diff --git a/mavsdk/mission_raw_pb2.py b/mavsdk/mission_raw_pb2.py index b9d819d7..05a9dd98 100644 --- a/mavsdk/mission_raw_pb2.py +++ b/mavsdk/mission_raw_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x1dmission_raw/mission_raw.proto\x12\x16mavsdk.rpc.mission_raw\x1a\x14mavsdk_options.proto"R\n\x14UploadMissionRequest\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"]\n\x15UploadMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"S\n\x15UploadGeofenceRequest\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"^\n\x16UploadGeofenceResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"V\n\x18UploadRallyPointsRequest\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"a\n\x19UploadRallyPointsResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x1c\n\x1a\x43\x61ncelMissionUploadRequest"c\n\x1b\x43\x61ncelMissionUploadResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x18\n\x16\x44ownloadMissionRequest"\x9b\x01\n\x17\x44ownloadMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12:\n\rmission_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\x19\n\x17\x44ownloadGeofenceRequest"\x9d\x01\n\x18\x44ownloadGeofenceResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12;\n\x0egeofence_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\x1c\n\x1a\x44ownloadRallypointsRequest"\xa2\x01\n\x1b\x44ownloadRallypointsResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12=\n\x10rallypoint_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\x1e\n\x1c\x43\x61ncelMissionDownloadRequest"e\n\x1d\x43\x61ncelMissionDownloadResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x15\n\x13StartMissionRequest"\\\n\x14StartMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x15\n\x13PauseMissionRequest"\\\n\x14PauseMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x15\n\x13\x43learMissionRequest"\\\n\x14\x43learMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"-\n\x1cSetCurrentMissionItemRequest\x12\r\n\x05index\x18\x01 \x01(\x05"e\n\x1dSetCurrentMissionItemResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"!\n\x1fSubscribeMissionProgressRequest"\\\n\x17MissionProgressResponse\x12\x41\n\x10mission_progress\x18\x01 \x01(\x0b\x32\'.mavsdk.rpc.mission_raw.MissionProgress" \n\x1eSubscribeMissionChangedRequest"1\n\x16MissionChangedResponse\x12\x17\n\x0fmission_changed\x18\x01 \x01(\x08";\n"ImportQgroundcontrolMissionRequest\x12\x15\n\rqgc_plan_path\x18\x01 \x01(\t"\xb3\x01\n#ImportQgroundcontrolMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"@\n,ImportQgroundcontrolMissionFromStringRequest\x12\x10\n\x08qgc_plan\x18\x01 \x01(\t"\xbd\x01\n-ImportQgroundcontrolMissionFromStringResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"B\n"ImportMissionPlannerMissionRequest\x12\x1c\n\x14mission_planner_path\x18\x01 \x01(\t"\xb3\x01\n#ImportMissionPlannerMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"O\n,ImportMissionPlannerMissionFromStringRequest\x12\x1f\n\x17mission_planner_mission\x18\x01 \x01(\t"\xbd\x01\n-ImportMissionPlannerMissionFromStringResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"\x1a\n\x18IsMissionFinishedRequest"v\n\x19IsMissionFinishedResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x13\n\x0bis_finished\x18\x02 \x01(\x08"1\n\x0fMissionProgress\x12\x0f\n\x07\x63urrent\x18\x01 \x01(\x05\x12\r\n\x05total\x18\x02 \x01(\x05"\xd8\x01\n\x0bMissionItem\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\r\n\x05\x66rame\x18\x02 \x01(\r\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x12\x14\n\x0c\x61utocontinue\x18\x05 \x01(\r\x12\x0e\n\x06param1\x18\x06 \x01(\x02\x12\x0e\n\x06param2\x18\x07 \x01(\x02\x12\x0e\n\x06param3\x18\x08 \x01(\x02\x12\x0e\n\x06param4\x18\t \x01(\x02\x12\t\n\x01x\x18\n \x01(\x05\x12\t\n\x01y\x18\x0b \x01(\x05\x12\t\n\x01z\x18\x0c \x01(\x02\x12\x14\n\x0cmission_type\x18\r \x01(\r"\xc6\x01\n\x11MissionImportData\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem\x12;\n\x0egeofence_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem\x12\x38\n\x0brally_items\x18\x03 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\xdf\x05\n\x10MissionRawResult\x12?\n\x06result\x18\x01 \x01(\x0e\x32/.mavsdk.rpc.mission_raw.MissionRawResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xf5\x04\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x10\n\x0cRESULT_ERROR\x10\x02\x12!\n\x1dRESULT_TOO_MANY_MISSION_ITEMS\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x12\n\x0eRESULT_TIMEOUT\x10\x05\x12\x1b\n\x17RESULT_INVALID_ARGUMENT\x10\x06\x12\x16\n\x12RESULT_UNSUPPORTED\x10\x07\x12\x1f\n\x1bRESULT_NO_MISSION_AVAILABLE\x10\x08\x12\x1d\n\x19RESULT_TRANSFER_CANCELLED\x10\t\x12"\n\x1eRESULT_FAILED_TO_OPEN_QGC_PLAN\x10\n\x12#\n\x1fRESULT_FAILED_TO_PARSE_QGC_PLAN\x10\x0b\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x0c\x12\x11\n\rRESULT_DENIED\x10\r\x12&\n"RESULT_MISSION_TYPE_NOT_CONSISTENT\x10\x0e\x12\x1b\n\x17RESULT_INVALID_SEQUENCE\x10\x0f\x12\x1a\n\x16RESULT_CURRENT_INVALID\x10\x10\x12\x19\n\x15RESULT_PROTOCOL_ERROR\x10\x11\x12%\n!RESULT_INT_MESSAGES_NOT_SUPPORTED\x10\x12\x12.\n*RESULT_FAILED_TO_OPEN_MISSION_PLANNER_PLAN\x10\x13\x12/\n+RESULT_FAILED_TO_PARSE_MISSION_PLANNER_PLAN\x10\x14\x32\x97\x14\n\x11MissionRawService\x12n\n\rUploadMission\x12,.mavsdk.rpc.mission_raw.UploadMissionRequest\x1a-.mavsdk.rpc.mission_raw.UploadMissionResponse"\x00\x12q\n\x0eUploadGeofence\x12-.mavsdk.rpc.mission_raw.UploadGeofenceRequest\x1a..mavsdk.rpc.mission_raw.UploadGeofenceResponse"\x00\x12z\n\x11UploadRallyPoints\x12\x30.mavsdk.rpc.mission_raw.UploadRallyPointsRequest\x1a\x31.mavsdk.rpc.mission_raw.UploadRallyPointsResponse"\x00\x12\x84\x01\n\x13\x43\x61ncelMissionUpload\x12\x32.mavsdk.rpc.mission_raw.CancelMissionUploadRequest\x1a\x33.mavsdk.rpc.mission_raw.CancelMissionUploadResponse"\x04\x80\xb5\x18\x01\x12t\n\x0f\x44ownloadMission\x12..mavsdk.rpc.mission_raw.DownloadMissionRequest\x1a/.mavsdk.rpc.mission_raw.DownloadMissionResponse"\x00\x12w\n\x10\x44ownloadGeofence\x12/.mavsdk.rpc.mission_raw.DownloadGeofenceRequest\x1a\x30.mavsdk.rpc.mission_raw.DownloadGeofenceResponse"\x00\x12\x80\x01\n\x13\x44ownloadRallypoints\x12\x32.mavsdk.rpc.mission_raw.DownloadRallypointsRequest\x1a\x33.mavsdk.rpc.mission_raw.DownloadRallypointsResponse"\x00\x12\x8a\x01\n\x15\x43\x61ncelMissionDownload\x12\x34.mavsdk.rpc.mission_raw.CancelMissionDownloadRequest\x1a\x35.mavsdk.rpc.mission_raw.CancelMissionDownloadResponse"\x04\x80\xb5\x18\x01\x12k\n\x0cStartMission\x12+.mavsdk.rpc.mission_raw.StartMissionRequest\x1a,.mavsdk.rpc.mission_raw.StartMissionResponse"\x00\x12k\n\x0cPauseMission\x12+.mavsdk.rpc.mission_raw.PauseMissionRequest\x1a,.mavsdk.rpc.mission_raw.PauseMissionResponse"\x00\x12k\n\x0c\x43learMission\x12+.mavsdk.rpc.mission_raw.ClearMissionRequest\x1a,.mavsdk.rpc.mission_raw.ClearMissionResponse"\x00\x12\x86\x01\n\x15SetCurrentMissionItem\x12\x34.mavsdk.rpc.mission_raw.SetCurrentMissionItemRequest\x1a\x35.mavsdk.rpc.mission_raw.SetCurrentMissionItemResponse"\x00\x12\x88\x01\n\x18SubscribeMissionProgress\x12\x37.mavsdk.rpc.mission_raw.SubscribeMissionProgressRequest\x1a/.mavsdk.rpc.mission_raw.MissionProgressResponse"\x00\x30\x01\x12\x89\x01\n\x17SubscribeMissionChanged\x12\x36.mavsdk.rpc.mission_raw.SubscribeMissionChangedRequest\x1a..mavsdk.rpc.mission_raw.MissionChangedResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9c\x01\n\x1bImportQgroundcontrolMission\x12:.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest\x1a;.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse"\x04\x80\xb5\x18\x01\x12\xba\x01\n%ImportQgroundcontrolMissionFromString\x12\x44.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionFromStringRequest\x1a\x45.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionFromStringResponse"\x04\x80\xb5\x18\x01\x12\x9c\x01\n\x1bImportMissionPlannerMission\x12:.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionRequest\x1a;.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionResponse"\x04\x80\xb5\x18\x01\x12\xba\x01\n%ImportMissionPlannerMissionFromString\x12\x44.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionFromStringRequest\x1a\x45.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionFromStringResponse"\x04\x80\xb5\x18\x01\x12~\n\x11IsMissionFinished\x12\x30.mavsdk.rpc.mission_raw.IsMissionFinishedRequest\x1a\x31.mavsdk.rpc.mission_raw.IsMissionFinishedResponse"\x04\x80\xb5\x18\x01\x42(\n\x15io.mavsdk.mission_rawB\x0fMissionRawProtob\x06proto3' + b'\n\x1dmission_raw/mission_raw.proto\x12\x16mavsdk.rpc.mission_raw\x1a\x14mavsdk_options.proto"R\n\x14UploadMissionRequest\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"]\n\x15UploadMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"f\n)SubscribeUploadMissionWithProgressRequest\x12\x39\n\x0cmission_plan\x18\x01 \x01(\x0b\x32#.mavsdk.rpc.mission_raw.MissionPlan"\xa6\x01\n!UploadMissionWithProgressResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12;\n\rprogress_data\x18\x02 \x01(\x0b\x32$.mavsdk.rpc.mission_raw.ProgressData"S\n\x15UploadGeofenceRequest\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"^\n\x16UploadGeofenceResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"V\n\x18UploadRallyPointsRequest\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"a\n\x19UploadRallyPointsResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x1c\n\x1a\x43\x61ncelMissionUploadRequest"c\n\x1b\x43\x61ncelMissionUploadResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x18\n\x16\x44ownloadMissionRequest"\x9b\x01\n\x17\x44ownloadMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12:\n\rmission_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\x19\n\x17\x44ownloadGeofenceRequest"\x9d\x01\n\x18\x44ownloadGeofenceResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12;\n\x0egeofence_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\x1c\n\x1a\x44ownloadRallypointsRequest"\xa2\x01\n\x1b\x44ownloadRallypointsResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12=\n\x10rallypoint_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\x1e\n\x1c\x43\x61ncelMissionDownloadRequest"e\n\x1d\x43\x61ncelMissionDownloadResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x15\n\x13StartMissionRequest"\\\n\x14StartMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x15\n\x13PauseMissionRequest"\\\n\x14PauseMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"\x15\n\x13\x43learMissionRequest"\\\n\x14\x43learMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"-\n\x1cSetCurrentMissionItemRequest\x12\r\n\x05index\x18\x01 \x01(\x05"e\n\x1dSetCurrentMissionItemResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult"!\n\x1fSubscribeMissionProgressRequest"\\\n\x17MissionProgressResponse\x12\x41\n\x10mission_progress\x18\x01 \x01(\x0b\x32\'.mavsdk.rpc.mission_raw.MissionProgress" \n\x1eSubscribeMissionChangedRequest"1\n\x16MissionChangedResponse\x12\x17\n\x0fmission_changed\x18\x01 \x01(\x08";\n"ImportQgroundcontrolMissionRequest\x12\x15\n\rqgc_plan_path\x18\x01 \x01(\t"\xb3\x01\n#ImportQgroundcontrolMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"@\n,ImportQgroundcontrolMissionFromStringRequest\x12\x10\n\x08qgc_plan\x18\x01 \x01(\t"\xbd\x01\n-ImportQgroundcontrolMissionFromStringResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"B\n"ImportMissionPlannerMissionRequest\x12\x1c\n\x14mission_planner_path\x18\x01 \x01(\t"\xb3\x01\n#ImportMissionPlannerMissionResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"O\n,ImportMissionPlannerMissionFromStringRequest\x12\x1f\n\x17mission_planner_mission\x18\x01 \x01(\t"\xbd\x01\n-ImportMissionPlannerMissionFromStringResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x46\n\x13mission_import_data\x18\x02 \x01(\x0b\x32).mavsdk.rpc.mission_raw.MissionImportData"\x1a\n\x18IsMissionFinishedRequest"v\n\x19IsMissionFinishedResponse\x12\x44\n\x12mission_raw_result\x18\x01 \x01(\x0b\x32(.mavsdk.rpc.mission_raw.MissionRawResult\x12\x13\n\x0bis_finished\x18\x02 \x01(\x08"\xd8\x01\n\x0bMissionItem\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\r\n\x05\x66rame\x18\x02 \x01(\r\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x12\x14\n\x0c\x61utocontinue\x18\x05 \x01(\r\x12\x0e\n\x06param1\x18\x06 \x01(\x02\x12\x0e\n\x06param2\x18\x07 \x01(\x02\x12\x0e\n\x06param3\x18\x08 \x01(\x02\x12\x0e\n\x06param4\x18\t \x01(\x02\x12\t\n\x01x\x18\n \x01(\x05\x12\t\n\x01y\x18\x0b \x01(\x05\x12\t\n\x01z\x18\x0c \x01(\x02\x12\x14\n\x0cmission_type\x18\r \x01(\r"I\n\x0bMissionPlan\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"1\n\x0fMissionProgress\x12\x0f\n\x07\x63urrent\x18\x01 \x01(\x05\x12\r\n\x05total\x18\x02 \x01(\x05"\xc6\x01\n\x11MissionImportData\x12:\n\rmission_items\x18\x01 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem\x12;\n\x0egeofence_items\x18\x02 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem\x12\x38\n\x0brally_items\x18\x03 \x03(\x0b\x32#.mavsdk.rpc.mission_raw.MissionItem"\xf0\x05\n\x10MissionRawResult\x12?\n\x06result\x18\x01 \x01(\x0e\x32/.mavsdk.rpc.mission_raw.MissionRawResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\x86\x05\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x10\n\x0cRESULT_ERROR\x10\x02\x12!\n\x1dRESULT_TOO_MANY_MISSION_ITEMS\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x12\n\x0eRESULT_TIMEOUT\x10\x05\x12\x1b\n\x17RESULT_INVALID_ARGUMENT\x10\x06\x12\x16\n\x12RESULT_UNSUPPORTED\x10\x07\x12\x1f\n\x1bRESULT_NO_MISSION_AVAILABLE\x10\x08\x12\x1d\n\x19RESULT_TRANSFER_CANCELLED\x10\t\x12"\n\x1eRESULT_FAILED_TO_OPEN_QGC_PLAN\x10\n\x12#\n\x1fRESULT_FAILED_TO_PARSE_QGC_PLAN\x10\x0b\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x0c\x12\x11\n\rRESULT_DENIED\x10\r\x12&\n"RESULT_MISSION_TYPE_NOT_CONSISTENT\x10\x0e\x12\x1b\n\x17RESULT_INVALID_SEQUENCE\x10\x0f\x12\x1a\n\x16RESULT_CURRENT_INVALID\x10\x10\x12\x19\n\x15RESULT_PROTOCOL_ERROR\x10\x11\x12%\n!RESULT_INT_MESSAGES_NOT_SUPPORTED\x10\x12\x12.\n*RESULT_FAILED_TO_OPEN_MISSION_PLANNER_PLAN\x10\x13\x12/\n+RESULT_FAILED_TO_PARSE_MISSION_PLANNER_PLAN\x10\x14\x12\x0f\n\x0bRESULT_NEXT\x10\x15")\n\x0cProgressData\x12\x19\n\x08progress\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN2\xc8\x15\n\x11MissionRawService\x12n\n\rUploadMission\x12,.mavsdk.rpc.mission_raw.UploadMissionRequest\x1a-.mavsdk.rpc.mission_raw.UploadMissionResponse"\x00\x12\xae\x01\n"SubscribeUploadMissionWithProgress\x12\x41.mavsdk.rpc.mission_raw.SubscribeUploadMissionWithProgressRequest\x1a\x39.mavsdk.rpc.mission_raw.UploadMissionWithProgressResponse"\x08\x80\xb5\x18\x00\x88\xb5\x18\x01\x30\x01\x12q\n\x0eUploadGeofence\x12-.mavsdk.rpc.mission_raw.UploadGeofenceRequest\x1a..mavsdk.rpc.mission_raw.UploadGeofenceResponse"\x00\x12z\n\x11UploadRallyPoints\x12\x30.mavsdk.rpc.mission_raw.UploadRallyPointsRequest\x1a\x31.mavsdk.rpc.mission_raw.UploadRallyPointsResponse"\x00\x12\x84\x01\n\x13\x43\x61ncelMissionUpload\x12\x32.mavsdk.rpc.mission_raw.CancelMissionUploadRequest\x1a\x33.mavsdk.rpc.mission_raw.CancelMissionUploadResponse"\x04\x80\xb5\x18\x01\x12t\n\x0f\x44ownloadMission\x12..mavsdk.rpc.mission_raw.DownloadMissionRequest\x1a/.mavsdk.rpc.mission_raw.DownloadMissionResponse"\x00\x12w\n\x10\x44ownloadGeofence\x12/.mavsdk.rpc.mission_raw.DownloadGeofenceRequest\x1a\x30.mavsdk.rpc.mission_raw.DownloadGeofenceResponse"\x00\x12\x80\x01\n\x13\x44ownloadRallypoints\x12\x32.mavsdk.rpc.mission_raw.DownloadRallypointsRequest\x1a\x33.mavsdk.rpc.mission_raw.DownloadRallypointsResponse"\x00\x12\x8a\x01\n\x15\x43\x61ncelMissionDownload\x12\x34.mavsdk.rpc.mission_raw.CancelMissionDownloadRequest\x1a\x35.mavsdk.rpc.mission_raw.CancelMissionDownloadResponse"\x04\x80\xb5\x18\x01\x12k\n\x0cStartMission\x12+.mavsdk.rpc.mission_raw.StartMissionRequest\x1a,.mavsdk.rpc.mission_raw.StartMissionResponse"\x00\x12k\n\x0cPauseMission\x12+.mavsdk.rpc.mission_raw.PauseMissionRequest\x1a,.mavsdk.rpc.mission_raw.PauseMissionResponse"\x00\x12k\n\x0c\x43learMission\x12+.mavsdk.rpc.mission_raw.ClearMissionRequest\x1a,.mavsdk.rpc.mission_raw.ClearMissionResponse"\x00\x12\x86\x01\n\x15SetCurrentMissionItem\x12\x34.mavsdk.rpc.mission_raw.SetCurrentMissionItemRequest\x1a\x35.mavsdk.rpc.mission_raw.SetCurrentMissionItemResponse"\x00\x12\x88\x01\n\x18SubscribeMissionProgress\x12\x37.mavsdk.rpc.mission_raw.SubscribeMissionProgressRequest\x1a/.mavsdk.rpc.mission_raw.MissionProgressResponse"\x00\x30\x01\x12\x89\x01\n\x17SubscribeMissionChanged\x12\x36.mavsdk.rpc.mission_raw.SubscribeMissionChangedRequest\x1a..mavsdk.rpc.mission_raw.MissionChangedResponse"\x04\x80\xb5\x18\x00\x30\x01\x12\x9c\x01\n\x1bImportQgroundcontrolMission\x12:.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest\x1a;.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse"\x04\x80\xb5\x18\x01\x12\xba\x01\n%ImportQgroundcontrolMissionFromString\x12\x44.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionFromStringRequest\x1a\x45.mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionFromStringResponse"\x04\x80\xb5\x18\x01\x12\x9c\x01\n\x1bImportMissionPlannerMission\x12:.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionRequest\x1a;.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionResponse"\x04\x80\xb5\x18\x01\x12\xba\x01\n%ImportMissionPlannerMissionFromString\x12\x44.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionFromStringRequest\x1a\x45.mavsdk.rpc.mission_raw.ImportMissionPlannerMissionFromStringResponse"\x04\x80\xb5\x18\x01\x12~\n\x11IsMissionFinished\x12\x30.mavsdk.rpc.mission_raw.IsMissionFinishedRequest\x1a\x31.mavsdk.rpc.mission_raw.IsMissionFinishedResponse"\x04\x80\xb5\x18\x01\x42(\n\x15io.mavsdk.mission_rawB\x0fMissionRawProtob\x06proto3' ) _globals = globals() @@ -36,6 +36,16 @@ _globals[ "DESCRIPTOR" ]._serialized_options = b"\n\025io.mavsdk.mission_rawB\017MissionRawProto" + _globals["_PROGRESSDATA"].fields_by_name["progress"]._loaded_options = None + _globals["_PROGRESSDATA"].fields_by_name[ + "progress" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_MISSIONRAWSERVICE"].methods_by_name[ + "SubscribeUploadMissionWithProgress" + ]._loaded_options = None + _globals["_MISSIONRAWSERVICE"].methods_by_name[ + "SubscribeUploadMissionWithProgress" + ]._serialized_options = b"\200\265\030\000\210\265\030\001" _globals["_MISSIONRAWSERVICE"].methods_by_name[ "CancelMissionUpload" ]._loaded_options = None @@ -88,88 +98,96 @@ _globals["_UPLOADMISSIONREQUEST"]._serialized_end = 161 _globals["_UPLOADMISSIONRESPONSE"]._serialized_start = 163 _globals["_UPLOADMISSIONRESPONSE"]._serialized_end = 256 - _globals["_UPLOADGEOFENCEREQUEST"]._serialized_start = 258 - _globals["_UPLOADGEOFENCEREQUEST"]._serialized_end = 341 - _globals["_UPLOADGEOFENCERESPONSE"]._serialized_start = 343 - _globals["_UPLOADGEOFENCERESPONSE"]._serialized_end = 437 - _globals["_UPLOADRALLYPOINTSREQUEST"]._serialized_start = 439 - _globals["_UPLOADRALLYPOINTSREQUEST"]._serialized_end = 525 - _globals["_UPLOADRALLYPOINTSRESPONSE"]._serialized_start = 527 - _globals["_UPLOADRALLYPOINTSRESPONSE"]._serialized_end = 624 - _globals["_CANCELMISSIONUPLOADREQUEST"]._serialized_start = 626 - _globals["_CANCELMISSIONUPLOADREQUEST"]._serialized_end = 654 - _globals["_CANCELMISSIONUPLOADRESPONSE"]._serialized_start = 656 - _globals["_CANCELMISSIONUPLOADRESPONSE"]._serialized_end = 755 - _globals["_DOWNLOADMISSIONREQUEST"]._serialized_start = 757 - _globals["_DOWNLOADMISSIONREQUEST"]._serialized_end = 781 - _globals["_DOWNLOADMISSIONRESPONSE"]._serialized_start = 784 - _globals["_DOWNLOADMISSIONRESPONSE"]._serialized_end = 939 - _globals["_DOWNLOADGEOFENCEREQUEST"]._serialized_start = 941 - _globals["_DOWNLOADGEOFENCEREQUEST"]._serialized_end = 966 - _globals["_DOWNLOADGEOFENCERESPONSE"]._serialized_start = 969 - _globals["_DOWNLOADGEOFENCERESPONSE"]._serialized_end = 1126 - _globals["_DOWNLOADRALLYPOINTSREQUEST"]._serialized_start = 1128 - _globals["_DOWNLOADRALLYPOINTSREQUEST"]._serialized_end = 1156 - _globals["_DOWNLOADRALLYPOINTSRESPONSE"]._serialized_start = 1159 - _globals["_DOWNLOADRALLYPOINTSRESPONSE"]._serialized_end = 1321 - _globals["_CANCELMISSIONDOWNLOADREQUEST"]._serialized_start = 1323 - _globals["_CANCELMISSIONDOWNLOADREQUEST"]._serialized_end = 1353 - _globals["_CANCELMISSIONDOWNLOADRESPONSE"]._serialized_start = 1355 - _globals["_CANCELMISSIONDOWNLOADRESPONSE"]._serialized_end = 1456 - _globals["_STARTMISSIONREQUEST"]._serialized_start = 1458 - _globals["_STARTMISSIONREQUEST"]._serialized_end = 1479 - _globals["_STARTMISSIONRESPONSE"]._serialized_start = 1481 - _globals["_STARTMISSIONRESPONSE"]._serialized_end = 1573 - _globals["_PAUSEMISSIONREQUEST"]._serialized_start = 1575 - _globals["_PAUSEMISSIONREQUEST"]._serialized_end = 1596 - _globals["_PAUSEMISSIONRESPONSE"]._serialized_start = 1598 - _globals["_PAUSEMISSIONRESPONSE"]._serialized_end = 1690 - _globals["_CLEARMISSIONREQUEST"]._serialized_start = 1692 - _globals["_CLEARMISSIONREQUEST"]._serialized_end = 1713 - _globals["_CLEARMISSIONRESPONSE"]._serialized_start = 1715 - _globals["_CLEARMISSIONRESPONSE"]._serialized_end = 1807 - _globals["_SETCURRENTMISSIONITEMREQUEST"]._serialized_start = 1809 - _globals["_SETCURRENTMISSIONITEMREQUEST"]._serialized_end = 1854 - _globals["_SETCURRENTMISSIONITEMRESPONSE"]._serialized_start = 1856 - _globals["_SETCURRENTMISSIONITEMRESPONSE"]._serialized_end = 1957 - _globals["_SUBSCRIBEMISSIONPROGRESSREQUEST"]._serialized_start = 1959 - _globals["_SUBSCRIBEMISSIONPROGRESSREQUEST"]._serialized_end = 1992 - _globals["_MISSIONPROGRESSRESPONSE"]._serialized_start = 1994 - _globals["_MISSIONPROGRESSRESPONSE"]._serialized_end = 2086 - _globals["_SUBSCRIBEMISSIONCHANGEDREQUEST"]._serialized_start = 2088 - _globals["_SUBSCRIBEMISSIONCHANGEDREQUEST"]._serialized_end = 2120 - _globals["_MISSIONCHANGEDRESPONSE"]._serialized_start = 2122 - _globals["_MISSIONCHANGEDRESPONSE"]._serialized_end = 2171 - _globals["_IMPORTQGROUNDCONTROLMISSIONREQUEST"]._serialized_start = 2173 - _globals["_IMPORTQGROUNDCONTROLMISSIONREQUEST"]._serialized_end = 2232 - _globals["_IMPORTQGROUNDCONTROLMISSIONRESPONSE"]._serialized_start = 2235 - _globals["_IMPORTQGROUNDCONTROLMISSIONRESPONSE"]._serialized_end = 2414 - _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGREQUEST"]._serialized_start = 2416 - _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGREQUEST"]._serialized_end = 2480 - _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGRESPONSE"]._serialized_start = 2483 - _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGRESPONSE"]._serialized_end = 2672 - _globals["_IMPORTMISSIONPLANNERMISSIONREQUEST"]._serialized_start = 2674 - _globals["_IMPORTMISSIONPLANNERMISSIONREQUEST"]._serialized_end = 2740 - _globals["_IMPORTMISSIONPLANNERMISSIONRESPONSE"]._serialized_start = 2743 - _globals["_IMPORTMISSIONPLANNERMISSIONRESPONSE"]._serialized_end = 2922 - _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGREQUEST"]._serialized_start = 2924 - _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGREQUEST"]._serialized_end = 3003 - _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGRESPONSE"]._serialized_start = 3006 - _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGRESPONSE"]._serialized_end = 3195 - _globals["_ISMISSIONFINISHEDREQUEST"]._serialized_start = 3197 - _globals["_ISMISSIONFINISHEDREQUEST"]._serialized_end = 3223 - _globals["_ISMISSIONFINISHEDRESPONSE"]._serialized_start = 3225 - _globals["_ISMISSIONFINISHEDRESPONSE"]._serialized_end = 3343 - _globals["_MISSIONPROGRESS"]._serialized_start = 3345 - _globals["_MISSIONPROGRESS"]._serialized_end = 3394 - _globals["_MISSIONITEM"]._serialized_start = 3397 - _globals["_MISSIONITEM"]._serialized_end = 3613 - _globals["_MISSIONIMPORTDATA"]._serialized_start = 3616 - _globals["_MISSIONIMPORTDATA"]._serialized_end = 3814 - _globals["_MISSIONRAWRESULT"]._serialized_start = 3817 - _globals["_MISSIONRAWRESULT"]._serialized_end = 4552 - _globals["_MISSIONRAWRESULT_RESULT"]._serialized_start = 3923 - _globals["_MISSIONRAWRESULT_RESULT"]._serialized_end = 4552 - _globals["_MISSIONRAWSERVICE"]._serialized_start = 4555 - _globals["_MISSIONRAWSERVICE"]._serialized_end = 7138 + _globals["_SUBSCRIBEUPLOADMISSIONWITHPROGRESSREQUEST"]._serialized_start = 258 + _globals["_SUBSCRIBEUPLOADMISSIONWITHPROGRESSREQUEST"]._serialized_end = 360 + _globals["_UPLOADMISSIONWITHPROGRESSRESPONSE"]._serialized_start = 363 + _globals["_UPLOADMISSIONWITHPROGRESSRESPONSE"]._serialized_end = 529 + _globals["_UPLOADGEOFENCEREQUEST"]._serialized_start = 531 + _globals["_UPLOADGEOFENCEREQUEST"]._serialized_end = 614 + _globals["_UPLOADGEOFENCERESPONSE"]._serialized_start = 616 + _globals["_UPLOADGEOFENCERESPONSE"]._serialized_end = 710 + _globals["_UPLOADRALLYPOINTSREQUEST"]._serialized_start = 712 + _globals["_UPLOADRALLYPOINTSREQUEST"]._serialized_end = 798 + _globals["_UPLOADRALLYPOINTSRESPONSE"]._serialized_start = 800 + _globals["_UPLOADRALLYPOINTSRESPONSE"]._serialized_end = 897 + _globals["_CANCELMISSIONUPLOADREQUEST"]._serialized_start = 899 + _globals["_CANCELMISSIONUPLOADREQUEST"]._serialized_end = 927 + _globals["_CANCELMISSIONUPLOADRESPONSE"]._serialized_start = 929 + _globals["_CANCELMISSIONUPLOADRESPONSE"]._serialized_end = 1028 + _globals["_DOWNLOADMISSIONREQUEST"]._serialized_start = 1030 + _globals["_DOWNLOADMISSIONREQUEST"]._serialized_end = 1054 + _globals["_DOWNLOADMISSIONRESPONSE"]._serialized_start = 1057 + _globals["_DOWNLOADMISSIONRESPONSE"]._serialized_end = 1212 + _globals["_DOWNLOADGEOFENCEREQUEST"]._serialized_start = 1214 + _globals["_DOWNLOADGEOFENCEREQUEST"]._serialized_end = 1239 + _globals["_DOWNLOADGEOFENCERESPONSE"]._serialized_start = 1242 + _globals["_DOWNLOADGEOFENCERESPONSE"]._serialized_end = 1399 + _globals["_DOWNLOADRALLYPOINTSREQUEST"]._serialized_start = 1401 + _globals["_DOWNLOADRALLYPOINTSREQUEST"]._serialized_end = 1429 + _globals["_DOWNLOADRALLYPOINTSRESPONSE"]._serialized_start = 1432 + _globals["_DOWNLOADRALLYPOINTSRESPONSE"]._serialized_end = 1594 + _globals["_CANCELMISSIONDOWNLOADREQUEST"]._serialized_start = 1596 + _globals["_CANCELMISSIONDOWNLOADREQUEST"]._serialized_end = 1626 + _globals["_CANCELMISSIONDOWNLOADRESPONSE"]._serialized_start = 1628 + _globals["_CANCELMISSIONDOWNLOADRESPONSE"]._serialized_end = 1729 + _globals["_STARTMISSIONREQUEST"]._serialized_start = 1731 + _globals["_STARTMISSIONREQUEST"]._serialized_end = 1752 + _globals["_STARTMISSIONRESPONSE"]._serialized_start = 1754 + _globals["_STARTMISSIONRESPONSE"]._serialized_end = 1846 + _globals["_PAUSEMISSIONREQUEST"]._serialized_start = 1848 + _globals["_PAUSEMISSIONREQUEST"]._serialized_end = 1869 + _globals["_PAUSEMISSIONRESPONSE"]._serialized_start = 1871 + _globals["_PAUSEMISSIONRESPONSE"]._serialized_end = 1963 + _globals["_CLEARMISSIONREQUEST"]._serialized_start = 1965 + _globals["_CLEARMISSIONREQUEST"]._serialized_end = 1986 + _globals["_CLEARMISSIONRESPONSE"]._serialized_start = 1988 + _globals["_CLEARMISSIONRESPONSE"]._serialized_end = 2080 + _globals["_SETCURRENTMISSIONITEMREQUEST"]._serialized_start = 2082 + _globals["_SETCURRENTMISSIONITEMREQUEST"]._serialized_end = 2127 + _globals["_SETCURRENTMISSIONITEMRESPONSE"]._serialized_start = 2129 + _globals["_SETCURRENTMISSIONITEMRESPONSE"]._serialized_end = 2230 + _globals["_SUBSCRIBEMISSIONPROGRESSREQUEST"]._serialized_start = 2232 + _globals["_SUBSCRIBEMISSIONPROGRESSREQUEST"]._serialized_end = 2265 + _globals["_MISSIONPROGRESSRESPONSE"]._serialized_start = 2267 + _globals["_MISSIONPROGRESSRESPONSE"]._serialized_end = 2359 + _globals["_SUBSCRIBEMISSIONCHANGEDREQUEST"]._serialized_start = 2361 + _globals["_SUBSCRIBEMISSIONCHANGEDREQUEST"]._serialized_end = 2393 + _globals["_MISSIONCHANGEDRESPONSE"]._serialized_start = 2395 + _globals["_MISSIONCHANGEDRESPONSE"]._serialized_end = 2444 + _globals["_IMPORTQGROUNDCONTROLMISSIONREQUEST"]._serialized_start = 2446 + _globals["_IMPORTQGROUNDCONTROLMISSIONREQUEST"]._serialized_end = 2505 + _globals["_IMPORTQGROUNDCONTROLMISSIONRESPONSE"]._serialized_start = 2508 + _globals["_IMPORTQGROUNDCONTROLMISSIONRESPONSE"]._serialized_end = 2687 + _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGREQUEST"]._serialized_start = 2689 + _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGREQUEST"]._serialized_end = 2753 + _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGRESPONSE"]._serialized_start = 2756 + _globals["_IMPORTQGROUNDCONTROLMISSIONFROMSTRINGRESPONSE"]._serialized_end = 2945 + _globals["_IMPORTMISSIONPLANNERMISSIONREQUEST"]._serialized_start = 2947 + _globals["_IMPORTMISSIONPLANNERMISSIONREQUEST"]._serialized_end = 3013 + _globals["_IMPORTMISSIONPLANNERMISSIONRESPONSE"]._serialized_start = 3016 + _globals["_IMPORTMISSIONPLANNERMISSIONRESPONSE"]._serialized_end = 3195 + _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGREQUEST"]._serialized_start = 3197 + _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGREQUEST"]._serialized_end = 3276 + _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGRESPONSE"]._serialized_start = 3279 + _globals["_IMPORTMISSIONPLANNERMISSIONFROMSTRINGRESPONSE"]._serialized_end = 3468 + _globals["_ISMISSIONFINISHEDREQUEST"]._serialized_start = 3470 + _globals["_ISMISSIONFINISHEDREQUEST"]._serialized_end = 3496 + _globals["_ISMISSIONFINISHEDRESPONSE"]._serialized_start = 3498 + _globals["_ISMISSIONFINISHEDRESPONSE"]._serialized_end = 3616 + _globals["_MISSIONITEM"]._serialized_start = 3619 + _globals["_MISSIONITEM"]._serialized_end = 3835 + _globals["_MISSIONPLAN"]._serialized_start = 3837 + _globals["_MISSIONPLAN"]._serialized_end = 3910 + _globals["_MISSIONPROGRESS"]._serialized_start = 3912 + _globals["_MISSIONPROGRESS"]._serialized_end = 3961 + _globals["_MISSIONIMPORTDATA"]._serialized_start = 3964 + _globals["_MISSIONIMPORTDATA"]._serialized_end = 4162 + _globals["_MISSIONRAWRESULT"]._serialized_start = 4165 + _globals["_MISSIONRAWRESULT"]._serialized_end = 4917 + _globals["_MISSIONRAWRESULT_RESULT"]._serialized_start = 4271 + _globals["_MISSIONRAWRESULT_RESULT"]._serialized_end = 4917 + _globals["_PROGRESSDATA"]._serialized_start = 4919 + _globals["_PROGRESSDATA"]._serialized_end = 4960 + _globals["_MISSIONRAWSERVICE"]._serialized_start = 4963 + _globals["_MISSIONRAWSERVICE"]._serialized_end = 7723 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/mission_raw_pb2_grpc.py b/mavsdk/mission_raw_pb2_grpc.py index 33e30a7e..0460c8ce 100644 --- a/mavsdk/mission_raw_pb2_grpc.py +++ b/mavsdk/mission_raw_pb2_grpc.py @@ -44,6 +44,12 @@ def __init__(self, channel): response_deserializer=mission__raw_dot_mission__raw__pb2.UploadMissionResponse.FromString, _registered_method=True, ) + self.SubscribeUploadMissionWithProgress = channel.unary_stream( + "/mavsdk.rpc.mission_raw.MissionRawService/SubscribeUploadMissionWithProgress", + request_serializer=mission__raw_dot_mission__raw__pb2.SubscribeUploadMissionWithProgressRequest.SerializeToString, + response_deserializer=mission__raw_dot_mission__raw__pb2.UploadMissionWithProgressResponse.FromString, + _registered_method=True, + ) self.UploadGeofence = channel.unary_unary( "/mavsdk.rpc.mission_raw.MissionRawService/UploadGeofence", request_serializer=mission__raw_dot_mission__raw__pb2.UploadGeofenceRequest.SerializeToString, @@ -168,6 +174,14 @@ def UploadMission(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def SubscribeUploadMissionWithProgress(self, request, context): + """ + Upload a list of raw mission items and report upload progress. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def UploadGeofence(self, request, context): """ Upload a list of geofence items to the system. @@ -239,7 +253,7 @@ def PauseMission(self, request, context): Pause the mission. Pausing the mission puts the vehicle into - [HOLD mode](https://docs.px4.io/en/flight_modes/hold.html). + [HOLD mode](https://docs.px4.io/main/en/flight_modes_mc/hold.html). A multicopter should just hover at the spot while a fixedwing vehicle should loiter around the location where it paused. """ @@ -357,6 +371,11 @@ def add_MissionRawServiceServicer_to_server(servicer, server): request_deserializer=mission__raw_dot_mission__raw__pb2.UploadMissionRequest.FromString, response_serializer=mission__raw_dot_mission__raw__pb2.UploadMissionResponse.SerializeToString, ), + "SubscribeUploadMissionWithProgress": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeUploadMissionWithProgress, + request_deserializer=mission__raw_dot_mission__raw__pb2.SubscribeUploadMissionWithProgressRequest.FromString, + response_serializer=mission__raw_dot_mission__raw__pb2.UploadMissionWithProgressResponse.SerializeToString, + ), "UploadGeofence": grpc.unary_unary_rpc_method_handler( servicer.UploadGeofence, request_deserializer=mission__raw_dot_mission__raw__pb2.UploadGeofenceRequest.FromString, @@ -491,6 +510,36 @@ def UploadMission( _registered_method=True, ) + @staticmethod + def SubscribeUploadMissionWithProgress( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/mavsdk.rpc.mission_raw.MissionRawService/SubscribeUploadMissionWithProgress", + mission__raw_dot_mission__raw__pb2.SubscribeUploadMissionWithProgressRequest.SerializeToString, + mission__raw_dot_mission__raw__pb2.UploadMissionWithProgressResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True, + ) + @staticmethod def UploadGeofence( request, diff --git a/mavsdk/offboard.py b/mavsdk/offboard.py index 56cfd059..2230e1f6 100644 --- a/mavsdk/offboard.py +++ b/mavsdk/offboard.py @@ -143,7 +143,7 @@ class ActuatorControl: MAVLink messages are actually sent. In PX4 v1.9.0 Only first four Control Groups are supported - (https://github.com/PX4/Firmware/blob/v1.9.0/src/modules/mavlink/mavlink_receiver.cpp#L980). + (https://github.com/PX4/PX4-Autopilot/blob/v1.9.0/src/modules/mavlink/mavlink_receiver.cpp#L980). Parameters ---------- @@ -904,7 +904,7 @@ async def stop(self): """ Stop offboard control. - The vehicle will be put into Hold mode: https://docs.px4.io/en/flight_modes/hold.html + The vehicle will be put into Hold mode: https://docs.px4.io/main/en/flight_modes_mc/hold.html Raises ------ diff --git a/mavsdk/offboard_pb2_grpc.py b/mavsdk/offboard_pb2_grpc.py index 5d230e65..320bf8b9 100644 --- a/mavsdk/offboard_pb2_grpc.py +++ b/mavsdk/offboard_pb2_grpc.py @@ -151,7 +151,7 @@ def Stop(self, request, context): """ Stop offboard control. - The vehicle will be put into Hold mode: https://docs.px4.io/en/flight_modes/hold.html + The vehicle will be put into Hold mode: https://docs.px4.io/main/en/flight_modes_mc/hold.html """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") diff --git a/mavsdk/param_server.py b/mavsdk/param_server.py index da759e70..0197bf9a 100644 --- a/mavsdk/param_server.py +++ b/mavsdk/param_server.py @@ -287,7 +287,7 @@ class Result(Enum): Parameter name too long (> 128) PARAM_PROVIDED_TOO_LATE - All parameters have to be provided upfront + New params have to be provided before the param set is locked down """ @@ -490,9 +490,10 @@ async def provide_param_int(self, name, value): If the type is wrong, the result will be `WRONG_TYPE`. - Note that all params need to be provided upfront. Once a client has - requested a param list, the indices are locked and no more params - can be added. + Note that new params have to be provided upfront. Once a client has + requested the param list, the indices are locked and no new params can + be added. Providing an already-existing param still updates its value + and announces the change to connected clients. Parameters ---------- @@ -524,10 +525,6 @@ async def retrieve_param_float(self, name): If the type is wrong, the result will be `WRONG_TYPE`. - Note that all params need to be provided upfront. Once a client has - requested a param list, the indices are locked and no more params - can be added. - Parameters ---------- name : std::string @@ -563,6 +560,11 @@ async def provide_param_float(self, name, value): If the type is wrong, the result will be `WRONG_TYPE`. + Note that new params have to be provided upfront. Once a client has + requested the param list, the indices are locked and no new params can + be added. Providing an already-existing param still updates its value + and announces the change to connected clients. + Parameters ---------- name : std::string @@ -593,10 +595,6 @@ async def retrieve_param_custom(self, name): If the type is wrong, the result will be `WRONG_TYPE`. - Note that all params need to be provided upfront. Once a client has - requested a param list, the indices are locked and no more params - can be added. - Parameters ---------- name : std::string @@ -632,6 +630,11 @@ async def provide_param_custom(self, name, value): If the type is wrong, the result will be `WRONG_TYPE`. + Note that new params have to be provided upfront. Once a client has + requested the param list, the indices are locked and no new params can + be added. Providing an already-existing param still updates its value + and announces the change to connected clients. + Parameters ---------- name : std::string diff --git a/mavsdk/param_server_pb2_grpc.py b/mavsdk/param_server_pb2_grpc.py index 64da5dca..4b6c6c9d 100644 --- a/mavsdk/param_server_pb2_grpc.py +++ b/mavsdk/param_server_pb2_grpc.py @@ -137,10 +137,10 @@ def ProvideParamInt(self, request, context): If the type is wrong, the result will be `WRONG_TYPE`. - Note that all params need to be provided upfront. Once a client has - requested a param list, the indices are locked and no more params - can be added. - + Note that new params have to be provided upfront. Once a client has + requested the param list, the indices are locked and no new params can + be added. Providing an already-existing param still updates its value + and announces the change to connected clients. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -151,10 +151,6 @@ def RetrieveParamFloat(self, request, context): Retrieve a float parameter. If the type is wrong, the result will be `WRONG_TYPE`. - - Note that all params need to be provided upfront. Once a client has - requested a param list, the indices are locked and no more params - can be added. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -165,6 +161,11 @@ def ProvideParamFloat(self, request, context): Provide a float parameter. If the type is wrong, the result will be `WRONG_TYPE`. + + Note that new params have to be provided upfront. Once a client has + requested the param list, the indices are locked and no new params can + be added. Providing an already-existing param still updates its value + and announces the change to connected clients. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -175,10 +176,6 @@ def RetrieveParamCustom(self, request, context): Retrieve a custom parameter. If the type is wrong, the result will be `WRONG_TYPE`. - - Note that all params need to be provided upfront. Once a client has - requested a param list, the indices are locked and no more params - can be added. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -189,6 +186,11 @@ def ProvideParamCustom(self, request, context): Provide a custom parameter. If the type is wrong, the result will be `WRONG_TYPE`. + + Note that new params have to be provided upfront. Once a client has + requested the param list, the indices are locked and no new params can + be added. Providing an already-existing param still updates its value + and announces the change to connected clients. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") diff --git a/mavsdk/shell.py b/mavsdk/shell.py index 42e109e1..08d665c5 100644 --- a/mavsdk/shell.py +++ b/mavsdk/shell.py @@ -6,6 +6,195 @@ from enum import Enum +class Device(Enum): + """ + MAVLink SERIAL_CONTROL_DEV values used by the shell plugin. + + Values + ------ + TELEM1 + SERIAL_CONTROL_DEV_TELEM1 + + TELEM2 + SERIAL_CONTROL_DEV_TELEM2 + + GPS1 + SERIAL_CONTROL_DEV_GPS1 + + GPS2 + SERIAL_CONTROL_DEV_GPS2 + + SHELL + SERIAL_CONTROL_DEV_SHELL (default) + + SERIAL0 + SERIAL_CONTROL_SERIAL0 + + SERIAL1 + SERIAL_CONTROL_SERIAL1 + + SERIAL2 + SERIAL_CONTROL_SERIAL2 + + SERIAL3 + SERIAL_CONTROL_SERIAL3 + + SERIAL4 + SERIAL_CONTROL_SERIAL4 + + SERIAL5 + SERIAL_CONTROL_SERIAL5 + + SERIAL6 + SERIAL_CONTROL_SERIAL6 + + SERIAL7 + SERIAL_CONTROL_SERIAL7 + + SERIAL8 + SERIAL_CONTROL_SERIAL8 + + SERIAL9 + SERIAL_CONTROL_SERIAL9 + + """ + + TELEM1 = 0 + TELEM2 = 1 + GPS1 = 2 + GPS2 = 3 + SHELL = 4 + SERIAL0 = 5 + SERIAL1 = 6 + SERIAL2 = 7 + SERIAL3 = 8 + SERIAL4 = 9 + SERIAL5 = 10 + SERIAL6 = 11 + SERIAL7 = 12 + SERIAL8 = 13 + SERIAL9 = 14 + + def translate_to_rpc(self): + if self == Device.TELEM1: + return shell_pb2.DEVICE_TELEM1 + if self == Device.TELEM2: + return shell_pb2.DEVICE_TELEM2 + if self == Device.GPS1: + return shell_pb2.DEVICE_GPS1 + if self == Device.GPS2: + return shell_pb2.DEVICE_GPS2 + if self == Device.SHELL: + return shell_pb2.DEVICE_SHELL + if self == Device.SERIAL0: + return shell_pb2.DEVICE_SERIAL0 + if self == Device.SERIAL1: + return shell_pb2.DEVICE_SERIAL1 + if self == Device.SERIAL2: + return shell_pb2.DEVICE_SERIAL2 + if self == Device.SERIAL3: + return shell_pb2.DEVICE_SERIAL3 + if self == Device.SERIAL4: + return shell_pb2.DEVICE_SERIAL4 + if self == Device.SERIAL5: + return shell_pb2.DEVICE_SERIAL5 + if self == Device.SERIAL6: + return shell_pb2.DEVICE_SERIAL6 + if self == Device.SERIAL7: + return shell_pb2.DEVICE_SERIAL7 + if self == Device.SERIAL8: + return shell_pb2.DEVICE_SERIAL8 + if self == Device.SERIAL9: + return shell_pb2.DEVICE_SERIAL9 + + @staticmethod + def translate_from_rpc(rpc_enum_value): + """Parses a gRPC response""" + if rpc_enum_value == shell_pb2.DEVICE_TELEM1: + return Device.TELEM1 + if rpc_enum_value == shell_pb2.DEVICE_TELEM2: + return Device.TELEM2 + if rpc_enum_value == shell_pb2.DEVICE_GPS1: + return Device.GPS1 + if rpc_enum_value == shell_pb2.DEVICE_GPS2: + return Device.GPS2 + if rpc_enum_value == shell_pb2.DEVICE_SHELL: + return Device.SHELL + if rpc_enum_value == shell_pb2.DEVICE_SERIAL0: + return Device.SERIAL0 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL1: + return Device.SERIAL1 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL2: + return Device.SERIAL2 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL3: + return Device.SERIAL3 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL4: + return Device.SERIAL4 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL5: + return Device.SERIAL5 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL6: + return Device.SERIAL6 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL7: + return Device.SERIAL7 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL8: + return Device.SERIAL8 + if rpc_enum_value == shell_pb2.DEVICE_SERIAL9: + return Device.SERIAL9 + + def __str__(self): + return self.name + + +class Receive: + """ + Received shell data and source device. + + Parameters + ---------- + data : std::string + Received data. + + device : Device + SERIAL_CONTROL device the data came from. + + """ + + def __init__(self, data, device): + """Initializes the Receive object""" + self.data = data + self.device = device + + def __eq__(self, to_compare): + """Checks if two Receive are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # Receive object + return (self.data == to_compare.data) and (self.device == to_compare.device) + + except AttributeError: + return False + + def __str__(self): + """Receive in string representation""" + struct_repr = ", ".join( + ["data: " + str(self.data), "device: " + str(self.device)] + ) + + return f"Receive: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcReceive): + """Translates a gRPC struct to the SDK equivalent""" + return Receive(rpcReceive.data, Device.translate_from_rpc(rpcReceive.device)) + + def translate_to_rpc(self, rpcReceive): + """Translates this SDK object into its gRPC equivalent""" + + rpcReceive.data = self.data + + rpcReceive.device = self.device.translate_to_rpc() + + class ShellResult: """ Result type. @@ -44,6 +233,9 @@ class Result(Enum): BUSY Shell busy (transfer in progress) + INVALID_ARGUMENT + Invalid device / argument + """ UNKNOWN = 0 @@ -52,6 +244,7 @@ class Result(Enum): CONNECTION_ERROR = 3 NO_RESPONSE = 4 BUSY = 5 + INVALID_ARGUMENT = 6 def translate_to_rpc(self): if self == ShellResult.Result.UNKNOWN: @@ -66,6 +259,8 @@ def translate_to_rpc(self): return shell_pb2.ShellResult.RESULT_NO_RESPONSE if self == ShellResult.Result.BUSY: return shell_pb2.ShellResult.RESULT_BUSY + if self == ShellResult.Result.INVALID_ARGUMENT: + return shell_pb2.ShellResult.RESULT_INVALID_ARGUMENT @staticmethod def translate_from_rpc(rpc_enum_value): @@ -82,6 +277,8 @@ def translate_from_rpc(rpc_enum_value): return ShellResult.Result.NO_RESPONSE if rpc_enum_value == shell_pb2.ShellResult.RESULT_BUSY: return ShellResult.Result.BUSY + if rpc_enum_value == shell_pb2.ShellResult.RESULT_INVALID_ARGUMENT: + return ShellResult.Result.INVALID_ARGUMENT def __str__(self): return self.name @@ -143,6 +340,11 @@ class Shell(AsyncBase): """ Allow to communicate with the vehicle's system shell. + Under the hood this uses MAVLink SERIAL_CONTROL. The default device is + SERIAL_CONTROL_DEV_SHELL. Callers can pass another SERIAL_CONTROL_DEV on + Send (and observe the device on Receive) when the same framing is used for + non-nsh serial bridges (for example TELEM2). + Generated by dcsdkgen - MAVSDK Shell API """ @@ -157,7 +359,7 @@ def _extract_result(self, response): """Returns the response status and description""" return ShellResult.translate_from_rpc(response.shell_result) - async def send(self, command): + async def send(self, command, device): """ Send a command line. @@ -166,6 +368,8 @@ async def send(self, command): command : std::string The command line to send + device : Device + Raises ------ ShellError @@ -174,12 +378,15 @@ async def send(self, command): request = shell_pb2.SendRequest() request.command = command + + request.device = device.translate_to_rpc() + response = await self._stub.Send(request) result = self._extract_result(response) if result.result != ShellResult.Result.SUCCESS: - raise ShellError(result, "send()", command) + raise ShellError(result, "send()", command, device) async def receive(self): """ @@ -189,7 +396,7 @@ async def receive(self): Yields ------- - data : std::string + receive : Receive Received data. @@ -200,6 +407,6 @@ async def receive(self): try: async for response in receive_stream: - yield response.data + yield Receive.translate_from_rpc(response.receive) finally: receive_stream.cancel() diff --git a/mavsdk/shell_pb2.py b/mavsdk/shell_pb2.py index 6a4df0f5..ae575834 100644 --- a/mavsdk/shell_pb2.py +++ b/mavsdk/shell_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x11shell/shell.proto\x12\x10mavsdk.rpc.shell\x1a\x14mavsdk_options.proto"\x1e\n\x0bSendRequest\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t"C\n\x0cSendResponse\x12\x33\n\x0cshell_result\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.shell.ShellResult"\x19\n\x17SubscribeReceiveRequest"\x1f\n\x0fReceiveResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t"\xe6\x01\n\x0bShellResult\x12\x34\n\x06result\x18\x01 \x01(\x0e\x32$.mavsdk.rpc.shell.ShellResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\x8c\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x02\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x03\x12\x16\n\x12RESULT_NO_RESPONSE\x10\x04\x12\x0f\n\x0bRESULT_BUSY\x10\x05\x32\xc5\x01\n\x0cShellService\x12K\n\x04Send\x12\x1d.mavsdk.rpc.shell.SendRequest\x1a\x1e.mavsdk.rpc.shell.SendResponse"\x04\x80\xb5\x18\x01\x12h\n\x10SubscribeReceive\x12).mavsdk.rpc.shell.SubscribeReceiveRequest\x1a!.mavsdk.rpc.shell.ReceiveResponse"\x04\x80\xb5\x18\x00\x30\x01\x42\x1d\n\x0fio.mavsdk.shellB\nShellProtob\x06proto3' + b'\n\x11shell/shell.proto\x12\x10mavsdk.rpc.shell\x1a\x14mavsdk_options.proto"H\n\x0bSendRequest\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0e\x32\x18.mavsdk.rpc.shell.Device"C\n\x0cSendResponse\x12\x33\n\x0cshell_result\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.shell.ShellResult"\x19\n\x17SubscribeReceiveRequest"A\n\x07Receive\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0e\x32\x18.mavsdk.rpc.shell.Device"=\n\x0fReceiveResponse\x12*\n\x07receive\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.shell.Receive"\x83\x02\n\x0bShellResult\x12\x34\n\x06result\x18\x01 \x01(\x0e\x32$.mavsdk.rpc.shell.ShellResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xa9\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x02\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x03\x12\x16\n\x12RESULT_NO_RESPONSE\x10\x04\x12\x0f\n\x0bRESULT_BUSY\x10\x05\x12\x1b\n\x17RESULT_INVALID_ARGUMENT\x10\x06*\xaa\x02\n\x06\x44\x65vice\x12\x11\n\rDEVICE_TELEM1\x10\x00\x12\x11\n\rDEVICE_TELEM2\x10\x01\x12\x0f\n\x0b\x44\x45VICE_GPS1\x10\x02\x12\x0f\n\x0b\x44\x45VICE_GPS2\x10\x03\x12\x10\n\x0c\x44\x45VICE_SHELL\x10\n\x12\x12\n\x0e\x44\x45VICE_SERIAL0\x10\x64\x12\x12\n\x0e\x44\x45VICE_SERIAL1\x10\x65\x12\x12\n\x0e\x44\x45VICE_SERIAL2\x10\x66\x12\x12\n\x0e\x44\x45VICE_SERIAL3\x10g\x12\x12\n\x0e\x44\x45VICE_SERIAL4\x10h\x12\x12\n\x0e\x44\x45VICE_SERIAL5\x10i\x12\x12\n\x0e\x44\x45VICE_SERIAL6\x10j\x12\x12\n\x0e\x44\x45VICE_SERIAL7\x10k\x12\x12\n\x0e\x44\x45VICE_SERIAL8\x10l\x12\x12\n\x0e\x44\x45VICE_SERIAL9\x10m2\xc5\x01\n\x0cShellService\x12K\n\x04Send\x12\x1d.mavsdk.rpc.shell.SendRequest\x1a\x1e.mavsdk.rpc.shell.SendResponse"\x04\x80\xb5\x18\x01\x12h\n\x10SubscribeReceive\x12).mavsdk.rpc.shell.SubscribeReceiveRequest\x1a!.mavsdk.rpc.shell.ReceiveResponse"\x04\x80\xb5\x18\x00\x30\x01\x42\x1d\n\x0fio.mavsdk.shellB\nShellProtob\x06proto3' ) _globals = globals() @@ -40,18 +40,22 @@ _globals["_SHELLSERVICE"].methods_by_name[ "SubscribeReceive" ]._serialized_options = b"\200\265\030\000" + _globals["_DEVICE"]._serialized_start = 624 + _globals["_DEVICE"]._serialized_end = 922 _globals["_SENDREQUEST"]._serialized_start = 61 - _globals["_SENDREQUEST"]._serialized_end = 91 - _globals["_SENDRESPONSE"]._serialized_start = 93 - _globals["_SENDRESPONSE"]._serialized_end = 160 - _globals["_SUBSCRIBERECEIVEREQUEST"]._serialized_start = 162 - _globals["_SUBSCRIBERECEIVEREQUEST"]._serialized_end = 187 - _globals["_RECEIVERESPONSE"]._serialized_start = 189 - _globals["_RECEIVERESPONSE"]._serialized_end = 220 - _globals["_SHELLRESULT"]._serialized_start = 223 - _globals["_SHELLRESULT"]._serialized_end = 453 - _globals["_SHELLRESULT_RESULT"]._serialized_start = 313 - _globals["_SHELLRESULT_RESULT"]._serialized_end = 453 - _globals["_SHELLSERVICE"]._serialized_start = 456 - _globals["_SHELLSERVICE"]._serialized_end = 653 + _globals["_SENDREQUEST"]._serialized_end = 133 + _globals["_SENDRESPONSE"]._serialized_start = 135 + _globals["_SENDRESPONSE"]._serialized_end = 202 + _globals["_SUBSCRIBERECEIVEREQUEST"]._serialized_start = 204 + _globals["_SUBSCRIBERECEIVEREQUEST"]._serialized_end = 229 + _globals["_RECEIVE"]._serialized_start = 231 + _globals["_RECEIVE"]._serialized_end = 296 + _globals["_RECEIVERESPONSE"]._serialized_start = 298 + _globals["_RECEIVERESPONSE"]._serialized_end = 359 + _globals["_SHELLRESULT"]._serialized_start = 362 + _globals["_SHELLRESULT"]._serialized_end = 621 + _globals["_SHELLRESULT_RESULT"]._serialized_start = 452 + _globals["_SHELLRESULT_RESULT"]._serialized_end = 621 + _globals["_SHELLSERVICE"]._serialized_start = 925 + _globals["_SHELLSERVICE"]._serialized_end = 1122 # @@protoc_insertion_point(module_scope) diff --git a/mavsdk/shell_pb2_grpc.py b/mavsdk/shell_pb2_grpc.py index a19d72c8..ca3202d6 100644 --- a/mavsdk/shell_pb2_grpc.py +++ b/mavsdk/shell_pb2_grpc.py @@ -32,6 +32,11 @@ class ShellServiceStub(object): """ Allow to communicate with the vehicle's system shell. + + Under the hood this uses MAVLink SERIAL_CONTROL. The default device is + SERIAL_CONTROL_DEV_SHELL. Callers can pass another SERIAL_CONTROL_DEV on + Send (and observe the device on Receive) when the same framing is used for + non-nsh serial bridges (for example TELEM2). """ def __init__(self, channel): @@ -57,6 +62,11 @@ def __init__(self, channel): class ShellServiceServicer(object): """ Allow to communicate with the vehicle's system shell. + + Under the hood this uses MAVLink SERIAL_CONTROL. The default device is + SERIAL_CONTROL_DEV_SHELL. Callers can pass another SERIAL_CONTROL_DEV on + Send (and observe the device on Receive) when the same framing is used for + non-nsh serial bridges (for example TELEM2). """ def Send(self, request, context): @@ -104,6 +114,11 @@ def add_ShellServiceServicer_to_server(servicer, server): class ShellService(object): """ Allow to communicate with the vehicle's system shell. + + Under the hood this uses MAVLink SERIAL_CONTROL. The default device is + SERIAL_CONTROL_DEV_SHELL. Callers can pass another SERIAL_CONTROL_DEV on + Send (and observe the device on Receive) when the same framing is used for + non-nsh serial bridges (for example TELEM2). """ @staticmethod diff --git a/mavsdk/source/plugins/index.rst b/mavsdk/source/plugins/index.rst index f70fe78a..03d87807 100644 --- a/mavsdk/source/plugins/index.rst +++ b/mavsdk/source/plugins/index.rst @@ -42,3 +42,4 @@ Plugins winch events mavlink_direct + mavlink_direct_server diff --git a/mavsdk/source/plugins/mavlink_direct_server.rst b/mavsdk/source/plugins/mavlink_direct_server.rst new file mode 100644 index 00000000..53ae43b7 --- /dev/null +++ b/mavsdk/source/plugins/mavlink_direct_server.rst @@ -0,0 +1,8 @@ +MavlinkDirectServer +==== + +.. automodule:: mavsdk.mavlink_direct_server + :members: + :undoc-members: + :show-inheritance: + :exclude-members: translate_from_rpc, translate_to_rpc \ No newline at end of file diff --git a/mavsdk/telemetry.py b/mavsdk/telemetry.py index 1e9f7eb6..b4ab888e 100644 --- a/mavsdk/telemetry.py +++ b/mavsdk/telemetry.py @@ -145,7 +145,7 @@ class FlightMode(Enum): Flight modes. For more information about flight modes, check out - https://docs.px4.io/master/en/config/flight_mode.html. + https://docs.px4.io/main/en/config/flight_mode.html. Values ------ @@ -697,6 +697,172 @@ def translate_to_rpc(self, rpcQuaternion): rpcQuaternion.timestamp_us = self.timestamp_us +class HomePosition: + """ + Home position type. + + Includes the global GPS position, local NED position, surface quaternion, + and approach vector from the MAVLink HOME_POSITION message. + + Parameters + ---------- + timestamp_us : uint64_t + Timestamp (UNIX Epoch or since system boot) in microseconds + + latitude_deg : double + Latitude in degrees (range: -90 to +90) + + longitude_deg : double + Longitude in degrees (range: -180 to +180) + + absolute_altitude_m : float + Altitude AMSL (above mean sea level) in metres + + relative_altitude_m : float + Altitude relative to takeoff altitude in metres + + local_north_m : float + Local North position in NED frame (m) + + local_east_m : float + Local East position in NED frame (m) + + local_down_m : float + Local Down position in NED frame (m, positive down) + + q : Quaternion + Surface quaternion (world-to-surface-normal and heading) + + approach_north_m : float + Local North position of the approach vector end in NED frame (m) + + approach_east_m : float + Local East position of the approach vector end in NED frame (m) + + approach_down_m : float + Local Down position of the approach vector end in NED frame (m) + + """ + + def __init__( + self, + timestamp_us, + latitude_deg, + longitude_deg, + absolute_altitude_m, + relative_altitude_m, + local_north_m, + local_east_m, + local_down_m, + q, + approach_north_m, + approach_east_m, + approach_down_m, + ): + """Initializes the HomePosition object""" + self.timestamp_us = timestamp_us + self.latitude_deg = latitude_deg + self.longitude_deg = longitude_deg + self.absolute_altitude_m = absolute_altitude_m + self.relative_altitude_m = relative_altitude_m + self.local_north_m = local_north_m + self.local_east_m = local_east_m + self.local_down_m = local_down_m + self.q = q + self.approach_north_m = approach_north_m + self.approach_east_m = approach_east_m + self.approach_down_m = approach_down_m + + def __eq__(self, to_compare): + """Checks if two HomePosition are the same""" + try: + # Try to compare - this likely fails when it is compared to a non + # HomePosition object + return ( + (self.timestamp_us == to_compare.timestamp_us) + and (self.latitude_deg == to_compare.latitude_deg) + and (self.longitude_deg == to_compare.longitude_deg) + and (self.absolute_altitude_m == to_compare.absolute_altitude_m) + and (self.relative_altitude_m == to_compare.relative_altitude_m) + and (self.local_north_m == to_compare.local_north_m) + and (self.local_east_m == to_compare.local_east_m) + and (self.local_down_m == to_compare.local_down_m) + and (self.q == to_compare.q) + and (self.approach_north_m == to_compare.approach_north_m) + and (self.approach_east_m == to_compare.approach_east_m) + and (self.approach_down_m == to_compare.approach_down_m) + ) + + except AttributeError: + return False + + def __str__(self): + """HomePosition in string representation""" + struct_repr = ", ".join( + [ + "timestamp_us: " + str(self.timestamp_us), + "latitude_deg: " + str(self.latitude_deg), + "longitude_deg: " + str(self.longitude_deg), + "absolute_altitude_m: " + str(self.absolute_altitude_m), + "relative_altitude_m: " + str(self.relative_altitude_m), + "local_north_m: " + str(self.local_north_m), + "local_east_m: " + str(self.local_east_m), + "local_down_m: " + str(self.local_down_m), + "q: " + str(self.q), + "approach_north_m: " + str(self.approach_north_m), + "approach_east_m: " + str(self.approach_east_m), + "approach_down_m: " + str(self.approach_down_m), + ] + ) + + return f"HomePosition: [{struct_repr}]" + + @staticmethod + def translate_from_rpc(rpcHomePosition): + """Translates a gRPC struct to the SDK equivalent""" + return HomePosition( + rpcHomePosition.timestamp_us, + rpcHomePosition.latitude_deg, + rpcHomePosition.longitude_deg, + rpcHomePosition.absolute_altitude_m, + rpcHomePosition.relative_altitude_m, + rpcHomePosition.local_north_m, + rpcHomePosition.local_east_m, + rpcHomePosition.local_down_m, + Quaternion.translate_from_rpc(rpcHomePosition.q), + rpcHomePosition.approach_north_m, + rpcHomePosition.approach_east_m, + rpcHomePosition.approach_down_m, + ) + + def translate_to_rpc(self, rpcHomePosition): + """Translates this SDK object into its gRPC equivalent""" + + rpcHomePosition.timestamp_us = self.timestamp_us + + rpcHomePosition.latitude_deg = self.latitude_deg + + rpcHomePosition.longitude_deg = self.longitude_deg + + rpcHomePosition.absolute_altitude_m = self.absolute_altitude_m + + rpcHomePosition.relative_altitude_m = self.relative_altitude_m + + rpcHomePosition.local_north_m = self.local_north_m + + rpcHomePosition.local_east_m = self.local_east_m + + rpcHomePosition.local_down_m = self.local_down_m + + self.q.translate_to_rpc(rpcHomePosition.q) + + rpcHomePosition.approach_north_m = self.approach_north_m + + rpcHomePosition.approach_east_m = self.approach_east_m + + rpcHomePosition.approach_down_m = self.approach_down_m + + class EulerAngle: """ Euler angle type. @@ -3294,7 +3460,7 @@ async def home(self): Yields ------- - home : Position + home : HomePosition The next home position @@ -3305,7 +3471,7 @@ async def home(self): try: async for response in home_stream: - yield Position.translate_from_rpc(response.home) + yield HomePosition.translate_from_rpc(response.home) finally: home_stream.cancel() diff --git a/mavsdk/telemetry_pb2.py b/mavsdk/telemetry_pb2.py index 2cbb8203..8f7e6724 100644 --- a/mavsdk/telemetry_pb2.py +++ b/mavsdk/telemetry_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x19telemetry/telemetry.proto\x12\x14mavsdk.rpc.telemetry\x1a\x14mavsdk_options.proto"\x1a\n\x18SubscribePositionRequest"D\n\x10PositionResponse\x12\x30\n\x08position\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Position"\x16\n\x14SubscribeHomeRequest"<\n\x0cHomeResponse\x12,\n\x04home\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Position"\x17\n\x15SubscribeInAirRequest""\n\rInAirResponse\x12\x11\n\tis_in_air\x18\x01 \x01(\x08"\x1d\n\x1bSubscribeLandedStateRequest"N\n\x13LandedStateResponse\x12\x37\n\x0clanded_state\x18\x01 \x01(\x0e\x32!.mavsdk.rpc.telemetry.LandedState"\x17\n\x15SubscribeArmedRequest"!\n\rArmedResponse\x12\x10\n\x08is_armed\x18\x01 \x01(\x08"\x1b\n\x19SubscribeVtolStateRequest"H\n\x11VtolStateResponse\x12\x33\n\nvtol_state\x18\x01 \x01(\x0e\x32\x1f.mavsdk.rpc.telemetry.VtolState"$\n"SubscribeAttitudeQuaternionRequest"[\n\x1a\x41ttitudeQuaternionResponse\x12=\n\x13\x61ttitude_quaternion\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.telemetry.Quaternion"\x1f\n\x1dSubscribeAttitudeEulerRequest"Q\n\x15\x41ttitudeEulerResponse\x12\x38\n\x0e\x61ttitude_euler\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.telemetry.EulerAngle"-\n+SubscribeAttitudeAngularVelocityBodyRequest"x\n#AttitudeAngularVelocityBodyResponse\x12Q\n\x1e\x61ttitude_angular_velocity_body\x18\x01 \x01(\x0b\x32).mavsdk.rpc.telemetry.AngularVelocityBody"\x1d\n\x1bSubscribeVelocityNedRequest"N\n\x13VelocityNedResponse\x12\x37\n\x0cvelocity_ned\x18\x01 \x01(\x0b\x32!.mavsdk.rpc.telemetry.VelocityNed"\x19\n\x17SubscribeGpsInfoRequest"B\n\x0fGpsInfoResponse\x12/\n\x08gps_info\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.telemetry.GpsInfo"\x18\n\x16SubscribeRawGpsRequest"?\n\x0eRawGpsResponse\x12-\n\x07raw_gps\x18\x01 \x01(\x0b\x32\x1c.mavsdk.rpc.telemetry.RawGps"\x19\n\x17SubscribeBatteryRequest"A\n\x0f\x42\x61tteryResponse\x12.\n\x07\x62\x61ttery\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.telemetry.Battery"\x1c\n\x1aSubscribeFlightModeRequest"K\n\x12\x46lightModeResponse\x12\x35\n\x0b\x66light_mode\x18\x01 \x01(\x0e\x32 .mavsdk.rpc.telemetry.FlightMode"\x18\n\x16SubscribeHealthRequest">\n\x0eHealthResponse\x12,\n\x06health\x18\x01 \x01(\x0b\x32\x1c.mavsdk.rpc.telemetry.Health"\x1a\n\x18SubscribeRcStatusRequest"E\n\x10RcStatusResponse\x12\x31\n\trc_status\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.RcStatus"\x1c\n\x1aSubscribeStatusTextRequest"K\n\x12StatusTextResponse\x12\x35\n\x0bstatus_text\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.telemetry.StatusText"\'\n%SubscribeActuatorControlTargetRequest"m\n\x1d\x41\x63tuatorControlTargetResponse\x12L\n\x17\x61\x63tuator_control_target\x18\x01 \x01(\x0b\x32+.mavsdk.rpc.telemetry.ActuatorControlTarget"&\n$SubscribeActuatorOutputStatusRequest"j\n\x1c\x41\x63tuatorOutputStatusResponse\x12J\n\x16\x61\x63tuator_output_status\x18\x01 \x01(\x0b\x32*.mavsdk.rpc.telemetry.ActuatorOutputStatus"\x1a\n\x18SubscribeOdometryRequest"D\n\x10OdometryResponse\x12\x30\n\x08odometry\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Odometry"%\n#SubscribePositionVelocityNedRequest"g\n\x1bPositionVelocityNedResponse\x12H\n\x15position_velocity_ned\x18\x01 \x01(\x0b\x32).mavsdk.rpc.telemetry.PositionVelocityNed"\x1d\n\x1bSubscribeGroundTruthRequest"N\n\x13GroundTruthResponse\x12\x37\n\x0cground_truth\x18\x01 \x01(\x0b\x32!.mavsdk.rpc.telemetry.GroundTruth""\n SubscribeFixedwingMetricsRequest"]\n\x18\x46ixedwingMetricsResponse\x12\x41\n\x11\x66ixedwing_metrics\x18\x01 \x01(\x0b\x32&.mavsdk.rpc.telemetry.FixedwingMetrics"\x15\n\x13SubscribeImuRequest"5\n\x0bImuResponse\x12&\n\x03imu\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.telemetry.Imu"\x1b\n\x19SubscribeScaledImuRequest";\n\x11ScaledImuResponse\x12&\n\x03imu\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.telemetry.Imu"\x18\n\x16SubscribeRawImuRequest"8\n\x0eRawImuResponse\x12&\n\x03imu\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.telemetry.Imu"\x1d\n\x1bSubscribeHealthAllOkRequest"/\n\x13HealthAllOkResponse\x12\x18\n\x10is_health_all_ok\x18\x01 \x01(\x08"\x1f\n\x1dSubscribeUnixEpochTimeRequest"(\n\x15UnixEpochTimeResponse\x12\x0f\n\x07time_us\x18\x01 \x01(\x04" \n\x1eSubscribeDistanceSensorRequest"W\n\x16\x44istanceSensorResponse\x12=\n\x0f\x64istance_sensor\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.telemetry.DistanceSensor" \n\x1eSubscribeScaledPressureRequest"W\n\x16ScaledPressureResponse\x12=\n\x0fscaled_pressure\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.telemetry.ScaledPressure"\x19\n\x17SubscribeHeadingRequest"E\n\x0fHeadingResponse\x12\x32\n\x0bheading_deg\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.telemetry.Heading"\x1a\n\x18SubscribeAltitudeRequest"D\n\x10\x41ltitudeResponse\x12\x30\n\x08\x61ltitude\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Altitude"\x16\n\x14SubscribeWindRequest"8\n\x0cWindResponse\x12(\n\x04wind\x18\x01 \x01(\x0b\x32\x1a.mavsdk.rpc.telemetry.Wind")\n\x16SetRatePositionRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRatePositionResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"%\n\x12SetRateHomeRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"V\n\x13SetRateHomeResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"&\n\x13SetRateInAirRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"W\n\x14SetRateInAirResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult",\n\x19SetRateLandedStateRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"]\n\x1aSetRateLandedStateResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"*\n\x17SetRateVtolStateRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"[\n\x18SetRateVtolStateResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult".\n\x1bSetRateAttitudeEulerRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"_\n\x1cSetRateAttitudeEulerResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"3\n SetRateAttitudeQuaternionRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"d\n!SetRateAttitudeQuaternionResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"<\n)SetRateAttitudeAngularVelocityBodyRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"m\n*SetRateAttitudeAngularVelocityBodyResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult",\n\x19SetRateVelocityNedRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"]\n\x1aSetRateVelocityNedResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"(\n\x15SetRateGpsInfoRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Y\n\x16SetRateGpsInfoResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\'\n\x14SetRateRawGpsRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"X\n\x15SetRateRawGpsResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"(\n\x15SetRateBatteryRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Y\n\x16SetRateBatteryResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult")\n\x16SetRateRcStatusRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRateRcStatusResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"6\n#SetRateActuatorControlTargetRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"g\n$SetRateActuatorControlTargetResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"5\n"SetRateActuatorOutputStatusRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"f\n#SetRateActuatorOutputStatusResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult")\n\x16SetRateOdometryRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRateOdometryResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"4\n!SetRatePositionVelocityNedRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"e\n"SetRatePositionVelocityNedResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult",\n\x19SetRateGroundTruthRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"]\n\x1aSetRateGroundTruthResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"1\n\x1eSetRateFixedwingMetricsRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"b\n\x1fSetRateFixedwingMetricsResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"$\n\x11SetRateImuRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"U\n\x12SetRateImuResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"*\n\x17SetRateScaledImuRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"[\n\x18SetRateScaledImuResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\'\n\x14SetRateRawImuRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"X\n\x15SetRateRawImuResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult".\n\x1bSetRateUnixEpochTimeRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"_\n\x1cSetRateUnixEpochTimeResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"/\n\x1cSetRateDistanceSensorRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"`\n\x1dSetRateDistanceSensorResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\x1b\n\x19GetGpsGlobalOriginRequest"\x9f\x01\n\x1aGetGpsGlobalOriginResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult\x12@\n\x11gps_global_origin\x18\x02 \x01(\x0b\x32%.mavsdk.rpc.telemetry.GpsGlobalOrigin")\n\x16SetRateAltitudeRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRateAltitudeResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\'\n\x14SetRateHealthRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"X\n\x15SetRateHealthResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\x95\x01\n\x08Position\x12\x1d\n\x0clatitude_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13relative_altitude_m\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\'\n\x07Heading\x12\x1c\n\x0bheading_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN"r\n\nQuaternion\x12\x12\n\x01w\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x12\n\x01x\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x12\n\x01y\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x12\n\x01z\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x05 \x01(\x04"s\n\nEulerAngle\x12\x19\n\x08roll_deg\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tpitch_deg\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x18\n\x07yaw_deg\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x04 \x01(\x04"l\n\x13\x41ngularVelocityBody\x12\x1b\n\nroll_rad_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bpitch_rad_s\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tyaw_rad_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"Y\n\x07GpsInfo\x12\x1d\n\x0enum_satellites\x18\x01 \x01(\x05\x42\x05\x82\xb5\x18\x01\x30\x12/\n\x08\x66ix_type\x18\x02 \x01(\x0e\x32\x1d.mavsdk.rpc.telemetry.FixType"\xdf\x02\n\x06RawGps\x12\x14\n\x0ctimestamp_us\x18\x01 \x01(\x04\x12\x14\n\x0clatitude_deg\x18\x02 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x03 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x04 \x01(\x02\x12\x0c\n\x04hdop\x18\x05 \x01(\x02\x12\x0c\n\x04vdop\x18\x06 \x01(\x02\x12\x14\n\x0cvelocity_m_s\x18\x07 \x01(\x02\x12\x0f\n\x07\x63og_deg\x18\x08 \x01(\x02\x12\x1c\n\x14\x61ltitude_ellipsoid_m\x18\t \x01(\x02\x12 \n\x18horizontal_uncertainty_m\x18\n \x01(\x02\x12\x1e\n\x16vertical_uncertainty_m\x18\x0b \x01(\x02\x12 \n\x18velocity_uncertainty_m_s\x18\x0c \x01(\x02\x12\x1f\n\x17heading_uncertainty_deg\x18\r \x01(\x02\x12\x0f\n\x07yaw_deg\x18\x0e \x01(\x02"\xae\x02\n\x07\x42\x61ttery\x12\x11\n\x02id\x18\x01 \x01(\rB\x05\x82\xb5\x18\x01\x30\x12!\n\x10temperature_degc\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tvoltage_v\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12"\n\x11\x63urrent_battery_a\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12%\n\x14\x63\x61pacity_consumed_ah\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12"\n\x11remaining_percent\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12!\n\x10time_remaining_s\x18\x07 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12?\n\x10\x62\x61ttery_function\x18\x08 \x01(\x0e\x32%.mavsdk.rpc.telemetry.BatteryFunction"\xb9\x02\n\x06Health\x12.\n\x1bis_gyrometer_calibration_ok\x18\x01 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x32\n\x1fis_accelerometer_calibration_ok\x18\x02 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x31\n\x1eis_magnetometer_calibration_ok\x18\x03 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\'\n\x14is_local_position_ok\x18\x05 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12(\n\x15is_global_position_ok\x18\x06 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12&\n\x13is_home_position_ok\x18\x07 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x1d\n\nis_armable\x18\x08 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse"|\n\x08RcStatus\x12%\n\x12was_available_once\x18\x01 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x1f\n\x0cis_available\x18\x02 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12(\n\x17signal_strength_percent\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"N\n\nStatusText\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.mavsdk.rpc.telemetry.StatusTextType\x12\x0c\n\x04text\x18\x02 \x01(\t"?\n\x15\x41\x63tuatorControlTarget\x12\x14\n\x05group\x18\x01 \x01(\x05\x42\x05\x82\xb5\x18\x01\x30\x12\x10\n\x08\x63ontrols\x18\x02 \x03(\x02"?\n\x14\x41\x63tuatorOutputStatus\x12\x15\n\x06\x61\x63tive\x18\x01 \x01(\rB\x05\x82\xb5\x18\x01\x30\x12\x10\n\x08\x61\x63tuator\x18\x02 \x03(\x02"\'\n\nCovariance\x12\x19\n\x11\x63ovariance_matrix\x18\x01 \x03(\x02";\n\x0cVelocityBody\x12\r\n\x05x_m_s\x18\x01 \x01(\x02\x12\r\n\x05y_m_s\x18\x02 \x01(\x02\x12\r\n\x05z_m_s\x18\x03 \x01(\x02"5\n\x0cPositionBody\x12\x0b\n\x03x_m\x18\x01 \x01(\x02\x12\x0b\n\x03y_m\x18\x02 \x01(\x02\x12\x0b\n\x03z_m\x18\x03 \x01(\x02"\xec\x04\n\x08Odometry\x12\x11\n\ttime_usec\x18\x01 \x01(\x04\x12\x39\n\x08\x66rame_id\x18\x02 \x01(\x0e\x32\'.mavsdk.rpc.telemetry.Odometry.MavFrame\x12?\n\x0e\x63hild_frame_id\x18\x03 \x01(\x0e\x32\'.mavsdk.rpc.telemetry.Odometry.MavFrame\x12\x39\n\rposition_body\x18\x04 \x01(\x0b\x32".mavsdk.rpc.telemetry.PositionBody\x12+\n\x01q\x18\x05 \x01(\x0b\x32 .mavsdk.rpc.telemetry.Quaternion\x12\x39\n\rvelocity_body\x18\x06 \x01(\x0b\x32".mavsdk.rpc.telemetry.VelocityBody\x12H\n\x15\x61ngular_velocity_body\x18\x07 \x01(\x0b\x32).mavsdk.rpc.telemetry.AngularVelocityBody\x12\x39\n\x0fpose_covariance\x18\x08 \x01(\x0b\x32 .mavsdk.rpc.telemetry.Covariance\x12=\n\x13velocity_covariance\x18\t \x01(\x0b\x32 .mavsdk.rpc.telemetry.Covariance"j\n\x08MavFrame\x12\x13\n\x0fMAV_FRAME_UNDEF\x10\x00\x12\x16\n\x12MAV_FRAME_BODY_NED\x10\x08\x12\x18\n\x14MAV_FRAME_VISION_NED\x10\x10\x12\x17\n\x13MAV_FRAME_ESTIM_NED\x10\x12"\xb6\x01\n\x0e\x44istanceSensor\x12#\n\x12minimum_distance_m\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12maximum_distance_m\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12\x63urrent_distance_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x35\n\x0borientation\x18\x04 \x01(\x0b\x32 .mavsdk.rpc.telemetry.EulerAngle"\xb0\x01\n\x0eScaledPressure\x12\x14\n\x0ctimestamp_us\x18\x01 \x01(\x04\x12\x1d\n\x15\x61\x62solute_pressure_hpa\x18\x02 \x01(\x02\x12!\n\x19\x64ifferential_pressure_hpa\x18\x03 \x01(\x02\x12\x17\n\x0ftemperature_deg\x18\x04 \x01(\x02\x12-\n%differential_pressure_temperature_deg\x18\x05 \x01(\x02"Y\n\x0bPositionNed\x12\x18\n\x07north_m\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x17\n\x06\x65\x61st_m\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x17\n\x06\x64own_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"D\n\x0bVelocityNed\x12\x11\n\tnorth_m_s\x18\x01 \x01(\x02\x12\x10\n\x08\x65\x61st_m_s\x18\x02 \x01(\x02\x12\x10\n\x08\x64own_m_s\x18\x03 \x01(\x02"\x7f\n\x13PositionVelocityNed\x12\x33\n\x08position\x18\x01 \x01(\x0b\x32!.mavsdk.rpc.telemetry.PositionNed\x12\x33\n\x08velocity\x18\x02 \x01(\x0b\x32!.mavsdk.rpc.telemetry.VelocityNed"\x88\x01\n\x0bGroundTruth\x12\x1d\n\x0clatitude_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x04 \x01(\x04"\xde\x01\n\x10\x46ixedwingMetrics\x12\x1d\n\x0c\x61irspeed_m_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13throttle_percentage\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1f\n\x0e\x63limb_rate_m_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12 \n\x0fgroundspeed_m_s\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bheading_deg\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"i\n\x0f\x41\x63\x63\x65lerationFrd\x12\x1d\n\x0c\x66orward_m_s2\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\nright_m_s2\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tdown_m_s2\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"o\n\x12\x41ngularVelocityFrd\x12\x1e\n\rforward_rad_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bright_rad_s\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\ndown_rad_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"m\n\x10MagneticFieldFrd\x12\x1e\n\rforward_gauss\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bright_gauss\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\ndown_gauss\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\x8b\x02\n\x03Imu\x12?\n\x10\x61\x63\x63\x65leration_frd\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.AccelerationFrd\x12\x46\n\x14\x61ngular_velocity_frd\x18\x02 \x01(\x0b\x32(.mavsdk.rpc.telemetry.AngularVelocityFrd\x12\x42\n\x12magnetic_field_frd\x18\x03 \x01(\x0b\x32&.mavsdk.rpc.telemetry.MagneticFieldFrd\x12!\n\x10temperature_degc\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x05 \x01(\x04"m\n\x0fGpsGlobalOrigin\x12\x1d\n\x0clatitude_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\naltitude_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\xfc\x01\n\x08\x41ltitude\x12%\n\x14\x61ltitude_monotonic_m\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12 \n\x0f\x61ltitude_amsl_m\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12!\n\x10\x61ltitude_local_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61ltitude_relative_m\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12\x61ltitude_terrain_m\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12\x62ottom_clearance_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x07 \x01(\x04"\xdd\x02\n\x04Wind\x12\x1f\n\x0ewind_x_ned_m_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1f\n\x0ewind_y_ned_m_s\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1f\n\x0ewind_z_ned_m_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x32\n!horizontal_variability_stddev_m_s\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x30\n\x1fvertical_variability_stddev_m_s\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13wind_altitude_msl_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x33\n"horizontal_wind_speed_accuracy_m_s\x18\x07 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x31\n vertical_wind_speed_accuracy_m_s\x18\x08 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\xa1\x02\n\x0fTelemetryResult\x12<\n\x06result\x18\x01 \x01(\x0e\x32,.mavsdk.rpc.telemetry.TelemetryResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xbb\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x02\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x19\n\x15RESULT_COMMAND_DENIED\x10\x05\x12\x12\n\x0eRESULT_TIMEOUT\x10\x06\x12\x16\n\x12RESULT_UNSUPPORTED\x10\x07*\xa4\x01\n\x07\x46ixType\x12\x13\n\x0f\x46IX_TYPE_NO_GPS\x10\x00\x12\x13\n\x0f\x46IX_TYPE_NO_FIX\x10\x01\x12\x13\n\x0f\x46IX_TYPE_FIX_2D\x10\x02\x12\x13\n\x0f\x46IX_TYPE_FIX_3D\x10\x03\x12\x15\n\x11\x46IX_TYPE_FIX_DGPS\x10\x04\x12\x16\n\x12\x46IX_TYPE_RTK_FLOAT\x10\x05\x12\x16\n\x12\x46IX_TYPE_RTK_FIXED\x10\x06*\xa7\x01\n\x0f\x42\x61tteryFunction\x12\x1c\n\x18\x42\x41TTERY_FUNCTION_UNKNOWN\x10\x00\x12\x18\n\x14\x42\x41TTERY_FUNCTION_ALL\x10\x01\x12\x1f\n\x1b\x42\x41TTERY_FUNCTION_PROPULSION\x10\x02\x12\x1d\n\x19\x42\x41TTERY_FUNCTION_AVIONICS\x10\x03\x12\x1c\n\x18\x42\x41TTERY_FUNCTION_PAYLOAD\x10\x04*\x86\x03\n\nFlightMode\x12\x17\n\x13\x46LIGHT_MODE_UNKNOWN\x10\x00\x12\x15\n\x11\x46LIGHT_MODE_READY\x10\x01\x12\x17\n\x13\x46LIGHT_MODE_TAKEOFF\x10\x02\x12\x14\n\x10\x46LIGHT_MODE_HOLD\x10\x03\x12\x17\n\x13\x46LIGHT_MODE_MISSION\x10\x04\x12 \n\x1c\x46LIGHT_MODE_RETURN_TO_LAUNCH\x10\x05\x12\x14\n\x10\x46LIGHT_MODE_LAND\x10\x06\x12\x18\n\x14\x46LIGHT_MODE_OFFBOARD\x10\x07\x12\x19\n\x15\x46LIGHT_MODE_FOLLOW_ME\x10\x08\x12\x16\n\x12\x46LIGHT_MODE_MANUAL\x10\t\x12\x16\n\x12\x46LIGHT_MODE_ALTCTL\x10\n\x12\x16\n\x12\x46LIGHT_MODE_POSCTL\x10\x0b\x12\x14\n\x10\x46LIGHT_MODE_ACRO\x10\x0c\x12\x1a\n\x16\x46LIGHT_MODE_STABILIZED\x10\r\x12\x19\n\x15\x46LIGHT_MODE_RATTITUDE\x10\x0e*\xf9\x01\n\x0eStatusTextType\x12\x1a\n\x16STATUS_TEXT_TYPE_DEBUG\x10\x00\x12\x19\n\x15STATUS_TEXT_TYPE_INFO\x10\x01\x12\x1b\n\x17STATUS_TEXT_TYPE_NOTICE\x10\x02\x12\x1c\n\x18STATUS_TEXT_TYPE_WARNING\x10\x03\x12\x1a\n\x16STATUS_TEXT_TYPE_ERROR\x10\x04\x12\x1d\n\x19STATUS_TEXT_TYPE_CRITICAL\x10\x05\x12\x1a\n\x16STATUS_TEXT_TYPE_ALERT\x10\x06\x12\x1e\n\x1aSTATUS_TEXT_TYPE_EMERGENCY\x10\x07*\x93\x01\n\x0bLandedState\x12\x18\n\x14LANDED_STATE_UNKNOWN\x10\x00\x12\x1a\n\x16LANDED_STATE_ON_GROUND\x10\x01\x12\x17\n\x13LANDED_STATE_IN_AIR\x10\x02\x12\x1b\n\x17LANDED_STATE_TAKING_OFF\x10\x03\x12\x18\n\x14LANDED_STATE_LANDING\x10\x04*\x8d\x01\n\tVtolState\x12\x18\n\x14VTOL_STATE_UNDEFINED\x10\x00\x12\x1f\n\x1bVTOL_STATE_TRANSITION_TO_FW\x10\x01\x12\x1f\n\x1bVTOL_STATE_TRANSITION_TO_MC\x10\x02\x12\x11\n\rVTOL_STATE_MC\x10\x03\x12\x11\n\rVTOL_STATE_FW\x10\x04\x32\x84\x38\n\x10TelemetryService\x12o\n\x11SubscribePosition\x12..mavsdk.rpc.telemetry.SubscribePositionRequest\x1a&.mavsdk.rpc.telemetry.PositionResponse"\x00\x30\x01\x12\x63\n\rSubscribeHome\x12*.mavsdk.rpc.telemetry.SubscribeHomeRequest\x1a".mavsdk.rpc.telemetry.HomeResponse"\x00\x30\x01\x12\x66\n\x0eSubscribeInAir\x12+.mavsdk.rpc.telemetry.SubscribeInAirRequest\x1a#.mavsdk.rpc.telemetry.InAirResponse"\x00\x30\x01\x12x\n\x14SubscribeLandedState\x12\x31.mavsdk.rpc.telemetry.SubscribeLandedStateRequest\x1a).mavsdk.rpc.telemetry.LandedStateResponse"\x00\x30\x01\x12\x66\n\x0eSubscribeArmed\x12+.mavsdk.rpc.telemetry.SubscribeArmedRequest\x1a#.mavsdk.rpc.telemetry.ArmedResponse"\x00\x30\x01\x12r\n\x12SubscribeVtolState\x12/.mavsdk.rpc.telemetry.SubscribeVtolStateRequest\x1a\'.mavsdk.rpc.telemetry.VtolStateResponse"\x00\x30\x01\x12\x8d\x01\n\x1bSubscribeAttitudeQuaternion\x12\x38.mavsdk.rpc.telemetry.SubscribeAttitudeQuaternionRequest\x1a\x30.mavsdk.rpc.telemetry.AttitudeQuaternionResponse"\x00\x30\x01\x12~\n\x16SubscribeAttitudeEuler\x12\x33.mavsdk.rpc.telemetry.SubscribeAttitudeEulerRequest\x1a+.mavsdk.rpc.telemetry.AttitudeEulerResponse"\x00\x30\x01\x12\xa8\x01\n$SubscribeAttitudeAngularVelocityBody\x12\x41.mavsdk.rpc.telemetry.SubscribeAttitudeAngularVelocityBodyRequest\x1a\x39.mavsdk.rpc.telemetry.AttitudeAngularVelocityBodyResponse"\x00\x30\x01\x12x\n\x14SubscribeVelocityNed\x12\x31.mavsdk.rpc.telemetry.SubscribeVelocityNedRequest\x1a).mavsdk.rpc.telemetry.VelocityNedResponse"\x00\x30\x01\x12l\n\x10SubscribeGpsInfo\x12-.mavsdk.rpc.telemetry.SubscribeGpsInfoRequest\x1a%.mavsdk.rpc.telemetry.GpsInfoResponse"\x00\x30\x01\x12i\n\x0fSubscribeRawGps\x12,.mavsdk.rpc.telemetry.SubscribeRawGpsRequest\x1a$.mavsdk.rpc.telemetry.RawGpsResponse"\x00\x30\x01\x12l\n\x10SubscribeBattery\x12-.mavsdk.rpc.telemetry.SubscribeBatteryRequest\x1a%.mavsdk.rpc.telemetry.BatteryResponse"\x00\x30\x01\x12u\n\x13SubscribeFlightMode\x12\x30.mavsdk.rpc.telemetry.SubscribeFlightModeRequest\x1a(.mavsdk.rpc.telemetry.FlightModeResponse"\x00\x30\x01\x12i\n\x0fSubscribeHealth\x12,.mavsdk.rpc.telemetry.SubscribeHealthRequest\x1a$.mavsdk.rpc.telemetry.HealthResponse"\x00\x30\x01\x12o\n\x11SubscribeRcStatus\x12..mavsdk.rpc.telemetry.SubscribeRcStatusRequest\x1a&.mavsdk.rpc.telemetry.RcStatusResponse"\x00\x30\x01\x12u\n\x13SubscribeStatusText\x12\x30.mavsdk.rpc.telemetry.SubscribeStatusTextRequest\x1a(.mavsdk.rpc.telemetry.StatusTextResponse"\x00\x30\x01\x12\x96\x01\n\x1eSubscribeActuatorControlTarget\x12;.mavsdk.rpc.telemetry.SubscribeActuatorControlTargetRequest\x1a\x33.mavsdk.rpc.telemetry.ActuatorControlTargetResponse"\x00\x30\x01\x12\x93\x01\n\x1dSubscribeActuatorOutputStatus\x12:.mavsdk.rpc.telemetry.SubscribeActuatorOutputStatusRequest\x1a\x32.mavsdk.rpc.telemetry.ActuatorOutputStatusResponse"\x00\x30\x01\x12o\n\x11SubscribeOdometry\x12..mavsdk.rpc.telemetry.SubscribeOdometryRequest\x1a&.mavsdk.rpc.telemetry.OdometryResponse"\x00\x30\x01\x12\x90\x01\n\x1cSubscribePositionVelocityNed\x12\x39.mavsdk.rpc.telemetry.SubscribePositionVelocityNedRequest\x1a\x31.mavsdk.rpc.telemetry.PositionVelocityNedResponse"\x00\x30\x01\x12x\n\x14SubscribeGroundTruth\x12\x31.mavsdk.rpc.telemetry.SubscribeGroundTruthRequest\x1a).mavsdk.rpc.telemetry.GroundTruthResponse"\x00\x30\x01\x12\x87\x01\n\x19SubscribeFixedwingMetrics\x12\x36.mavsdk.rpc.telemetry.SubscribeFixedwingMetricsRequest\x1a..mavsdk.rpc.telemetry.FixedwingMetricsResponse"\x00\x30\x01\x12`\n\x0cSubscribeImu\x12).mavsdk.rpc.telemetry.SubscribeImuRequest\x1a!.mavsdk.rpc.telemetry.ImuResponse"\x00\x30\x01\x12r\n\x12SubscribeScaledImu\x12/.mavsdk.rpc.telemetry.SubscribeScaledImuRequest\x1a\'.mavsdk.rpc.telemetry.ScaledImuResponse"\x00\x30\x01\x12i\n\x0fSubscribeRawImu\x12,.mavsdk.rpc.telemetry.SubscribeRawImuRequest\x1a$.mavsdk.rpc.telemetry.RawImuResponse"\x00\x30\x01\x12x\n\x14SubscribeHealthAllOk\x12\x31.mavsdk.rpc.telemetry.SubscribeHealthAllOkRequest\x1a).mavsdk.rpc.telemetry.HealthAllOkResponse"\x00\x30\x01\x12~\n\x16SubscribeUnixEpochTime\x12\x33.mavsdk.rpc.telemetry.SubscribeUnixEpochTimeRequest\x1a+.mavsdk.rpc.telemetry.UnixEpochTimeResponse"\x00\x30\x01\x12\x81\x01\n\x17SubscribeDistanceSensor\x12\x34.mavsdk.rpc.telemetry.SubscribeDistanceSensorRequest\x1a,.mavsdk.rpc.telemetry.DistanceSensorResponse"\x00\x30\x01\x12\x81\x01\n\x17SubscribeScaledPressure\x12\x34.mavsdk.rpc.telemetry.SubscribeScaledPressureRequest\x1a,.mavsdk.rpc.telemetry.ScaledPressureResponse"\x00\x30\x01\x12l\n\x10SubscribeHeading\x12-.mavsdk.rpc.telemetry.SubscribeHeadingRequest\x1a%.mavsdk.rpc.telemetry.HeadingResponse"\x00\x30\x01\x12o\n\x11SubscribeAltitude\x12..mavsdk.rpc.telemetry.SubscribeAltitudeRequest\x1a&.mavsdk.rpc.telemetry.AltitudeResponse"\x00\x30\x01\x12\x63\n\rSubscribeWind\x12*.mavsdk.rpc.telemetry.SubscribeWindRequest\x1a".mavsdk.rpc.telemetry.WindResponse"\x00\x30\x01\x12p\n\x0fSetRatePosition\x12,.mavsdk.rpc.telemetry.SetRatePositionRequest\x1a-.mavsdk.rpc.telemetry.SetRatePositionResponse"\x00\x12\x64\n\x0bSetRateHome\x12(.mavsdk.rpc.telemetry.SetRateHomeRequest\x1a).mavsdk.rpc.telemetry.SetRateHomeResponse"\x00\x12g\n\x0cSetRateInAir\x12).mavsdk.rpc.telemetry.SetRateInAirRequest\x1a*.mavsdk.rpc.telemetry.SetRateInAirResponse"\x00\x12y\n\x12SetRateLandedState\x12/.mavsdk.rpc.telemetry.SetRateLandedStateRequest\x1a\x30.mavsdk.rpc.telemetry.SetRateLandedStateResponse"\x00\x12s\n\x10SetRateVtolState\x12-.mavsdk.rpc.telemetry.SetRateVtolStateRequest\x1a..mavsdk.rpc.telemetry.SetRateVtolStateResponse"\x00\x12\x8e\x01\n\x19SetRateAttitudeQuaternion\x12\x36.mavsdk.rpc.telemetry.SetRateAttitudeQuaternionRequest\x1a\x37.mavsdk.rpc.telemetry.SetRateAttitudeQuaternionResponse"\x00\x12\x7f\n\x14SetRateAttitudeEuler\x12\x31.mavsdk.rpc.telemetry.SetRateAttitudeEulerRequest\x1a\x32.mavsdk.rpc.telemetry.SetRateAttitudeEulerResponse"\x00\x12y\n\x12SetRateVelocityNed\x12/.mavsdk.rpc.telemetry.SetRateVelocityNedRequest\x1a\x30.mavsdk.rpc.telemetry.SetRateVelocityNedResponse"\x00\x12m\n\x0eSetRateGpsInfo\x12+.mavsdk.rpc.telemetry.SetRateGpsInfoRequest\x1a,.mavsdk.rpc.telemetry.SetRateGpsInfoResponse"\x00\x12j\n\rSetRateRawGps\x12*.mavsdk.rpc.telemetry.SetRateRawGpsRequest\x1a+.mavsdk.rpc.telemetry.SetRateRawGpsResponse"\x00\x12m\n\x0eSetRateBattery\x12+.mavsdk.rpc.telemetry.SetRateBatteryRequest\x1a,.mavsdk.rpc.telemetry.SetRateBatteryResponse"\x00\x12p\n\x0fSetRateRcStatus\x12,.mavsdk.rpc.telemetry.SetRateRcStatusRequest\x1a-.mavsdk.rpc.telemetry.SetRateRcStatusResponse"\x00\x12\x97\x01\n\x1cSetRateActuatorControlTarget\x12\x39.mavsdk.rpc.telemetry.SetRateActuatorControlTargetRequest\x1a:.mavsdk.rpc.telemetry.SetRateActuatorControlTargetResponse"\x00\x12\x94\x01\n\x1bSetRateActuatorOutputStatus\x12\x38.mavsdk.rpc.telemetry.SetRateActuatorOutputStatusRequest\x1a\x39.mavsdk.rpc.telemetry.SetRateActuatorOutputStatusResponse"\x00\x12p\n\x0fSetRateOdometry\x12,.mavsdk.rpc.telemetry.SetRateOdometryRequest\x1a-.mavsdk.rpc.telemetry.SetRateOdometryResponse"\x00\x12\x91\x01\n\x1aSetRatePositionVelocityNed\x12\x37.mavsdk.rpc.telemetry.SetRatePositionVelocityNedRequest\x1a\x38.mavsdk.rpc.telemetry.SetRatePositionVelocityNedResponse"\x00\x12y\n\x12SetRateGroundTruth\x12/.mavsdk.rpc.telemetry.SetRateGroundTruthRequest\x1a\x30.mavsdk.rpc.telemetry.SetRateGroundTruthResponse"\x00\x12\x88\x01\n\x17SetRateFixedwingMetrics\x12\x34.mavsdk.rpc.telemetry.SetRateFixedwingMetricsRequest\x1a\x35.mavsdk.rpc.telemetry.SetRateFixedwingMetricsResponse"\x00\x12\x61\n\nSetRateImu\x12\'.mavsdk.rpc.telemetry.SetRateImuRequest\x1a(.mavsdk.rpc.telemetry.SetRateImuResponse"\x00\x12s\n\x10SetRateScaledImu\x12-.mavsdk.rpc.telemetry.SetRateScaledImuRequest\x1a..mavsdk.rpc.telemetry.SetRateScaledImuResponse"\x00\x12j\n\rSetRateRawImu\x12*.mavsdk.rpc.telemetry.SetRateRawImuRequest\x1a+.mavsdk.rpc.telemetry.SetRateRawImuResponse"\x00\x12\x7f\n\x14SetRateUnixEpochTime\x12\x31.mavsdk.rpc.telemetry.SetRateUnixEpochTimeRequest\x1a\x32.mavsdk.rpc.telemetry.SetRateUnixEpochTimeResponse"\x00\x12\x82\x01\n\x15SetRateDistanceSensor\x12\x32.mavsdk.rpc.telemetry.SetRateDistanceSensorRequest\x1a\x33.mavsdk.rpc.telemetry.SetRateDistanceSensorResponse"\x00\x12p\n\x0fSetRateAltitude\x12,.mavsdk.rpc.telemetry.SetRateAltitudeRequest\x1a-.mavsdk.rpc.telemetry.SetRateAltitudeResponse"\x00\x12j\n\rSetRateHealth\x12*.mavsdk.rpc.telemetry.SetRateHealthRequest\x1a+.mavsdk.rpc.telemetry.SetRateHealthResponse"\x00\x12y\n\x12GetGpsGlobalOrigin\x12/.mavsdk.rpc.telemetry.GetGpsGlobalOriginRequest\x1a\x30.mavsdk.rpc.telemetry.GetGpsGlobalOriginResponse"\x00\x42%\n\x13io.mavsdk.telemetryB\x0eTelemetryProtob\x06proto3' + b'\n\x19telemetry/telemetry.proto\x12\x14mavsdk.rpc.telemetry\x1a\x14mavsdk_options.proto"\x1a\n\x18SubscribePositionRequest"D\n\x10PositionResponse\x12\x30\n\x08position\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Position"\x16\n\x14SubscribeHomeRequest"@\n\x0cHomeResponse\x12\x30\n\x04home\x18\x01 \x01(\x0b\x32".mavsdk.rpc.telemetry.HomePosition"\x17\n\x15SubscribeInAirRequest""\n\rInAirResponse\x12\x11\n\tis_in_air\x18\x01 \x01(\x08"\x1d\n\x1bSubscribeLandedStateRequest"N\n\x13LandedStateResponse\x12\x37\n\x0clanded_state\x18\x01 \x01(\x0e\x32!.mavsdk.rpc.telemetry.LandedState"\x17\n\x15SubscribeArmedRequest"!\n\rArmedResponse\x12\x10\n\x08is_armed\x18\x01 \x01(\x08"\x1b\n\x19SubscribeVtolStateRequest"H\n\x11VtolStateResponse\x12\x33\n\nvtol_state\x18\x01 \x01(\x0e\x32\x1f.mavsdk.rpc.telemetry.VtolState"$\n"SubscribeAttitudeQuaternionRequest"[\n\x1a\x41ttitudeQuaternionResponse\x12=\n\x13\x61ttitude_quaternion\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.telemetry.Quaternion"\x1f\n\x1dSubscribeAttitudeEulerRequest"Q\n\x15\x41ttitudeEulerResponse\x12\x38\n\x0e\x61ttitude_euler\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.telemetry.EulerAngle"-\n+SubscribeAttitudeAngularVelocityBodyRequest"x\n#AttitudeAngularVelocityBodyResponse\x12Q\n\x1e\x61ttitude_angular_velocity_body\x18\x01 \x01(\x0b\x32).mavsdk.rpc.telemetry.AngularVelocityBody"\x1d\n\x1bSubscribeVelocityNedRequest"N\n\x13VelocityNedResponse\x12\x37\n\x0cvelocity_ned\x18\x01 \x01(\x0b\x32!.mavsdk.rpc.telemetry.VelocityNed"\x19\n\x17SubscribeGpsInfoRequest"B\n\x0fGpsInfoResponse\x12/\n\x08gps_info\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.telemetry.GpsInfo"\x18\n\x16SubscribeRawGpsRequest"?\n\x0eRawGpsResponse\x12-\n\x07raw_gps\x18\x01 \x01(\x0b\x32\x1c.mavsdk.rpc.telemetry.RawGps"\x19\n\x17SubscribeBatteryRequest"A\n\x0f\x42\x61tteryResponse\x12.\n\x07\x62\x61ttery\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.telemetry.Battery"\x1c\n\x1aSubscribeFlightModeRequest"K\n\x12\x46lightModeResponse\x12\x35\n\x0b\x66light_mode\x18\x01 \x01(\x0e\x32 .mavsdk.rpc.telemetry.FlightMode"\x18\n\x16SubscribeHealthRequest">\n\x0eHealthResponse\x12,\n\x06health\x18\x01 \x01(\x0b\x32\x1c.mavsdk.rpc.telemetry.Health"\x1a\n\x18SubscribeRcStatusRequest"E\n\x10RcStatusResponse\x12\x31\n\trc_status\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.RcStatus"\x1c\n\x1aSubscribeStatusTextRequest"K\n\x12StatusTextResponse\x12\x35\n\x0bstatus_text\x18\x01 \x01(\x0b\x32 .mavsdk.rpc.telemetry.StatusText"\'\n%SubscribeActuatorControlTargetRequest"m\n\x1d\x41\x63tuatorControlTargetResponse\x12L\n\x17\x61\x63tuator_control_target\x18\x01 \x01(\x0b\x32+.mavsdk.rpc.telemetry.ActuatorControlTarget"&\n$SubscribeActuatorOutputStatusRequest"j\n\x1c\x41\x63tuatorOutputStatusResponse\x12J\n\x16\x61\x63tuator_output_status\x18\x01 \x01(\x0b\x32*.mavsdk.rpc.telemetry.ActuatorOutputStatus"\x1a\n\x18SubscribeOdometryRequest"D\n\x10OdometryResponse\x12\x30\n\x08odometry\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Odometry"%\n#SubscribePositionVelocityNedRequest"g\n\x1bPositionVelocityNedResponse\x12H\n\x15position_velocity_ned\x18\x01 \x01(\x0b\x32).mavsdk.rpc.telemetry.PositionVelocityNed"\x1d\n\x1bSubscribeGroundTruthRequest"N\n\x13GroundTruthResponse\x12\x37\n\x0cground_truth\x18\x01 \x01(\x0b\x32!.mavsdk.rpc.telemetry.GroundTruth""\n SubscribeFixedwingMetricsRequest"]\n\x18\x46ixedwingMetricsResponse\x12\x41\n\x11\x66ixedwing_metrics\x18\x01 \x01(\x0b\x32&.mavsdk.rpc.telemetry.FixedwingMetrics"\x15\n\x13SubscribeImuRequest"5\n\x0bImuResponse\x12&\n\x03imu\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.telemetry.Imu"\x1b\n\x19SubscribeScaledImuRequest";\n\x11ScaledImuResponse\x12&\n\x03imu\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.telemetry.Imu"\x18\n\x16SubscribeRawImuRequest"8\n\x0eRawImuResponse\x12&\n\x03imu\x18\x01 \x01(\x0b\x32\x19.mavsdk.rpc.telemetry.Imu"\x1d\n\x1bSubscribeHealthAllOkRequest"/\n\x13HealthAllOkResponse\x12\x18\n\x10is_health_all_ok\x18\x01 \x01(\x08"\x1f\n\x1dSubscribeUnixEpochTimeRequest"(\n\x15UnixEpochTimeResponse\x12\x0f\n\x07time_us\x18\x01 \x01(\x04" \n\x1eSubscribeDistanceSensorRequest"W\n\x16\x44istanceSensorResponse\x12=\n\x0f\x64istance_sensor\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.telemetry.DistanceSensor" \n\x1eSubscribeScaledPressureRequest"W\n\x16ScaledPressureResponse\x12=\n\x0fscaled_pressure\x18\x01 \x01(\x0b\x32$.mavsdk.rpc.telemetry.ScaledPressure"\x19\n\x17SubscribeHeadingRequest"E\n\x0fHeadingResponse\x12\x32\n\x0bheading_deg\x18\x01 \x01(\x0b\x32\x1d.mavsdk.rpc.telemetry.Heading"\x1a\n\x18SubscribeAltitudeRequest"D\n\x10\x41ltitudeResponse\x12\x30\n\x08\x61ltitude\x18\x01 \x01(\x0b\x32\x1e.mavsdk.rpc.telemetry.Altitude"\x16\n\x14SubscribeWindRequest"8\n\x0cWindResponse\x12(\n\x04wind\x18\x01 \x01(\x0b\x32\x1a.mavsdk.rpc.telemetry.Wind")\n\x16SetRatePositionRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRatePositionResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"%\n\x12SetRateHomeRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"V\n\x13SetRateHomeResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"&\n\x13SetRateInAirRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"W\n\x14SetRateInAirResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult",\n\x19SetRateLandedStateRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"]\n\x1aSetRateLandedStateResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"*\n\x17SetRateVtolStateRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"[\n\x18SetRateVtolStateResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult".\n\x1bSetRateAttitudeEulerRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"_\n\x1cSetRateAttitudeEulerResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"3\n SetRateAttitudeQuaternionRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"d\n!SetRateAttitudeQuaternionResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"<\n)SetRateAttitudeAngularVelocityBodyRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"m\n*SetRateAttitudeAngularVelocityBodyResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult",\n\x19SetRateVelocityNedRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"]\n\x1aSetRateVelocityNedResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"(\n\x15SetRateGpsInfoRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Y\n\x16SetRateGpsInfoResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\'\n\x14SetRateRawGpsRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"X\n\x15SetRateRawGpsResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"(\n\x15SetRateBatteryRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Y\n\x16SetRateBatteryResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult")\n\x16SetRateRcStatusRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRateRcStatusResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"6\n#SetRateActuatorControlTargetRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"g\n$SetRateActuatorControlTargetResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"5\n"SetRateActuatorOutputStatusRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"f\n#SetRateActuatorOutputStatusResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult")\n\x16SetRateOdometryRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRateOdometryResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"4\n!SetRatePositionVelocityNedRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"e\n"SetRatePositionVelocityNedResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult",\n\x19SetRateGroundTruthRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"]\n\x1aSetRateGroundTruthResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"1\n\x1eSetRateFixedwingMetricsRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"b\n\x1fSetRateFixedwingMetricsResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"$\n\x11SetRateImuRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"U\n\x12SetRateImuResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"*\n\x17SetRateScaledImuRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"[\n\x18SetRateScaledImuResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\'\n\x14SetRateRawImuRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"X\n\x15SetRateRawImuResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult".\n\x1bSetRateUnixEpochTimeRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"_\n\x1cSetRateUnixEpochTimeResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"/\n\x1cSetRateDistanceSensorRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"`\n\x1dSetRateDistanceSensorResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\x1b\n\x19GetGpsGlobalOriginRequest"\x9f\x01\n\x1aGetGpsGlobalOriginResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult\x12@\n\x11gps_global_origin\x18\x02 \x01(\x0b\x32%.mavsdk.rpc.telemetry.GpsGlobalOrigin")\n\x16SetRateAltitudeRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"Z\n\x17SetRateAltitudeResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\'\n\x14SetRateHealthRequest\x12\x0f\n\x07rate_hz\x18\x01 \x01(\x01"X\n\x15SetRateHealthResponse\x12?\n\x10telemetry_result\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.TelemetryResult"\x95\x01\n\x08Position\x12\x1d\n\x0clatitude_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13relative_altitude_m\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\'\n\x07Heading\x12\x1c\n\x0bheading_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN"r\n\nQuaternion\x12\x12\n\x01w\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x12\n\x01x\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x12\n\x01y\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x12\n\x01z\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x05 \x01(\x04"\xa1\x03\n\x0cHomePosition\x12\x14\n\x0ctimestamp_us\x18\x01 \x01(\x04\x12\x1d\n\x0clatitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x03 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13relative_altitude_m\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlocal_north_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1d\n\x0clocal_east_m\x18\x07 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1d\n\x0clocal_down_m\x18\x08 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12+\n\x01q\x18\t \x01(\x0b\x32 .mavsdk.rpc.telemetry.Quaternion\x12!\n\x10\x61pproach_north_m\x18\n \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12 \n\x0f\x61pproach_east_m\x18\x0b \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12 \n\x0f\x61pproach_down_m\x18\x0c \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"s\n\nEulerAngle\x12\x19\n\x08roll_deg\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tpitch_deg\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x18\n\x07yaw_deg\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x04 \x01(\x04"l\n\x13\x41ngularVelocityBody\x12\x1b\n\nroll_rad_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bpitch_rad_s\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tyaw_rad_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"Y\n\x07GpsInfo\x12\x1d\n\x0enum_satellites\x18\x01 \x01(\x05\x42\x05\x82\xb5\x18\x01\x30\x12/\n\x08\x66ix_type\x18\x02 \x01(\x0e\x32\x1d.mavsdk.rpc.telemetry.FixType"\xdf\x02\n\x06RawGps\x12\x14\n\x0ctimestamp_us\x18\x01 \x01(\x04\x12\x14\n\x0clatitude_deg\x18\x02 \x01(\x01\x12\x15\n\rlongitude_deg\x18\x03 \x01(\x01\x12\x1b\n\x13\x61\x62solute_altitude_m\x18\x04 \x01(\x02\x12\x0c\n\x04hdop\x18\x05 \x01(\x02\x12\x0c\n\x04vdop\x18\x06 \x01(\x02\x12\x14\n\x0cvelocity_m_s\x18\x07 \x01(\x02\x12\x0f\n\x07\x63og_deg\x18\x08 \x01(\x02\x12\x1c\n\x14\x61ltitude_ellipsoid_m\x18\t \x01(\x02\x12 \n\x18horizontal_uncertainty_m\x18\n \x01(\x02\x12\x1e\n\x16vertical_uncertainty_m\x18\x0b \x01(\x02\x12 \n\x18velocity_uncertainty_m_s\x18\x0c \x01(\x02\x12\x1f\n\x17heading_uncertainty_deg\x18\r \x01(\x02\x12\x0f\n\x07yaw_deg\x18\x0e \x01(\x02"\xae\x02\n\x07\x42\x61ttery\x12\x11\n\x02id\x18\x01 \x01(\rB\x05\x82\xb5\x18\x01\x30\x12!\n\x10temperature_degc\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tvoltage_v\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12"\n\x11\x63urrent_battery_a\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12%\n\x14\x63\x61pacity_consumed_ah\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12"\n\x11remaining_percent\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12!\n\x10time_remaining_s\x18\x07 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12?\n\x10\x62\x61ttery_function\x18\x08 \x01(\x0e\x32%.mavsdk.rpc.telemetry.BatteryFunction"\xb9\x02\n\x06Health\x12.\n\x1bis_gyrometer_calibration_ok\x18\x01 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x32\n\x1fis_accelerometer_calibration_ok\x18\x02 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x31\n\x1eis_magnetometer_calibration_ok\x18\x03 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\'\n\x14is_local_position_ok\x18\x05 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12(\n\x15is_global_position_ok\x18\x06 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12&\n\x13is_home_position_ok\x18\x07 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x1d\n\nis_armable\x18\x08 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse"|\n\x08RcStatus\x12%\n\x12was_available_once\x18\x01 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12\x1f\n\x0cis_available\x18\x02 \x01(\x08\x42\t\x82\xb5\x18\x05\x66\x61lse\x12(\n\x17signal_strength_percent\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"N\n\nStatusText\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.mavsdk.rpc.telemetry.StatusTextType\x12\x0c\n\x04text\x18\x02 \x01(\t"?\n\x15\x41\x63tuatorControlTarget\x12\x14\n\x05group\x18\x01 \x01(\x05\x42\x05\x82\xb5\x18\x01\x30\x12\x10\n\x08\x63ontrols\x18\x02 \x03(\x02"?\n\x14\x41\x63tuatorOutputStatus\x12\x15\n\x06\x61\x63tive\x18\x01 \x01(\rB\x05\x82\xb5\x18\x01\x30\x12\x10\n\x08\x61\x63tuator\x18\x02 \x03(\x02"\'\n\nCovariance\x12\x19\n\x11\x63ovariance_matrix\x18\x01 \x03(\x02";\n\x0cVelocityBody\x12\r\n\x05x_m_s\x18\x01 \x01(\x02\x12\r\n\x05y_m_s\x18\x02 \x01(\x02\x12\r\n\x05z_m_s\x18\x03 \x01(\x02"5\n\x0cPositionBody\x12\x0b\n\x03x_m\x18\x01 \x01(\x02\x12\x0b\n\x03y_m\x18\x02 \x01(\x02\x12\x0b\n\x03z_m\x18\x03 \x01(\x02"\xec\x04\n\x08Odometry\x12\x11\n\ttime_usec\x18\x01 \x01(\x04\x12\x39\n\x08\x66rame_id\x18\x02 \x01(\x0e\x32\'.mavsdk.rpc.telemetry.Odometry.MavFrame\x12?\n\x0e\x63hild_frame_id\x18\x03 \x01(\x0e\x32\'.mavsdk.rpc.telemetry.Odometry.MavFrame\x12\x39\n\rposition_body\x18\x04 \x01(\x0b\x32".mavsdk.rpc.telemetry.PositionBody\x12+\n\x01q\x18\x05 \x01(\x0b\x32 .mavsdk.rpc.telemetry.Quaternion\x12\x39\n\rvelocity_body\x18\x06 \x01(\x0b\x32".mavsdk.rpc.telemetry.VelocityBody\x12H\n\x15\x61ngular_velocity_body\x18\x07 \x01(\x0b\x32).mavsdk.rpc.telemetry.AngularVelocityBody\x12\x39\n\x0fpose_covariance\x18\x08 \x01(\x0b\x32 .mavsdk.rpc.telemetry.Covariance\x12=\n\x13velocity_covariance\x18\t \x01(\x0b\x32 .mavsdk.rpc.telemetry.Covariance"j\n\x08MavFrame\x12\x13\n\x0fMAV_FRAME_UNDEF\x10\x00\x12\x16\n\x12MAV_FRAME_BODY_NED\x10\x08\x12\x18\n\x14MAV_FRAME_VISION_NED\x10\x10\x12\x17\n\x13MAV_FRAME_ESTIM_NED\x10\x12"\xb6\x01\n\x0e\x44istanceSensor\x12#\n\x12minimum_distance_m\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12maximum_distance_m\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12\x63urrent_distance_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x35\n\x0borientation\x18\x04 \x01(\x0b\x32 .mavsdk.rpc.telemetry.EulerAngle"\xb0\x01\n\x0eScaledPressure\x12\x14\n\x0ctimestamp_us\x18\x01 \x01(\x04\x12\x1d\n\x15\x61\x62solute_pressure_hpa\x18\x02 \x01(\x02\x12!\n\x19\x64ifferential_pressure_hpa\x18\x03 \x01(\x02\x12\x17\n\x0ftemperature_deg\x18\x04 \x01(\x02\x12-\n%differential_pressure_temperature_deg\x18\x05 \x01(\x02"Y\n\x0bPositionNed\x12\x18\n\x07north_m\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x17\n\x06\x65\x61st_m\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x17\n\x06\x64own_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"D\n\x0bVelocityNed\x12\x11\n\tnorth_m_s\x18\x01 \x01(\x02\x12\x10\n\x08\x65\x61st_m_s\x18\x02 \x01(\x02\x12\x10\n\x08\x64own_m_s\x18\x03 \x01(\x02"\x7f\n\x13PositionVelocityNed\x12\x33\n\x08position\x18\x01 \x01(\x0b\x32!.mavsdk.rpc.telemetry.PositionNed\x12\x33\n\x08velocity\x18\x02 \x01(\x0b\x32!.mavsdk.rpc.telemetry.VelocityNed"\x88\x01\n\x0bGroundTruth\x12\x1d\n\x0clatitude_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x04 \x01(\x04"\xde\x01\n\x10\x46ixedwingMetrics\x12\x1d\n\x0c\x61irspeed_m_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13throttle_percentage\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1f\n\x0e\x63limb_rate_m_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12 \n\x0fgroundspeed_m_s\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bheading_deg\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61\x62solute_altitude_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"i\n\x0f\x41\x63\x63\x65lerationFrd\x12\x1d\n\x0c\x66orward_m_s2\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\nright_m_s2\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1a\n\tdown_m_s2\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"o\n\x12\x41ngularVelocityFrd\x12\x1e\n\rforward_rad_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bright_rad_s\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\ndown_rad_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"m\n\x10MagneticFieldFrd\x12\x1e\n\rforward_gauss\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1c\n\x0bright_gauss\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\ndown_gauss\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\x8b\x02\n\x03Imu\x12?\n\x10\x61\x63\x63\x65leration_frd\x18\x01 \x01(\x0b\x32%.mavsdk.rpc.telemetry.AccelerationFrd\x12\x46\n\x14\x61ngular_velocity_frd\x18\x02 \x01(\x0b\x32(.mavsdk.rpc.telemetry.AngularVelocityFrd\x12\x42\n\x12magnetic_field_frd\x18\x03 \x01(\x0b\x32&.mavsdk.rpc.telemetry.MagneticFieldFrd\x12!\n\x10temperature_degc\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x05 \x01(\x04"m\n\x0fGpsGlobalOrigin\x12\x1d\n\x0clatitude_deg\x18\x01 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1e\n\rlongitude_deg\x18\x02 \x01(\x01\x42\x07\x82\xb5\x18\x03NaN\x12\x1b\n\naltitude_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\xfc\x01\n\x08\x41ltitude\x12%\n\x14\x61ltitude_monotonic_m\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12 \n\x0f\x61ltitude_amsl_m\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12!\n\x10\x61ltitude_local_m\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13\x61ltitude_relative_m\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12\x61ltitude_terrain_m\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12#\n\x12\x62ottom_clearance_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x14\n\x0ctimestamp_us\x18\x07 \x01(\x04"\xdd\x02\n\x04Wind\x12\x1f\n\x0ewind_x_ned_m_s\x18\x01 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1f\n\x0ewind_y_ned_m_s\x18\x02 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x1f\n\x0ewind_z_ned_m_s\x18\x03 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x32\n!horizontal_variability_stddev_m_s\x18\x04 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x30\n\x1fvertical_variability_stddev_m_s\x18\x05 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12$\n\x13wind_altitude_msl_m\x18\x06 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x33\n"horizontal_wind_speed_accuracy_m_s\x18\x07 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN\x12\x31\n vertical_wind_speed_accuracy_m_s\x18\x08 \x01(\x02\x42\x07\x82\xb5\x18\x03NaN"\xa1\x02\n\x0fTelemetryResult\x12<\n\x06result\x18\x01 \x01(\x0e\x32,.mavsdk.rpc.telemetry.TelemetryResult.Result\x12\x12\n\nresult_str\x18\x02 \x01(\t"\xbb\x01\n\x06Result\x12\x12\n\x0eRESULT_UNKNOWN\x10\x00\x12\x12\n\x0eRESULT_SUCCESS\x10\x01\x12\x14\n\x10RESULT_NO_SYSTEM\x10\x02\x12\x1b\n\x17RESULT_CONNECTION_ERROR\x10\x03\x12\x0f\n\x0bRESULT_BUSY\x10\x04\x12\x19\n\x15RESULT_COMMAND_DENIED\x10\x05\x12\x12\n\x0eRESULT_TIMEOUT\x10\x06\x12\x16\n\x12RESULT_UNSUPPORTED\x10\x07*\xa4\x01\n\x07\x46ixType\x12\x13\n\x0f\x46IX_TYPE_NO_GPS\x10\x00\x12\x13\n\x0f\x46IX_TYPE_NO_FIX\x10\x01\x12\x13\n\x0f\x46IX_TYPE_FIX_2D\x10\x02\x12\x13\n\x0f\x46IX_TYPE_FIX_3D\x10\x03\x12\x15\n\x11\x46IX_TYPE_FIX_DGPS\x10\x04\x12\x16\n\x12\x46IX_TYPE_RTK_FLOAT\x10\x05\x12\x16\n\x12\x46IX_TYPE_RTK_FIXED\x10\x06*\xa7\x01\n\x0f\x42\x61tteryFunction\x12\x1c\n\x18\x42\x41TTERY_FUNCTION_UNKNOWN\x10\x00\x12\x18\n\x14\x42\x41TTERY_FUNCTION_ALL\x10\x01\x12\x1f\n\x1b\x42\x41TTERY_FUNCTION_PROPULSION\x10\x02\x12\x1d\n\x19\x42\x41TTERY_FUNCTION_AVIONICS\x10\x03\x12\x1c\n\x18\x42\x41TTERY_FUNCTION_PAYLOAD\x10\x04*\x86\x03\n\nFlightMode\x12\x17\n\x13\x46LIGHT_MODE_UNKNOWN\x10\x00\x12\x15\n\x11\x46LIGHT_MODE_READY\x10\x01\x12\x17\n\x13\x46LIGHT_MODE_TAKEOFF\x10\x02\x12\x14\n\x10\x46LIGHT_MODE_HOLD\x10\x03\x12\x17\n\x13\x46LIGHT_MODE_MISSION\x10\x04\x12 \n\x1c\x46LIGHT_MODE_RETURN_TO_LAUNCH\x10\x05\x12\x14\n\x10\x46LIGHT_MODE_LAND\x10\x06\x12\x18\n\x14\x46LIGHT_MODE_OFFBOARD\x10\x07\x12\x19\n\x15\x46LIGHT_MODE_FOLLOW_ME\x10\x08\x12\x16\n\x12\x46LIGHT_MODE_MANUAL\x10\t\x12\x16\n\x12\x46LIGHT_MODE_ALTCTL\x10\n\x12\x16\n\x12\x46LIGHT_MODE_POSCTL\x10\x0b\x12\x14\n\x10\x46LIGHT_MODE_ACRO\x10\x0c\x12\x1a\n\x16\x46LIGHT_MODE_STABILIZED\x10\r\x12\x19\n\x15\x46LIGHT_MODE_RATTITUDE\x10\x0e*\xf9\x01\n\x0eStatusTextType\x12\x1a\n\x16STATUS_TEXT_TYPE_DEBUG\x10\x00\x12\x19\n\x15STATUS_TEXT_TYPE_INFO\x10\x01\x12\x1b\n\x17STATUS_TEXT_TYPE_NOTICE\x10\x02\x12\x1c\n\x18STATUS_TEXT_TYPE_WARNING\x10\x03\x12\x1a\n\x16STATUS_TEXT_TYPE_ERROR\x10\x04\x12\x1d\n\x19STATUS_TEXT_TYPE_CRITICAL\x10\x05\x12\x1a\n\x16STATUS_TEXT_TYPE_ALERT\x10\x06\x12\x1e\n\x1aSTATUS_TEXT_TYPE_EMERGENCY\x10\x07*\x93\x01\n\x0bLandedState\x12\x18\n\x14LANDED_STATE_UNKNOWN\x10\x00\x12\x1a\n\x16LANDED_STATE_ON_GROUND\x10\x01\x12\x17\n\x13LANDED_STATE_IN_AIR\x10\x02\x12\x1b\n\x17LANDED_STATE_TAKING_OFF\x10\x03\x12\x18\n\x14LANDED_STATE_LANDING\x10\x04*\x8d\x01\n\tVtolState\x12\x18\n\x14VTOL_STATE_UNDEFINED\x10\x00\x12\x1f\n\x1bVTOL_STATE_TRANSITION_TO_FW\x10\x01\x12\x1f\n\x1bVTOL_STATE_TRANSITION_TO_MC\x10\x02\x12\x11\n\rVTOL_STATE_MC\x10\x03\x12\x11\n\rVTOL_STATE_FW\x10\x04\x32\x84\x38\n\x10TelemetryService\x12o\n\x11SubscribePosition\x12..mavsdk.rpc.telemetry.SubscribePositionRequest\x1a&.mavsdk.rpc.telemetry.PositionResponse"\x00\x30\x01\x12\x63\n\rSubscribeHome\x12*.mavsdk.rpc.telemetry.SubscribeHomeRequest\x1a".mavsdk.rpc.telemetry.HomeResponse"\x00\x30\x01\x12\x66\n\x0eSubscribeInAir\x12+.mavsdk.rpc.telemetry.SubscribeInAirRequest\x1a#.mavsdk.rpc.telemetry.InAirResponse"\x00\x30\x01\x12x\n\x14SubscribeLandedState\x12\x31.mavsdk.rpc.telemetry.SubscribeLandedStateRequest\x1a).mavsdk.rpc.telemetry.LandedStateResponse"\x00\x30\x01\x12\x66\n\x0eSubscribeArmed\x12+.mavsdk.rpc.telemetry.SubscribeArmedRequest\x1a#.mavsdk.rpc.telemetry.ArmedResponse"\x00\x30\x01\x12r\n\x12SubscribeVtolState\x12/.mavsdk.rpc.telemetry.SubscribeVtolStateRequest\x1a\'.mavsdk.rpc.telemetry.VtolStateResponse"\x00\x30\x01\x12\x8d\x01\n\x1bSubscribeAttitudeQuaternion\x12\x38.mavsdk.rpc.telemetry.SubscribeAttitudeQuaternionRequest\x1a\x30.mavsdk.rpc.telemetry.AttitudeQuaternionResponse"\x00\x30\x01\x12~\n\x16SubscribeAttitudeEuler\x12\x33.mavsdk.rpc.telemetry.SubscribeAttitudeEulerRequest\x1a+.mavsdk.rpc.telemetry.AttitudeEulerResponse"\x00\x30\x01\x12\xa8\x01\n$SubscribeAttitudeAngularVelocityBody\x12\x41.mavsdk.rpc.telemetry.SubscribeAttitudeAngularVelocityBodyRequest\x1a\x39.mavsdk.rpc.telemetry.AttitudeAngularVelocityBodyResponse"\x00\x30\x01\x12x\n\x14SubscribeVelocityNed\x12\x31.mavsdk.rpc.telemetry.SubscribeVelocityNedRequest\x1a).mavsdk.rpc.telemetry.VelocityNedResponse"\x00\x30\x01\x12l\n\x10SubscribeGpsInfo\x12-.mavsdk.rpc.telemetry.SubscribeGpsInfoRequest\x1a%.mavsdk.rpc.telemetry.GpsInfoResponse"\x00\x30\x01\x12i\n\x0fSubscribeRawGps\x12,.mavsdk.rpc.telemetry.SubscribeRawGpsRequest\x1a$.mavsdk.rpc.telemetry.RawGpsResponse"\x00\x30\x01\x12l\n\x10SubscribeBattery\x12-.mavsdk.rpc.telemetry.SubscribeBatteryRequest\x1a%.mavsdk.rpc.telemetry.BatteryResponse"\x00\x30\x01\x12u\n\x13SubscribeFlightMode\x12\x30.mavsdk.rpc.telemetry.SubscribeFlightModeRequest\x1a(.mavsdk.rpc.telemetry.FlightModeResponse"\x00\x30\x01\x12i\n\x0fSubscribeHealth\x12,.mavsdk.rpc.telemetry.SubscribeHealthRequest\x1a$.mavsdk.rpc.telemetry.HealthResponse"\x00\x30\x01\x12o\n\x11SubscribeRcStatus\x12..mavsdk.rpc.telemetry.SubscribeRcStatusRequest\x1a&.mavsdk.rpc.telemetry.RcStatusResponse"\x00\x30\x01\x12u\n\x13SubscribeStatusText\x12\x30.mavsdk.rpc.telemetry.SubscribeStatusTextRequest\x1a(.mavsdk.rpc.telemetry.StatusTextResponse"\x00\x30\x01\x12\x96\x01\n\x1eSubscribeActuatorControlTarget\x12;.mavsdk.rpc.telemetry.SubscribeActuatorControlTargetRequest\x1a\x33.mavsdk.rpc.telemetry.ActuatorControlTargetResponse"\x00\x30\x01\x12\x93\x01\n\x1dSubscribeActuatorOutputStatus\x12:.mavsdk.rpc.telemetry.SubscribeActuatorOutputStatusRequest\x1a\x32.mavsdk.rpc.telemetry.ActuatorOutputStatusResponse"\x00\x30\x01\x12o\n\x11SubscribeOdometry\x12..mavsdk.rpc.telemetry.SubscribeOdometryRequest\x1a&.mavsdk.rpc.telemetry.OdometryResponse"\x00\x30\x01\x12\x90\x01\n\x1cSubscribePositionVelocityNed\x12\x39.mavsdk.rpc.telemetry.SubscribePositionVelocityNedRequest\x1a\x31.mavsdk.rpc.telemetry.PositionVelocityNedResponse"\x00\x30\x01\x12x\n\x14SubscribeGroundTruth\x12\x31.mavsdk.rpc.telemetry.SubscribeGroundTruthRequest\x1a).mavsdk.rpc.telemetry.GroundTruthResponse"\x00\x30\x01\x12\x87\x01\n\x19SubscribeFixedwingMetrics\x12\x36.mavsdk.rpc.telemetry.SubscribeFixedwingMetricsRequest\x1a..mavsdk.rpc.telemetry.FixedwingMetricsResponse"\x00\x30\x01\x12`\n\x0cSubscribeImu\x12).mavsdk.rpc.telemetry.SubscribeImuRequest\x1a!.mavsdk.rpc.telemetry.ImuResponse"\x00\x30\x01\x12r\n\x12SubscribeScaledImu\x12/.mavsdk.rpc.telemetry.SubscribeScaledImuRequest\x1a\'.mavsdk.rpc.telemetry.ScaledImuResponse"\x00\x30\x01\x12i\n\x0fSubscribeRawImu\x12,.mavsdk.rpc.telemetry.SubscribeRawImuRequest\x1a$.mavsdk.rpc.telemetry.RawImuResponse"\x00\x30\x01\x12x\n\x14SubscribeHealthAllOk\x12\x31.mavsdk.rpc.telemetry.SubscribeHealthAllOkRequest\x1a).mavsdk.rpc.telemetry.HealthAllOkResponse"\x00\x30\x01\x12~\n\x16SubscribeUnixEpochTime\x12\x33.mavsdk.rpc.telemetry.SubscribeUnixEpochTimeRequest\x1a+.mavsdk.rpc.telemetry.UnixEpochTimeResponse"\x00\x30\x01\x12\x81\x01\n\x17SubscribeDistanceSensor\x12\x34.mavsdk.rpc.telemetry.SubscribeDistanceSensorRequest\x1a,.mavsdk.rpc.telemetry.DistanceSensorResponse"\x00\x30\x01\x12\x81\x01\n\x17SubscribeScaledPressure\x12\x34.mavsdk.rpc.telemetry.SubscribeScaledPressureRequest\x1a,.mavsdk.rpc.telemetry.ScaledPressureResponse"\x00\x30\x01\x12l\n\x10SubscribeHeading\x12-.mavsdk.rpc.telemetry.SubscribeHeadingRequest\x1a%.mavsdk.rpc.telemetry.HeadingResponse"\x00\x30\x01\x12o\n\x11SubscribeAltitude\x12..mavsdk.rpc.telemetry.SubscribeAltitudeRequest\x1a&.mavsdk.rpc.telemetry.AltitudeResponse"\x00\x30\x01\x12\x63\n\rSubscribeWind\x12*.mavsdk.rpc.telemetry.SubscribeWindRequest\x1a".mavsdk.rpc.telemetry.WindResponse"\x00\x30\x01\x12p\n\x0fSetRatePosition\x12,.mavsdk.rpc.telemetry.SetRatePositionRequest\x1a-.mavsdk.rpc.telemetry.SetRatePositionResponse"\x00\x12\x64\n\x0bSetRateHome\x12(.mavsdk.rpc.telemetry.SetRateHomeRequest\x1a).mavsdk.rpc.telemetry.SetRateHomeResponse"\x00\x12g\n\x0cSetRateInAir\x12).mavsdk.rpc.telemetry.SetRateInAirRequest\x1a*.mavsdk.rpc.telemetry.SetRateInAirResponse"\x00\x12y\n\x12SetRateLandedState\x12/.mavsdk.rpc.telemetry.SetRateLandedStateRequest\x1a\x30.mavsdk.rpc.telemetry.SetRateLandedStateResponse"\x00\x12s\n\x10SetRateVtolState\x12-.mavsdk.rpc.telemetry.SetRateVtolStateRequest\x1a..mavsdk.rpc.telemetry.SetRateVtolStateResponse"\x00\x12\x8e\x01\n\x19SetRateAttitudeQuaternion\x12\x36.mavsdk.rpc.telemetry.SetRateAttitudeQuaternionRequest\x1a\x37.mavsdk.rpc.telemetry.SetRateAttitudeQuaternionResponse"\x00\x12\x7f\n\x14SetRateAttitudeEuler\x12\x31.mavsdk.rpc.telemetry.SetRateAttitudeEulerRequest\x1a\x32.mavsdk.rpc.telemetry.SetRateAttitudeEulerResponse"\x00\x12y\n\x12SetRateVelocityNed\x12/.mavsdk.rpc.telemetry.SetRateVelocityNedRequest\x1a\x30.mavsdk.rpc.telemetry.SetRateVelocityNedResponse"\x00\x12m\n\x0eSetRateGpsInfo\x12+.mavsdk.rpc.telemetry.SetRateGpsInfoRequest\x1a,.mavsdk.rpc.telemetry.SetRateGpsInfoResponse"\x00\x12j\n\rSetRateRawGps\x12*.mavsdk.rpc.telemetry.SetRateRawGpsRequest\x1a+.mavsdk.rpc.telemetry.SetRateRawGpsResponse"\x00\x12m\n\x0eSetRateBattery\x12+.mavsdk.rpc.telemetry.SetRateBatteryRequest\x1a,.mavsdk.rpc.telemetry.SetRateBatteryResponse"\x00\x12p\n\x0fSetRateRcStatus\x12,.mavsdk.rpc.telemetry.SetRateRcStatusRequest\x1a-.mavsdk.rpc.telemetry.SetRateRcStatusResponse"\x00\x12\x97\x01\n\x1cSetRateActuatorControlTarget\x12\x39.mavsdk.rpc.telemetry.SetRateActuatorControlTargetRequest\x1a:.mavsdk.rpc.telemetry.SetRateActuatorControlTargetResponse"\x00\x12\x94\x01\n\x1bSetRateActuatorOutputStatus\x12\x38.mavsdk.rpc.telemetry.SetRateActuatorOutputStatusRequest\x1a\x39.mavsdk.rpc.telemetry.SetRateActuatorOutputStatusResponse"\x00\x12p\n\x0fSetRateOdometry\x12,.mavsdk.rpc.telemetry.SetRateOdometryRequest\x1a-.mavsdk.rpc.telemetry.SetRateOdometryResponse"\x00\x12\x91\x01\n\x1aSetRatePositionVelocityNed\x12\x37.mavsdk.rpc.telemetry.SetRatePositionVelocityNedRequest\x1a\x38.mavsdk.rpc.telemetry.SetRatePositionVelocityNedResponse"\x00\x12y\n\x12SetRateGroundTruth\x12/.mavsdk.rpc.telemetry.SetRateGroundTruthRequest\x1a\x30.mavsdk.rpc.telemetry.SetRateGroundTruthResponse"\x00\x12\x88\x01\n\x17SetRateFixedwingMetrics\x12\x34.mavsdk.rpc.telemetry.SetRateFixedwingMetricsRequest\x1a\x35.mavsdk.rpc.telemetry.SetRateFixedwingMetricsResponse"\x00\x12\x61\n\nSetRateImu\x12\'.mavsdk.rpc.telemetry.SetRateImuRequest\x1a(.mavsdk.rpc.telemetry.SetRateImuResponse"\x00\x12s\n\x10SetRateScaledImu\x12-.mavsdk.rpc.telemetry.SetRateScaledImuRequest\x1a..mavsdk.rpc.telemetry.SetRateScaledImuResponse"\x00\x12j\n\rSetRateRawImu\x12*.mavsdk.rpc.telemetry.SetRateRawImuRequest\x1a+.mavsdk.rpc.telemetry.SetRateRawImuResponse"\x00\x12\x7f\n\x14SetRateUnixEpochTime\x12\x31.mavsdk.rpc.telemetry.SetRateUnixEpochTimeRequest\x1a\x32.mavsdk.rpc.telemetry.SetRateUnixEpochTimeResponse"\x00\x12\x82\x01\n\x15SetRateDistanceSensor\x12\x32.mavsdk.rpc.telemetry.SetRateDistanceSensorRequest\x1a\x33.mavsdk.rpc.telemetry.SetRateDistanceSensorResponse"\x00\x12p\n\x0fSetRateAltitude\x12,.mavsdk.rpc.telemetry.SetRateAltitudeRequest\x1a-.mavsdk.rpc.telemetry.SetRateAltitudeResponse"\x00\x12j\n\rSetRateHealth\x12*.mavsdk.rpc.telemetry.SetRateHealthRequest\x1a+.mavsdk.rpc.telemetry.SetRateHealthResponse"\x00\x12y\n\x12GetGpsGlobalOrigin\x12/.mavsdk.rpc.telemetry.GetGpsGlobalOriginRequest\x1a\x30.mavsdk.rpc.telemetry.GetGpsGlobalOriginResponse"\x00\x42%\n\x13io.mavsdk.telemetryB\x0eTelemetryProtob\x06proto3' ) _globals = globals() @@ -70,6 +70,50 @@ _globals["_QUATERNION"].fields_by_name[ "z" ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["latitude_deg"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "latitude_deg" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["longitude_deg"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "longitude_deg" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name[ + "absolute_altitude_m" + ]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "absolute_altitude_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name[ + "relative_altitude_m" + ]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "relative_altitude_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["local_north_m"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "local_north_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["local_east_m"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "local_east_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["local_down_m"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "local_down_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["approach_north_m"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "approach_north_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["approach_east_m"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "approach_east_m" + ]._serialized_options = b"\202\265\030\003NaN" + _globals["_HOMEPOSITION"].fields_by_name["approach_down_m"]._loaded_options = None + _globals["_HOMEPOSITION"].fields_by_name[ + "approach_down_m" + ]._serialized_options = b"\202\265\030\003NaN" _globals["_EULERANGLE"].fields_by_name["roll_deg"]._loaded_options = None _globals["_EULERANGLE"].fields_by_name[ "roll_deg" @@ -376,18 +420,18 @@ _globals["_WIND"].fields_by_name[ "vertical_wind_speed_accuracy_m_s" ]._serialized_options = b"\202\265\030\003NaN" - _globals["_FIXTYPE"]._serialized_start = 12726 - _globals["_FIXTYPE"]._serialized_end = 12890 - _globals["_BATTERYFUNCTION"]._serialized_start = 12893 - _globals["_BATTERYFUNCTION"]._serialized_end = 13060 - _globals["_FLIGHTMODE"]._serialized_start = 13063 - _globals["_FLIGHTMODE"]._serialized_end = 13453 - _globals["_STATUSTEXTTYPE"]._serialized_start = 13456 - _globals["_STATUSTEXTTYPE"]._serialized_end = 13705 - _globals["_LANDEDSTATE"]._serialized_start = 13708 - _globals["_LANDEDSTATE"]._serialized_end = 13855 - _globals["_VTOLSTATE"]._serialized_start = 13858 - _globals["_VTOLSTATE"]._serialized_end = 13999 + _globals["_FIXTYPE"]._serialized_start = 13150 + _globals["_FIXTYPE"]._serialized_end = 13314 + _globals["_BATTERYFUNCTION"]._serialized_start = 13317 + _globals["_BATTERYFUNCTION"]._serialized_end = 13484 + _globals["_FLIGHTMODE"]._serialized_start = 13487 + _globals["_FLIGHTMODE"]._serialized_end = 13877 + _globals["_STATUSTEXTTYPE"]._serialized_start = 13880 + _globals["_STATUSTEXTTYPE"]._serialized_end = 14129 + _globals["_LANDEDSTATE"]._serialized_start = 14132 + _globals["_LANDEDSTATE"]._serialized_end = 14279 + _globals["_VTOLSTATE"]._serialized_start = 14282 + _globals["_VTOLSTATE"]._serialized_end = 14423 _globals["_SUBSCRIBEPOSITIONREQUEST"]._serialized_start = 73 _globals["_SUBSCRIBEPOSITIONREQUEST"]._serialized_end = 99 _globals["_POSITIONRESPONSE"]._serialized_start = 101 @@ -395,307 +439,309 @@ _globals["_SUBSCRIBEHOMEREQUEST"]._serialized_start = 171 _globals["_SUBSCRIBEHOMEREQUEST"]._serialized_end = 193 _globals["_HOMERESPONSE"]._serialized_start = 195 - _globals["_HOMERESPONSE"]._serialized_end = 255 - _globals["_SUBSCRIBEINAIRREQUEST"]._serialized_start = 257 - _globals["_SUBSCRIBEINAIRREQUEST"]._serialized_end = 280 - _globals["_INAIRRESPONSE"]._serialized_start = 282 - _globals["_INAIRRESPONSE"]._serialized_end = 316 - _globals["_SUBSCRIBELANDEDSTATEREQUEST"]._serialized_start = 318 - _globals["_SUBSCRIBELANDEDSTATEREQUEST"]._serialized_end = 347 - _globals["_LANDEDSTATERESPONSE"]._serialized_start = 349 - _globals["_LANDEDSTATERESPONSE"]._serialized_end = 427 - _globals["_SUBSCRIBEARMEDREQUEST"]._serialized_start = 429 - _globals["_SUBSCRIBEARMEDREQUEST"]._serialized_end = 452 - _globals["_ARMEDRESPONSE"]._serialized_start = 454 - _globals["_ARMEDRESPONSE"]._serialized_end = 487 - _globals["_SUBSCRIBEVTOLSTATEREQUEST"]._serialized_start = 489 - _globals["_SUBSCRIBEVTOLSTATEREQUEST"]._serialized_end = 516 - _globals["_VTOLSTATERESPONSE"]._serialized_start = 518 - _globals["_VTOLSTATERESPONSE"]._serialized_end = 590 - _globals["_SUBSCRIBEATTITUDEQUATERNIONREQUEST"]._serialized_start = 592 - _globals["_SUBSCRIBEATTITUDEQUATERNIONREQUEST"]._serialized_end = 628 - _globals["_ATTITUDEQUATERNIONRESPONSE"]._serialized_start = 630 - _globals["_ATTITUDEQUATERNIONRESPONSE"]._serialized_end = 721 - _globals["_SUBSCRIBEATTITUDEEULERREQUEST"]._serialized_start = 723 - _globals["_SUBSCRIBEATTITUDEEULERREQUEST"]._serialized_end = 754 - _globals["_ATTITUDEEULERRESPONSE"]._serialized_start = 756 - _globals["_ATTITUDEEULERRESPONSE"]._serialized_end = 837 - _globals["_SUBSCRIBEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_start = 839 - _globals["_SUBSCRIBEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_end = 884 - _globals["_ATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_start = 886 - _globals["_ATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_end = 1006 - _globals["_SUBSCRIBEVELOCITYNEDREQUEST"]._serialized_start = 1008 - _globals["_SUBSCRIBEVELOCITYNEDREQUEST"]._serialized_end = 1037 - _globals["_VELOCITYNEDRESPONSE"]._serialized_start = 1039 - _globals["_VELOCITYNEDRESPONSE"]._serialized_end = 1117 - _globals["_SUBSCRIBEGPSINFOREQUEST"]._serialized_start = 1119 - _globals["_SUBSCRIBEGPSINFOREQUEST"]._serialized_end = 1144 - _globals["_GPSINFORESPONSE"]._serialized_start = 1146 - _globals["_GPSINFORESPONSE"]._serialized_end = 1212 - _globals["_SUBSCRIBERAWGPSREQUEST"]._serialized_start = 1214 - _globals["_SUBSCRIBERAWGPSREQUEST"]._serialized_end = 1238 - _globals["_RAWGPSRESPONSE"]._serialized_start = 1240 - _globals["_RAWGPSRESPONSE"]._serialized_end = 1303 - _globals["_SUBSCRIBEBATTERYREQUEST"]._serialized_start = 1305 - _globals["_SUBSCRIBEBATTERYREQUEST"]._serialized_end = 1330 - _globals["_BATTERYRESPONSE"]._serialized_start = 1332 - _globals["_BATTERYRESPONSE"]._serialized_end = 1397 - _globals["_SUBSCRIBEFLIGHTMODEREQUEST"]._serialized_start = 1399 - _globals["_SUBSCRIBEFLIGHTMODEREQUEST"]._serialized_end = 1427 - _globals["_FLIGHTMODERESPONSE"]._serialized_start = 1429 - _globals["_FLIGHTMODERESPONSE"]._serialized_end = 1504 - _globals["_SUBSCRIBEHEALTHREQUEST"]._serialized_start = 1506 - _globals["_SUBSCRIBEHEALTHREQUEST"]._serialized_end = 1530 - _globals["_HEALTHRESPONSE"]._serialized_start = 1532 - _globals["_HEALTHRESPONSE"]._serialized_end = 1594 - _globals["_SUBSCRIBERCSTATUSREQUEST"]._serialized_start = 1596 - _globals["_SUBSCRIBERCSTATUSREQUEST"]._serialized_end = 1622 - _globals["_RCSTATUSRESPONSE"]._serialized_start = 1624 - _globals["_RCSTATUSRESPONSE"]._serialized_end = 1693 - _globals["_SUBSCRIBESTATUSTEXTREQUEST"]._serialized_start = 1695 - _globals["_SUBSCRIBESTATUSTEXTREQUEST"]._serialized_end = 1723 - _globals["_STATUSTEXTRESPONSE"]._serialized_start = 1725 - _globals["_STATUSTEXTRESPONSE"]._serialized_end = 1800 - _globals["_SUBSCRIBEACTUATORCONTROLTARGETREQUEST"]._serialized_start = 1802 - _globals["_SUBSCRIBEACTUATORCONTROLTARGETREQUEST"]._serialized_end = 1841 - _globals["_ACTUATORCONTROLTARGETRESPONSE"]._serialized_start = 1843 - _globals["_ACTUATORCONTROLTARGETRESPONSE"]._serialized_end = 1952 - _globals["_SUBSCRIBEACTUATOROUTPUTSTATUSREQUEST"]._serialized_start = 1954 - _globals["_SUBSCRIBEACTUATOROUTPUTSTATUSREQUEST"]._serialized_end = 1992 - _globals["_ACTUATOROUTPUTSTATUSRESPONSE"]._serialized_start = 1994 - _globals["_ACTUATOROUTPUTSTATUSRESPONSE"]._serialized_end = 2100 - _globals["_SUBSCRIBEODOMETRYREQUEST"]._serialized_start = 2102 - _globals["_SUBSCRIBEODOMETRYREQUEST"]._serialized_end = 2128 - _globals["_ODOMETRYRESPONSE"]._serialized_start = 2130 - _globals["_ODOMETRYRESPONSE"]._serialized_end = 2198 - _globals["_SUBSCRIBEPOSITIONVELOCITYNEDREQUEST"]._serialized_start = 2200 - _globals["_SUBSCRIBEPOSITIONVELOCITYNEDREQUEST"]._serialized_end = 2237 - _globals["_POSITIONVELOCITYNEDRESPONSE"]._serialized_start = 2239 - _globals["_POSITIONVELOCITYNEDRESPONSE"]._serialized_end = 2342 - _globals["_SUBSCRIBEGROUNDTRUTHREQUEST"]._serialized_start = 2344 - _globals["_SUBSCRIBEGROUNDTRUTHREQUEST"]._serialized_end = 2373 - _globals["_GROUNDTRUTHRESPONSE"]._serialized_start = 2375 - _globals["_GROUNDTRUTHRESPONSE"]._serialized_end = 2453 - _globals["_SUBSCRIBEFIXEDWINGMETRICSREQUEST"]._serialized_start = 2455 - _globals["_SUBSCRIBEFIXEDWINGMETRICSREQUEST"]._serialized_end = 2489 - _globals["_FIXEDWINGMETRICSRESPONSE"]._serialized_start = 2491 - _globals["_FIXEDWINGMETRICSRESPONSE"]._serialized_end = 2584 - _globals["_SUBSCRIBEIMUREQUEST"]._serialized_start = 2586 - _globals["_SUBSCRIBEIMUREQUEST"]._serialized_end = 2607 - _globals["_IMURESPONSE"]._serialized_start = 2609 - _globals["_IMURESPONSE"]._serialized_end = 2662 - _globals["_SUBSCRIBESCALEDIMUREQUEST"]._serialized_start = 2664 - _globals["_SUBSCRIBESCALEDIMUREQUEST"]._serialized_end = 2691 - _globals["_SCALEDIMURESPONSE"]._serialized_start = 2693 - _globals["_SCALEDIMURESPONSE"]._serialized_end = 2752 - _globals["_SUBSCRIBERAWIMUREQUEST"]._serialized_start = 2754 - _globals["_SUBSCRIBERAWIMUREQUEST"]._serialized_end = 2778 - _globals["_RAWIMURESPONSE"]._serialized_start = 2780 - _globals["_RAWIMURESPONSE"]._serialized_end = 2836 - _globals["_SUBSCRIBEHEALTHALLOKREQUEST"]._serialized_start = 2838 - _globals["_SUBSCRIBEHEALTHALLOKREQUEST"]._serialized_end = 2867 - _globals["_HEALTHALLOKRESPONSE"]._serialized_start = 2869 - _globals["_HEALTHALLOKRESPONSE"]._serialized_end = 2916 - _globals["_SUBSCRIBEUNIXEPOCHTIMEREQUEST"]._serialized_start = 2918 - _globals["_SUBSCRIBEUNIXEPOCHTIMEREQUEST"]._serialized_end = 2949 - _globals["_UNIXEPOCHTIMERESPONSE"]._serialized_start = 2951 - _globals["_UNIXEPOCHTIMERESPONSE"]._serialized_end = 2991 - _globals["_SUBSCRIBEDISTANCESENSORREQUEST"]._serialized_start = 2993 - _globals["_SUBSCRIBEDISTANCESENSORREQUEST"]._serialized_end = 3025 - _globals["_DISTANCESENSORRESPONSE"]._serialized_start = 3027 - _globals["_DISTANCESENSORRESPONSE"]._serialized_end = 3114 - _globals["_SUBSCRIBESCALEDPRESSUREREQUEST"]._serialized_start = 3116 - _globals["_SUBSCRIBESCALEDPRESSUREREQUEST"]._serialized_end = 3148 - _globals["_SCALEDPRESSURERESPONSE"]._serialized_start = 3150 - _globals["_SCALEDPRESSURERESPONSE"]._serialized_end = 3237 - _globals["_SUBSCRIBEHEADINGREQUEST"]._serialized_start = 3239 - _globals["_SUBSCRIBEHEADINGREQUEST"]._serialized_end = 3264 - _globals["_HEADINGRESPONSE"]._serialized_start = 3266 - _globals["_HEADINGRESPONSE"]._serialized_end = 3335 - _globals["_SUBSCRIBEALTITUDEREQUEST"]._serialized_start = 3337 - _globals["_SUBSCRIBEALTITUDEREQUEST"]._serialized_end = 3363 - _globals["_ALTITUDERESPONSE"]._serialized_start = 3365 - _globals["_ALTITUDERESPONSE"]._serialized_end = 3433 - _globals["_SUBSCRIBEWINDREQUEST"]._serialized_start = 3435 - _globals["_SUBSCRIBEWINDREQUEST"]._serialized_end = 3457 - _globals["_WINDRESPONSE"]._serialized_start = 3459 - _globals["_WINDRESPONSE"]._serialized_end = 3515 - _globals["_SETRATEPOSITIONREQUEST"]._serialized_start = 3517 - _globals["_SETRATEPOSITIONREQUEST"]._serialized_end = 3558 - _globals["_SETRATEPOSITIONRESPONSE"]._serialized_start = 3560 - _globals["_SETRATEPOSITIONRESPONSE"]._serialized_end = 3650 - _globals["_SETRATEHOMEREQUEST"]._serialized_start = 3652 - _globals["_SETRATEHOMEREQUEST"]._serialized_end = 3689 - _globals["_SETRATEHOMERESPONSE"]._serialized_start = 3691 - _globals["_SETRATEHOMERESPONSE"]._serialized_end = 3777 - _globals["_SETRATEINAIRREQUEST"]._serialized_start = 3779 - _globals["_SETRATEINAIRREQUEST"]._serialized_end = 3817 - _globals["_SETRATEINAIRRESPONSE"]._serialized_start = 3819 - _globals["_SETRATEINAIRRESPONSE"]._serialized_end = 3906 - _globals["_SETRATELANDEDSTATEREQUEST"]._serialized_start = 3908 - _globals["_SETRATELANDEDSTATEREQUEST"]._serialized_end = 3952 - _globals["_SETRATELANDEDSTATERESPONSE"]._serialized_start = 3954 - _globals["_SETRATELANDEDSTATERESPONSE"]._serialized_end = 4047 - _globals["_SETRATEVTOLSTATEREQUEST"]._serialized_start = 4049 - _globals["_SETRATEVTOLSTATEREQUEST"]._serialized_end = 4091 - _globals["_SETRATEVTOLSTATERESPONSE"]._serialized_start = 4093 - _globals["_SETRATEVTOLSTATERESPONSE"]._serialized_end = 4184 - _globals["_SETRATEATTITUDEEULERREQUEST"]._serialized_start = 4186 - _globals["_SETRATEATTITUDEEULERREQUEST"]._serialized_end = 4232 - _globals["_SETRATEATTITUDEEULERRESPONSE"]._serialized_start = 4234 - _globals["_SETRATEATTITUDEEULERRESPONSE"]._serialized_end = 4329 - _globals["_SETRATEATTITUDEQUATERNIONREQUEST"]._serialized_start = 4331 - _globals["_SETRATEATTITUDEQUATERNIONREQUEST"]._serialized_end = 4382 - _globals["_SETRATEATTITUDEQUATERNIONRESPONSE"]._serialized_start = 4384 - _globals["_SETRATEATTITUDEQUATERNIONRESPONSE"]._serialized_end = 4484 - _globals["_SETRATEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_start = 4486 - _globals["_SETRATEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_end = 4546 - _globals["_SETRATEATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_start = 4548 - _globals["_SETRATEATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_end = 4657 - _globals["_SETRATEVELOCITYNEDREQUEST"]._serialized_start = 4659 - _globals["_SETRATEVELOCITYNEDREQUEST"]._serialized_end = 4703 - _globals["_SETRATEVELOCITYNEDRESPONSE"]._serialized_start = 4705 - _globals["_SETRATEVELOCITYNEDRESPONSE"]._serialized_end = 4798 - _globals["_SETRATEGPSINFOREQUEST"]._serialized_start = 4800 - _globals["_SETRATEGPSINFOREQUEST"]._serialized_end = 4840 - _globals["_SETRATEGPSINFORESPONSE"]._serialized_start = 4842 - _globals["_SETRATEGPSINFORESPONSE"]._serialized_end = 4931 - _globals["_SETRATERAWGPSREQUEST"]._serialized_start = 4933 - _globals["_SETRATERAWGPSREQUEST"]._serialized_end = 4972 - _globals["_SETRATERAWGPSRESPONSE"]._serialized_start = 4974 - _globals["_SETRATERAWGPSRESPONSE"]._serialized_end = 5062 - _globals["_SETRATEBATTERYREQUEST"]._serialized_start = 5064 - _globals["_SETRATEBATTERYREQUEST"]._serialized_end = 5104 - _globals["_SETRATEBATTERYRESPONSE"]._serialized_start = 5106 - _globals["_SETRATEBATTERYRESPONSE"]._serialized_end = 5195 - _globals["_SETRATERCSTATUSREQUEST"]._serialized_start = 5197 - _globals["_SETRATERCSTATUSREQUEST"]._serialized_end = 5238 - _globals["_SETRATERCSTATUSRESPONSE"]._serialized_start = 5240 - _globals["_SETRATERCSTATUSRESPONSE"]._serialized_end = 5330 - _globals["_SETRATEACTUATORCONTROLTARGETREQUEST"]._serialized_start = 5332 - _globals["_SETRATEACTUATORCONTROLTARGETREQUEST"]._serialized_end = 5386 - _globals["_SETRATEACTUATORCONTROLTARGETRESPONSE"]._serialized_start = 5388 - _globals["_SETRATEACTUATORCONTROLTARGETRESPONSE"]._serialized_end = 5491 - _globals["_SETRATEACTUATOROUTPUTSTATUSREQUEST"]._serialized_start = 5493 - _globals["_SETRATEACTUATOROUTPUTSTATUSREQUEST"]._serialized_end = 5546 - _globals["_SETRATEACTUATOROUTPUTSTATUSRESPONSE"]._serialized_start = 5548 - _globals["_SETRATEACTUATOROUTPUTSTATUSRESPONSE"]._serialized_end = 5650 - _globals["_SETRATEODOMETRYREQUEST"]._serialized_start = 5652 - _globals["_SETRATEODOMETRYREQUEST"]._serialized_end = 5693 - _globals["_SETRATEODOMETRYRESPONSE"]._serialized_start = 5695 - _globals["_SETRATEODOMETRYRESPONSE"]._serialized_end = 5785 - _globals["_SETRATEPOSITIONVELOCITYNEDREQUEST"]._serialized_start = 5787 - _globals["_SETRATEPOSITIONVELOCITYNEDREQUEST"]._serialized_end = 5839 - _globals["_SETRATEPOSITIONVELOCITYNEDRESPONSE"]._serialized_start = 5841 - _globals["_SETRATEPOSITIONVELOCITYNEDRESPONSE"]._serialized_end = 5942 - _globals["_SETRATEGROUNDTRUTHREQUEST"]._serialized_start = 5944 - _globals["_SETRATEGROUNDTRUTHREQUEST"]._serialized_end = 5988 - _globals["_SETRATEGROUNDTRUTHRESPONSE"]._serialized_start = 5990 - _globals["_SETRATEGROUNDTRUTHRESPONSE"]._serialized_end = 6083 - _globals["_SETRATEFIXEDWINGMETRICSREQUEST"]._serialized_start = 6085 - _globals["_SETRATEFIXEDWINGMETRICSREQUEST"]._serialized_end = 6134 - _globals["_SETRATEFIXEDWINGMETRICSRESPONSE"]._serialized_start = 6136 - _globals["_SETRATEFIXEDWINGMETRICSRESPONSE"]._serialized_end = 6234 - _globals["_SETRATEIMUREQUEST"]._serialized_start = 6236 - _globals["_SETRATEIMUREQUEST"]._serialized_end = 6272 - _globals["_SETRATEIMURESPONSE"]._serialized_start = 6274 - _globals["_SETRATEIMURESPONSE"]._serialized_end = 6359 - _globals["_SETRATESCALEDIMUREQUEST"]._serialized_start = 6361 - _globals["_SETRATESCALEDIMUREQUEST"]._serialized_end = 6403 - _globals["_SETRATESCALEDIMURESPONSE"]._serialized_start = 6405 - _globals["_SETRATESCALEDIMURESPONSE"]._serialized_end = 6496 - _globals["_SETRATERAWIMUREQUEST"]._serialized_start = 6498 - _globals["_SETRATERAWIMUREQUEST"]._serialized_end = 6537 - _globals["_SETRATERAWIMURESPONSE"]._serialized_start = 6539 - _globals["_SETRATERAWIMURESPONSE"]._serialized_end = 6627 - _globals["_SETRATEUNIXEPOCHTIMEREQUEST"]._serialized_start = 6629 - _globals["_SETRATEUNIXEPOCHTIMEREQUEST"]._serialized_end = 6675 - _globals["_SETRATEUNIXEPOCHTIMERESPONSE"]._serialized_start = 6677 - _globals["_SETRATEUNIXEPOCHTIMERESPONSE"]._serialized_end = 6772 - _globals["_SETRATEDISTANCESENSORREQUEST"]._serialized_start = 6774 - _globals["_SETRATEDISTANCESENSORREQUEST"]._serialized_end = 6821 - _globals["_SETRATEDISTANCESENSORRESPONSE"]._serialized_start = 6823 - _globals["_SETRATEDISTANCESENSORRESPONSE"]._serialized_end = 6919 - _globals["_GETGPSGLOBALORIGINREQUEST"]._serialized_start = 6921 - _globals["_GETGPSGLOBALORIGINREQUEST"]._serialized_end = 6948 - _globals["_GETGPSGLOBALORIGINRESPONSE"]._serialized_start = 6951 - _globals["_GETGPSGLOBALORIGINRESPONSE"]._serialized_end = 7110 - _globals["_SETRATEALTITUDEREQUEST"]._serialized_start = 7112 - _globals["_SETRATEALTITUDEREQUEST"]._serialized_end = 7153 - _globals["_SETRATEALTITUDERESPONSE"]._serialized_start = 7155 - _globals["_SETRATEALTITUDERESPONSE"]._serialized_end = 7245 - _globals["_SETRATEHEALTHREQUEST"]._serialized_start = 7247 - _globals["_SETRATEHEALTHREQUEST"]._serialized_end = 7286 - _globals["_SETRATEHEALTHRESPONSE"]._serialized_start = 7288 - _globals["_SETRATEHEALTHRESPONSE"]._serialized_end = 7376 - _globals["_POSITION"]._serialized_start = 7379 - _globals["_POSITION"]._serialized_end = 7528 - _globals["_HEADING"]._serialized_start = 7530 - _globals["_HEADING"]._serialized_end = 7569 - _globals["_QUATERNION"]._serialized_start = 7571 - _globals["_QUATERNION"]._serialized_end = 7685 - _globals["_EULERANGLE"]._serialized_start = 7687 - _globals["_EULERANGLE"]._serialized_end = 7802 - _globals["_ANGULARVELOCITYBODY"]._serialized_start = 7804 - _globals["_ANGULARVELOCITYBODY"]._serialized_end = 7912 - _globals["_GPSINFO"]._serialized_start = 7914 - _globals["_GPSINFO"]._serialized_end = 8003 - _globals["_RAWGPS"]._serialized_start = 8006 - _globals["_RAWGPS"]._serialized_end = 8357 - _globals["_BATTERY"]._serialized_start = 8360 - _globals["_BATTERY"]._serialized_end = 8662 - _globals["_HEALTH"]._serialized_start = 8665 - _globals["_HEALTH"]._serialized_end = 8978 - _globals["_RCSTATUS"]._serialized_start = 8980 - _globals["_RCSTATUS"]._serialized_end = 9104 - _globals["_STATUSTEXT"]._serialized_start = 9106 - _globals["_STATUSTEXT"]._serialized_end = 9184 - _globals["_ACTUATORCONTROLTARGET"]._serialized_start = 9186 - _globals["_ACTUATORCONTROLTARGET"]._serialized_end = 9249 - _globals["_ACTUATOROUTPUTSTATUS"]._serialized_start = 9251 - _globals["_ACTUATOROUTPUTSTATUS"]._serialized_end = 9314 - _globals["_COVARIANCE"]._serialized_start = 9316 - _globals["_COVARIANCE"]._serialized_end = 9355 - _globals["_VELOCITYBODY"]._serialized_start = 9357 - _globals["_VELOCITYBODY"]._serialized_end = 9416 - _globals["_POSITIONBODY"]._serialized_start = 9418 - _globals["_POSITIONBODY"]._serialized_end = 9471 - _globals["_ODOMETRY"]._serialized_start = 9474 - _globals["_ODOMETRY"]._serialized_end = 10094 - _globals["_ODOMETRY_MAVFRAME"]._serialized_start = 9988 - _globals["_ODOMETRY_MAVFRAME"]._serialized_end = 10094 - _globals["_DISTANCESENSOR"]._serialized_start = 10097 - _globals["_DISTANCESENSOR"]._serialized_end = 10279 - _globals["_SCALEDPRESSURE"]._serialized_start = 10282 - _globals["_SCALEDPRESSURE"]._serialized_end = 10458 - _globals["_POSITIONNED"]._serialized_start = 10460 - _globals["_POSITIONNED"]._serialized_end = 10549 - _globals["_VELOCITYNED"]._serialized_start = 10551 - _globals["_VELOCITYNED"]._serialized_end = 10619 - _globals["_POSITIONVELOCITYNED"]._serialized_start = 10621 - _globals["_POSITIONVELOCITYNED"]._serialized_end = 10748 - _globals["_GROUNDTRUTH"]._serialized_start = 10751 - _globals["_GROUNDTRUTH"]._serialized_end = 10887 - _globals["_FIXEDWINGMETRICS"]._serialized_start = 10890 - _globals["_FIXEDWINGMETRICS"]._serialized_end = 11112 - _globals["_ACCELERATIONFRD"]._serialized_start = 11114 - _globals["_ACCELERATIONFRD"]._serialized_end = 11219 - _globals["_ANGULARVELOCITYFRD"]._serialized_start = 11221 - _globals["_ANGULARVELOCITYFRD"]._serialized_end = 11332 - _globals["_MAGNETICFIELDFRD"]._serialized_start = 11334 - _globals["_MAGNETICFIELDFRD"]._serialized_end = 11443 - _globals["_IMU"]._serialized_start = 11446 - _globals["_IMU"]._serialized_end = 11713 - _globals["_GPSGLOBALORIGIN"]._serialized_start = 11715 - _globals["_GPSGLOBALORIGIN"]._serialized_end = 11824 - _globals["_ALTITUDE"]._serialized_start = 11827 - _globals["_ALTITUDE"]._serialized_end = 12079 - _globals["_WIND"]._serialized_start = 12082 - _globals["_WIND"]._serialized_end = 12431 - _globals["_TELEMETRYRESULT"]._serialized_start = 12434 - _globals["_TELEMETRYRESULT"]._serialized_end = 12723 - _globals["_TELEMETRYRESULT_RESULT"]._serialized_start = 12536 - _globals["_TELEMETRYRESULT_RESULT"]._serialized_end = 12723 - _globals["_TELEMETRYSERVICE"]._serialized_start = 14002 - _globals["_TELEMETRYSERVICE"]._serialized_end = 21174 + _globals["_HOMERESPONSE"]._serialized_end = 259 + _globals["_SUBSCRIBEINAIRREQUEST"]._serialized_start = 261 + _globals["_SUBSCRIBEINAIRREQUEST"]._serialized_end = 284 + _globals["_INAIRRESPONSE"]._serialized_start = 286 + _globals["_INAIRRESPONSE"]._serialized_end = 320 + _globals["_SUBSCRIBELANDEDSTATEREQUEST"]._serialized_start = 322 + _globals["_SUBSCRIBELANDEDSTATEREQUEST"]._serialized_end = 351 + _globals["_LANDEDSTATERESPONSE"]._serialized_start = 353 + _globals["_LANDEDSTATERESPONSE"]._serialized_end = 431 + _globals["_SUBSCRIBEARMEDREQUEST"]._serialized_start = 433 + _globals["_SUBSCRIBEARMEDREQUEST"]._serialized_end = 456 + _globals["_ARMEDRESPONSE"]._serialized_start = 458 + _globals["_ARMEDRESPONSE"]._serialized_end = 491 + _globals["_SUBSCRIBEVTOLSTATEREQUEST"]._serialized_start = 493 + _globals["_SUBSCRIBEVTOLSTATEREQUEST"]._serialized_end = 520 + _globals["_VTOLSTATERESPONSE"]._serialized_start = 522 + _globals["_VTOLSTATERESPONSE"]._serialized_end = 594 + _globals["_SUBSCRIBEATTITUDEQUATERNIONREQUEST"]._serialized_start = 596 + _globals["_SUBSCRIBEATTITUDEQUATERNIONREQUEST"]._serialized_end = 632 + _globals["_ATTITUDEQUATERNIONRESPONSE"]._serialized_start = 634 + _globals["_ATTITUDEQUATERNIONRESPONSE"]._serialized_end = 725 + _globals["_SUBSCRIBEATTITUDEEULERREQUEST"]._serialized_start = 727 + _globals["_SUBSCRIBEATTITUDEEULERREQUEST"]._serialized_end = 758 + _globals["_ATTITUDEEULERRESPONSE"]._serialized_start = 760 + _globals["_ATTITUDEEULERRESPONSE"]._serialized_end = 841 + _globals["_SUBSCRIBEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_start = 843 + _globals["_SUBSCRIBEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_end = 888 + _globals["_ATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_start = 890 + _globals["_ATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_end = 1010 + _globals["_SUBSCRIBEVELOCITYNEDREQUEST"]._serialized_start = 1012 + _globals["_SUBSCRIBEVELOCITYNEDREQUEST"]._serialized_end = 1041 + _globals["_VELOCITYNEDRESPONSE"]._serialized_start = 1043 + _globals["_VELOCITYNEDRESPONSE"]._serialized_end = 1121 + _globals["_SUBSCRIBEGPSINFOREQUEST"]._serialized_start = 1123 + _globals["_SUBSCRIBEGPSINFOREQUEST"]._serialized_end = 1148 + _globals["_GPSINFORESPONSE"]._serialized_start = 1150 + _globals["_GPSINFORESPONSE"]._serialized_end = 1216 + _globals["_SUBSCRIBERAWGPSREQUEST"]._serialized_start = 1218 + _globals["_SUBSCRIBERAWGPSREQUEST"]._serialized_end = 1242 + _globals["_RAWGPSRESPONSE"]._serialized_start = 1244 + _globals["_RAWGPSRESPONSE"]._serialized_end = 1307 + _globals["_SUBSCRIBEBATTERYREQUEST"]._serialized_start = 1309 + _globals["_SUBSCRIBEBATTERYREQUEST"]._serialized_end = 1334 + _globals["_BATTERYRESPONSE"]._serialized_start = 1336 + _globals["_BATTERYRESPONSE"]._serialized_end = 1401 + _globals["_SUBSCRIBEFLIGHTMODEREQUEST"]._serialized_start = 1403 + _globals["_SUBSCRIBEFLIGHTMODEREQUEST"]._serialized_end = 1431 + _globals["_FLIGHTMODERESPONSE"]._serialized_start = 1433 + _globals["_FLIGHTMODERESPONSE"]._serialized_end = 1508 + _globals["_SUBSCRIBEHEALTHREQUEST"]._serialized_start = 1510 + _globals["_SUBSCRIBEHEALTHREQUEST"]._serialized_end = 1534 + _globals["_HEALTHRESPONSE"]._serialized_start = 1536 + _globals["_HEALTHRESPONSE"]._serialized_end = 1598 + _globals["_SUBSCRIBERCSTATUSREQUEST"]._serialized_start = 1600 + _globals["_SUBSCRIBERCSTATUSREQUEST"]._serialized_end = 1626 + _globals["_RCSTATUSRESPONSE"]._serialized_start = 1628 + _globals["_RCSTATUSRESPONSE"]._serialized_end = 1697 + _globals["_SUBSCRIBESTATUSTEXTREQUEST"]._serialized_start = 1699 + _globals["_SUBSCRIBESTATUSTEXTREQUEST"]._serialized_end = 1727 + _globals["_STATUSTEXTRESPONSE"]._serialized_start = 1729 + _globals["_STATUSTEXTRESPONSE"]._serialized_end = 1804 + _globals["_SUBSCRIBEACTUATORCONTROLTARGETREQUEST"]._serialized_start = 1806 + _globals["_SUBSCRIBEACTUATORCONTROLTARGETREQUEST"]._serialized_end = 1845 + _globals["_ACTUATORCONTROLTARGETRESPONSE"]._serialized_start = 1847 + _globals["_ACTUATORCONTROLTARGETRESPONSE"]._serialized_end = 1956 + _globals["_SUBSCRIBEACTUATOROUTPUTSTATUSREQUEST"]._serialized_start = 1958 + _globals["_SUBSCRIBEACTUATOROUTPUTSTATUSREQUEST"]._serialized_end = 1996 + _globals["_ACTUATOROUTPUTSTATUSRESPONSE"]._serialized_start = 1998 + _globals["_ACTUATOROUTPUTSTATUSRESPONSE"]._serialized_end = 2104 + _globals["_SUBSCRIBEODOMETRYREQUEST"]._serialized_start = 2106 + _globals["_SUBSCRIBEODOMETRYREQUEST"]._serialized_end = 2132 + _globals["_ODOMETRYRESPONSE"]._serialized_start = 2134 + _globals["_ODOMETRYRESPONSE"]._serialized_end = 2202 + _globals["_SUBSCRIBEPOSITIONVELOCITYNEDREQUEST"]._serialized_start = 2204 + _globals["_SUBSCRIBEPOSITIONVELOCITYNEDREQUEST"]._serialized_end = 2241 + _globals["_POSITIONVELOCITYNEDRESPONSE"]._serialized_start = 2243 + _globals["_POSITIONVELOCITYNEDRESPONSE"]._serialized_end = 2346 + _globals["_SUBSCRIBEGROUNDTRUTHREQUEST"]._serialized_start = 2348 + _globals["_SUBSCRIBEGROUNDTRUTHREQUEST"]._serialized_end = 2377 + _globals["_GROUNDTRUTHRESPONSE"]._serialized_start = 2379 + _globals["_GROUNDTRUTHRESPONSE"]._serialized_end = 2457 + _globals["_SUBSCRIBEFIXEDWINGMETRICSREQUEST"]._serialized_start = 2459 + _globals["_SUBSCRIBEFIXEDWINGMETRICSREQUEST"]._serialized_end = 2493 + _globals["_FIXEDWINGMETRICSRESPONSE"]._serialized_start = 2495 + _globals["_FIXEDWINGMETRICSRESPONSE"]._serialized_end = 2588 + _globals["_SUBSCRIBEIMUREQUEST"]._serialized_start = 2590 + _globals["_SUBSCRIBEIMUREQUEST"]._serialized_end = 2611 + _globals["_IMURESPONSE"]._serialized_start = 2613 + _globals["_IMURESPONSE"]._serialized_end = 2666 + _globals["_SUBSCRIBESCALEDIMUREQUEST"]._serialized_start = 2668 + _globals["_SUBSCRIBESCALEDIMUREQUEST"]._serialized_end = 2695 + _globals["_SCALEDIMURESPONSE"]._serialized_start = 2697 + _globals["_SCALEDIMURESPONSE"]._serialized_end = 2756 + _globals["_SUBSCRIBERAWIMUREQUEST"]._serialized_start = 2758 + _globals["_SUBSCRIBERAWIMUREQUEST"]._serialized_end = 2782 + _globals["_RAWIMURESPONSE"]._serialized_start = 2784 + _globals["_RAWIMURESPONSE"]._serialized_end = 2840 + _globals["_SUBSCRIBEHEALTHALLOKREQUEST"]._serialized_start = 2842 + _globals["_SUBSCRIBEHEALTHALLOKREQUEST"]._serialized_end = 2871 + _globals["_HEALTHALLOKRESPONSE"]._serialized_start = 2873 + _globals["_HEALTHALLOKRESPONSE"]._serialized_end = 2920 + _globals["_SUBSCRIBEUNIXEPOCHTIMEREQUEST"]._serialized_start = 2922 + _globals["_SUBSCRIBEUNIXEPOCHTIMEREQUEST"]._serialized_end = 2953 + _globals["_UNIXEPOCHTIMERESPONSE"]._serialized_start = 2955 + _globals["_UNIXEPOCHTIMERESPONSE"]._serialized_end = 2995 + _globals["_SUBSCRIBEDISTANCESENSORREQUEST"]._serialized_start = 2997 + _globals["_SUBSCRIBEDISTANCESENSORREQUEST"]._serialized_end = 3029 + _globals["_DISTANCESENSORRESPONSE"]._serialized_start = 3031 + _globals["_DISTANCESENSORRESPONSE"]._serialized_end = 3118 + _globals["_SUBSCRIBESCALEDPRESSUREREQUEST"]._serialized_start = 3120 + _globals["_SUBSCRIBESCALEDPRESSUREREQUEST"]._serialized_end = 3152 + _globals["_SCALEDPRESSURERESPONSE"]._serialized_start = 3154 + _globals["_SCALEDPRESSURERESPONSE"]._serialized_end = 3241 + _globals["_SUBSCRIBEHEADINGREQUEST"]._serialized_start = 3243 + _globals["_SUBSCRIBEHEADINGREQUEST"]._serialized_end = 3268 + _globals["_HEADINGRESPONSE"]._serialized_start = 3270 + _globals["_HEADINGRESPONSE"]._serialized_end = 3339 + _globals["_SUBSCRIBEALTITUDEREQUEST"]._serialized_start = 3341 + _globals["_SUBSCRIBEALTITUDEREQUEST"]._serialized_end = 3367 + _globals["_ALTITUDERESPONSE"]._serialized_start = 3369 + _globals["_ALTITUDERESPONSE"]._serialized_end = 3437 + _globals["_SUBSCRIBEWINDREQUEST"]._serialized_start = 3439 + _globals["_SUBSCRIBEWINDREQUEST"]._serialized_end = 3461 + _globals["_WINDRESPONSE"]._serialized_start = 3463 + _globals["_WINDRESPONSE"]._serialized_end = 3519 + _globals["_SETRATEPOSITIONREQUEST"]._serialized_start = 3521 + _globals["_SETRATEPOSITIONREQUEST"]._serialized_end = 3562 + _globals["_SETRATEPOSITIONRESPONSE"]._serialized_start = 3564 + _globals["_SETRATEPOSITIONRESPONSE"]._serialized_end = 3654 + _globals["_SETRATEHOMEREQUEST"]._serialized_start = 3656 + _globals["_SETRATEHOMEREQUEST"]._serialized_end = 3693 + _globals["_SETRATEHOMERESPONSE"]._serialized_start = 3695 + _globals["_SETRATEHOMERESPONSE"]._serialized_end = 3781 + _globals["_SETRATEINAIRREQUEST"]._serialized_start = 3783 + _globals["_SETRATEINAIRREQUEST"]._serialized_end = 3821 + _globals["_SETRATEINAIRRESPONSE"]._serialized_start = 3823 + _globals["_SETRATEINAIRRESPONSE"]._serialized_end = 3910 + _globals["_SETRATELANDEDSTATEREQUEST"]._serialized_start = 3912 + _globals["_SETRATELANDEDSTATEREQUEST"]._serialized_end = 3956 + _globals["_SETRATELANDEDSTATERESPONSE"]._serialized_start = 3958 + _globals["_SETRATELANDEDSTATERESPONSE"]._serialized_end = 4051 + _globals["_SETRATEVTOLSTATEREQUEST"]._serialized_start = 4053 + _globals["_SETRATEVTOLSTATEREQUEST"]._serialized_end = 4095 + _globals["_SETRATEVTOLSTATERESPONSE"]._serialized_start = 4097 + _globals["_SETRATEVTOLSTATERESPONSE"]._serialized_end = 4188 + _globals["_SETRATEATTITUDEEULERREQUEST"]._serialized_start = 4190 + _globals["_SETRATEATTITUDEEULERREQUEST"]._serialized_end = 4236 + _globals["_SETRATEATTITUDEEULERRESPONSE"]._serialized_start = 4238 + _globals["_SETRATEATTITUDEEULERRESPONSE"]._serialized_end = 4333 + _globals["_SETRATEATTITUDEQUATERNIONREQUEST"]._serialized_start = 4335 + _globals["_SETRATEATTITUDEQUATERNIONREQUEST"]._serialized_end = 4386 + _globals["_SETRATEATTITUDEQUATERNIONRESPONSE"]._serialized_start = 4388 + _globals["_SETRATEATTITUDEQUATERNIONRESPONSE"]._serialized_end = 4488 + _globals["_SETRATEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_start = 4490 + _globals["_SETRATEATTITUDEANGULARVELOCITYBODYREQUEST"]._serialized_end = 4550 + _globals["_SETRATEATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_start = 4552 + _globals["_SETRATEATTITUDEANGULARVELOCITYBODYRESPONSE"]._serialized_end = 4661 + _globals["_SETRATEVELOCITYNEDREQUEST"]._serialized_start = 4663 + _globals["_SETRATEVELOCITYNEDREQUEST"]._serialized_end = 4707 + _globals["_SETRATEVELOCITYNEDRESPONSE"]._serialized_start = 4709 + _globals["_SETRATEVELOCITYNEDRESPONSE"]._serialized_end = 4802 + _globals["_SETRATEGPSINFOREQUEST"]._serialized_start = 4804 + _globals["_SETRATEGPSINFOREQUEST"]._serialized_end = 4844 + _globals["_SETRATEGPSINFORESPONSE"]._serialized_start = 4846 + _globals["_SETRATEGPSINFORESPONSE"]._serialized_end = 4935 + _globals["_SETRATERAWGPSREQUEST"]._serialized_start = 4937 + _globals["_SETRATERAWGPSREQUEST"]._serialized_end = 4976 + _globals["_SETRATERAWGPSRESPONSE"]._serialized_start = 4978 + _globals["_SETRATERAWGPSRESPONSE"]._serialized_end = 5066 + _globals["_SETRATEBATTERYREQUEST"]._serialized_start = 5068 + _globals["_SETRATEBATTERYREQUEST"]._serialized_end = 5108 + _globals["_SETRATEBATTERYRESPONSE"]._serialized_start = 5110 + _globals["_SETRATEBATTERYRESPONSE"]._serialized_end = 5199 + _globals["_SETRATERCSTATUSREQUEST"]._serialized_start = 5201 + _globals["_SETRATERCSTATUSREQUEST"]._serialized_end = 5242 + _globals["_SETRATERCSTATUSRESPONSE"]._serialized_start = 5244 + _globals["_SETRATERCSTATUSRESPONSE"]._serialized_end = 5334 + _globals["_SETRATEACTUATORCONTROLTARGETREQUEST"]._serialized_start = 5336 + _globals["_SETRATEACTUATORCONTROLTARGETREQUEST"]._serialized_end = 5390 + _globals["_SETRATEACTUATORCONTROLTARGETRESPONSE"]._serialized_start = 5392 + _globals["_SETRATEACTUATORCONTROLTARGETRESPONSE"]._serialized_end = 5495 + _globals["_SETRATEACTUATOROUTPUTSTATUSREQUEST"]._serialized_start = 5497 + _globals["_SETRATEACTUATOROUTPUTSTATUSREQUEST"]._serialized_end = 5550 + _globals["_SETRATEACTUATOROUTPUTSTATUSRESPONSE"]._serialized_start = 5552 + _globals["_SETRATEACTUATOROUTPUTSTATUSRESPONSE"]._serialized_end = 5654 + _globals["_SETRATEODOMETRYREQUEST"]._serialized_start = 5656 + _globals["_SETRATEODOMETRYREQUEST"]._serialized_end = 5697 + _globals["_SETRATEODOMETRYRESPONSE"]._serialized_start = 5699 + _globals["_SETRATEODOMETRYRESPONSE"]._serialized_end = 5789 + _globals["_SETRATEPOSITIONVELOCITYNEDREQUEST"]._serialized_start = 5791 + _globals["_SETRATEPOSITIONVELOCITYNEDREQUEST"]._serialized_end = 5843 + _globals["_SETRATEPOSITIONVELOCITYNEDRESPONSE"]._serialized_start = 5845 + _globals["_SETRATEPOSITIONVELOCITYNEDRESPONSE"]._serialized_end = 5946 + _globals["_SETRATEGROUNDTRUTHREQUEST"]._serialized_start = 5948 + _globals["_SETRATEGROUNDTRUTHREQUEST"]._serialized_end = 5992 + _globals["_SETRATEGROUNDTRUTHRESPONSE"]._serialized_start = 5994 + _globals["_SETRATEGROUNDTRUTHRESPONSE"]._serialized_end = 6087 + _globals["_SETRATEFIXEDWINGMETRICSREQUEST"]._serialized_start = 6089 + _globals["_SETRATEFIXEDWINGMETRICSREQUEST"]._serialized_end = 6138 + _globals["_SETRATEFIXEDWINGMETRICSRESPONSE"]._serialized_start = 6140 + _globals["_SETRATEFIXEDWINGMETRICSRESPONSE"]._serialized_end = 6238 + _globals["_SETRATEIMUREQUEST"]._serialized_start = 6240 + _globals["_SETRATEIMUREQUEST"]._serialized_end = 6276 + _globals["_SETRATEIMURESPONSE"]._serialized_start = 6278 + _globals["_SETRATEIMURESPONSE"]._serialized_end = 6363 + _globals["_SETRATESCALEDIMUREQUEST"]._serialized_start = 6365 + _globals["_SETRATESCALEDIMUREQUEST"]._serialized_end = 6407 + _globals["_SETRATESCALEDIMURESPONSE"]._serialized_start = 6409 + _globals["_SETRATESCALEDIMURESPONSE"]._serialized_end = 6500 + _globals["_SETRATERAWIMUREQUEST"]._serialized_start = 6502 + _globals["_SETRATERAWIMUREQUEST"]._serialized_end = 6541 + _globals["_SETRATERAWIMURESPONSE"]._serialized_start = 6543 + _globals["_SETRATERAWIMURESPONSE"]._serialized_end = 6631 + _globals["_SETRATEUNIXEPOCHTIMEREQUEST"]._serialized_start = 6633 + _globals["_SETRATEUNIXEPOCHTIMEREQUEST"]._serialized_end = 6679 + _globals["_SETRATEUNIXEPOCHTIMERESPONSE"]._serialized_start = 6681 + _globals["_SETRATEUNIXEPOCHTIMERESPONSE"]._serialized_end = 6776 + _globals["_SETRATEDISTANCESENSORREQUEST"]._serialized_start = 6778 + _globals["_SETRATEDISTANCESENSORREQUEST"]._serialized_end = 6825 + _globals["_SETRATEDISTANCESENSORRESPONSE"]._serialized_start = 6827 + _globals["_SETRATEDISTANCESENSORRESPONSE"]._serialized_end = 6923 + _globals["_GETGPSGLOBALORIGINREQUEST"]._serialized_start = 6925 + _globals["_GETGPSGLOBALORIGINREQUEST"]._serialized_end = 6952 + _globals["_GETGPSGLOBALORIGINRESPONSE"]._serialized_start = 6955 + _globals["_GETGPSGLOBALORIGINRESPONSE"]._serialized_end = 7114 + _globals["_SETRATEALTITUDEREQUEST"]._serialized_start = 7116 + _globals["_SETRATEALTITUDEREQUEST"]._serialized_end = 7157 + _globals["_SETRATEALTITUDERESPONSE"]._serialized_start = 7159 + _globals["_SETRATEALTITUDERESPONSE"]._serialized_end = 7249 + _globals["_SETRATEHEALTHREQUEST"]._serialized_start = 7251 + _globals["_SETRATEHEALTHREQUEST"]._serialized_end = 7290 + _globals["_SETRATEHEALTHRESPONSE"]._serialized_start = 7292 + _globals["_SETRATEHEALTHRESPONSE"]._serialized_end = 7380 + _globals["_POSITION"]._serialized_start = 7383 + _globals["_POSITION"]._serialized_end = 7532 + _globals["_HEADING"]._serialized_start = 7534 + _globals["_HEADING"]._serialized_end = 7573 + _globals["_QUATERNION"]._serialized_start = 7575 + _globals["_QUATERNION"]._serialized_end = 7689 + _globals["_HOMEPOSITION"]._serialized_start = 7692 + _globals["_HOMEPOSITION"]._serialized_end = 8109 + _globals["_EULERANGLE"]._serialized_start = 8111 + _globals["_EULERANGLE"]._serialized_end = 8226 + _globals["_ANGULARVELOCITYBODY"]._serialized_start = 8228 + _globals["_ANGULARVELOCITYBODY"]._serialized_end = 8336 + _globals["_GPSINFO"]._serialized_start = 8338 + _globals["_GPSINFO"]._serialized_end = 8427 + _globals["_RAWGPS"]._serialized_start = 8430 + _globals["_RAWGPS"]._serialized_end = 8781 + _globals["_BATTERY"]._serialized_start = 8784 + _globals["_BATTERY"]._serialized_end = 9086 + _globals["_HEALTH"]._serialized_start = 9089 + _globals["_HEALTH"]._serialized_end = 9402 + _globals["_RCSTATUS"]._serialized_start = 9404 + _globals["_RCSTATUS"]._serialized_end = 9528 + _globals["_STATUSTEXT"]._serialized_start = 9530 + _globals["_STATUSTEXT"]._serialized_end = 9608 + _globals["_ACTUATORCONTROLTARGET"]._serialized_start = 9610 + _globals["_ACTUATORCONTROLTARGET"]._serialized_end = 9673 + _globals["_ACTUATOROUTPUTSTATUS"]._serialized_start = 9675 + _globals["_ACTUATOROUTPUTSTATUS"]._serialized_end = 9738 + _globals["_COVARIANCE"]._serialized_start = 9740 + _globals["_COVARIANCE"]._serialized_end = 9779 + _globals["_VELOCITYBODY"]._serialized_start = 9781 + _globals["_VELOCITYBODY"]._serialized_end = 9840 + _globals["_POSITIONBODY"]._serialized_start = 9842 + _globals["_POSITIONBODY"]._serialized_end = 9895 + _globals["_ODOMETRY"]._serialized_start = 9898 + _globals["_ODOMETRY"]._serialized_end = 10518 + _globals["_ODOMETRY_MAVFRAME"]._serialized_start = 10412 + _globals["_ODOMETRY_MAVFRAME"]._serialized_end = 10518 + _globals["_DISTANCESENSOR"]._serialized_start = 10521 + _globals["_DISTANCESENSOR"]._serialized_end = 10703 + _globals["_SCALEDPRESSURE"]._serialized_start = 10706 + _globals["_SCALEDPRESSURE"]._serialized_end = 10882 + _globals["_POSITIONNED"]._serialized_start = 10884 + _globals["_POSITIONNED"]._serialized_end = 10973 + _globals["_VELOCITYNED"]._serialized_start = 10975 + _globals["_VELOCITYNED"]._serialized_end = 11043 + _globals["_POSITIONVELOCITYNED"]._serialized_start = 11045 + _globals["_POSITIONVELOCITYNED"]._serialized_end = 11172 + _globals["_GROUNDTRUTH"]._serialized_start = 11175 + _globals["_GROUNDTRUTH"]._serialized_end = 11311 + _globals["_FIXEDWINGMETRICS"]._serialized_start = 11314 + _globals["_FIXEDWINGMETRICS"]._serialized_end = 11536 + _globals["_ACCELERATIONFRD"]._serialized_start = 11538 + _globals["_ACCELERATIONFRD"]._serialized_end = 11643 + _globals["_ANGULARVELOCITYFRD"]._serialized_start = 11645 + _globals["_ANGULARVELOCITYFRD"]._serialized_end = 11756 + _globals["_MAGNETICFIELDFRD"]._serialized_start = 11758 + _globals["_MAGNETICFIELDFRD"]._serialized_end = 11867 + _globals["_IMU"]._serialized_start = 11870 + _globals["_IMU"]._serialized_end = 12137 + _globals["_GPSGLOBALORIGIN"]._serialized_start = 12139 + _globals["_GPSGLOBALORIGIN"]._serialized_end = 12248 + _globals["_ALTITUDE"]._serialized_start = 12251 + _globals["_ALTITUDE"]._serialized_end = 12503 + _globals["_WIND"]._serialized_start = 12506 + _globals["_WIND"]._serialized_end = 12855 + _globals["_TELEMETRYRESULT"]._serialized_start = 12858 + _globals["_TELEMETRYRESULT"]._serialized_end = 13147 + _globals["_TELEMETRYRESULT_RESULT"]._serialized_start = 12960 + _globals["_TELEMETRYRESULT_RESULT"]._serialized_end = 13147 + _globals["_TELEMETRYSERVICE"]._serialized_start = 14426 + _globals["_TELEMETRYSERVICE"]._serialized_end = 21598 # @@protoc_insertion_point(module_scope) diff --git a/proto b/proto index d3cb35f4..d69ec1a3 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit d3cb35f49d1379d2d95a6d22cdbe40ff4074e9bf +Subproject commit d69ec1a32a89088a04c591ae37a2e4a10b18fe5a