コード例 #1
0
        public Task WriteMissionItem(MavFrame frame, MavCmd cmd, bool current, bool autoContinue, float param1, float param2, float param3,
                                     float param4, float x, float y, float z, MavMissionType missionType, int attemptCount, CancellationToken cancel)
        {
            var packet = new MissionItemPacket()
            {
                ComponenId = _identity.ComponentId,
                SystemId   = _identity.SystemId,
                Sequence   = _seq.GetNextSequenceNumber(),
                Payload    =
                {
                    TargetComponent = _identity.TargetComponentId,
                    TargetSystem    = _identity.TargetSystemId,
                    Seq             =                           0,
                    Frame           = frame,
                    Command         = cmd,
                    Current         = (byte)(current ? 2:0),
                    Autocontinue    = (byte)(autoContinue? 1:0),
                    Param1          = param1,
                    Param2          = param2,
                    Param3          = param3,
                    Param4          = param4,
                    X           = x,
                    Y           = y,
                    Z           = z,
                    MissionType = missionType
                }
            };

            return(_mavlink.Send(packet, cancel));
        }
コード例 #2
0
ファイル: MissionClient.cs プロジェクト: asvol/mavlink.net
        public Task WriteMissionItem(ushort seq, MavFrame frame, MavCmd cmd, bool current, bool autoContinue, float param1, float param2, float param3,
                                     float param4, float x, float y, float z, MavMissionType missionType, int attemptCount, CancellationToken cancel)
        {
            Logger.Info($"{LogSend} Write mission item");

            // Ardupilot has custom implementation see =>  https://mavlink.io/en/services/mission.html#flight-plan-missions

            return(InternalSend <MissionItemPacket>(_ =>
            {
                _.Payload.TargetComponent = Identity.TargetComponentId;
                _.Payload.TargetSystem = Identity.TargetSystemId;
                _.Payload.Seq = seq;
                _.Payload.Frame = frame;
                _.Payload.Command = cmd;
                _.Payload.Current = (byte)(current ? 1 : 0);
                _.Payload.Autocontinue = (byte)(autoContinue ? 1 : 0);
                _.Payload.Param1 = param1;
                _.Payload.Param2 = param2;
                _.Payload.Param3 = param3;
                _.Payload.Param4 = param4;
                _.Payload.X = x;
                _.Payload.Y = y;
                _.Payload.Z = z;
                _.Payload.MissionType = missionType;
            }, cancel));
        }
コード例 #3
0
        public Task MissionItem(MavFrame frame, MavCmd cmd, bool current, bool autoContinue, float param1, float param2, float param3,
                                float param4, float x, float y, float z, MavMissionType missionType, int attemptCount, CancellationToken cancel)
        {
            var packet = new MissionItemPacket()
            {
                ComponenId = _config.ComponentId,
                SystemId   = _config.SystemId,
                Payload    =
                {
                    TargetComponent = _config.TargetComponenId,
                    TargetSystem    = _config.TargetSystemId,
                    Seq             =                         0,
                    Frame           = frame,
                    Command         = cmd,
                    Current         =                         2,
                    Autocontinue    = (byte)(autoContinue? 1:0),
                    Param1          = param1,
                    Param2          = param2,
                    Param3          = param3,
                    Param4          = param4,
                    X           = x,
                    Y           = y,
                    Z           =                        20,
                    MissionType = missionType
                }
            };

            _mavlink.Send(packet, cancel);
            return(Task.CompletedTask);
        }