private CommandAck fetchCommandAck(MAVLink.MAV_CMD cmdType)
            {
                DateTime deadline = DateTime.Now.AddMilliseconds(cmdtimeout_ms);

                while (DateTime.Now < deadline)
                {
                    if (drone.commandAckStacks.ContainsKey(cmdType))
                    {
                        lock (drone.commandAckStacks[cmdType])
                        {
                            Stack <CommandAck> stack = drone.commandAckStacks[cmdType];
                            if (stack.Count > 0)
                            {
                                CommandAck result = stack.Pop();
                                logger.Debug("Command Ack received for {0} command with status {1}", cmdType, result.result.ToString());
                                return(result);
                            }
                        }
                    }
                    // sleep
                    Thread.Sleep(cmdpoll_ms);
                }
                logger.Error("Error: timeout waiting for command result for {0}", cmdType);
                return(null);
            }
Exemple #2
0
        public SMissionItem Set(double lat, double lng, double alt, MAVLink.MAV_CMD command, bool isHome = false)
        {
            this.lat     = lat;
            this.lng     = lng;
            this.alt     = (float)alt;
            this.command = command;
            IsHome       = isHome;

            return(this);
        }
Exemple #3
0
 public Mavlink_Command(MAVLink.MAV_CMD _actionid, float _p1, float _p2, float _p3, float _p4, float _p5, float _p6, float _p7, bool _requireack = true)
 {
     actionid   = _actionid;
     p1         = _p1;
     p2         = _p2;
     p3         = _p3;
     p4         = _p4;
     p5         = _p5;
     p6         = _p6;
     p7         = _p7;
     requireack = _requireack;
 }
 private CommandAck runCommand(MAVLink.MAV_CMD command, Int32 param1,
                               Int32 param2,
                               Int32 param3,
                               Int32 param4,
                               Int32 param5,
                               Int32 param6,
                               Int32 param7)
 {
     lock (commandLock)
     {
         logger.Debug("Running {0} command.", command);
         connection.sendCommand((ushort)command, param1, param2,
                                param3, param4, param5, param6,
                                param7);
         return(fetchCommandAck(command));
     }
 }
Exemple #5
0
        private static void CommandLong(MAVLink.MAV_CMD command, float param1, float param2, float param3, float param4)
        {
            MAVLink.mavlink_command_long_t cmd = new MAVLink.mavlink_command_long_t();
            cmd.target_system    = sysID;
            cmd.target_component = compID;

            cmd.command = (ushort)command;
            cmd.param1  = param1;
            cmd.param2  = param2;
            cmd.param3  = param3;
            cmd.param4  = param4;


            byte[] commandBytes = mavlink.GenerateMAVLinkPacket(MAVLink.MAVLINK_MSG_ID.COMMAND_LONG, cmd);

            SendPacket(commandBytes);
        }
Exemple #6
0
 /// <summary>
 /// add wp to command queue - dont upload to mav
 /// </summary>
 /// <param name="cmd"></param>
 /// <param name="p1"></param>
 /// <param name="p2"></param>
 /// <param name="p3"></param>
 /// <param name="p4"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="z"></param>
 public void AddWPtoList(MAVLink.MAV_CMD cmd, double p1, double p2, double p3, double p4, double x, double y, double z)
 {
     MainV2.instance.FlightPlanner.AddCommand(cmd, p1, p2, p3, p4, x, y, z);
 }
Exemple #7
0
 public void InsertWP(int idx, MAVLink.MAV_CMD cmd, double p1, double p2, double p3, double p4, double x,
                      double y,
                      double z)
 {
     InsertWP(idx, cmd, p1, p2, p3, p4, x, y, z, null);
 }
Exemple #8
0
 public int AddWPtoList(MAVLink.MAV_CMD cmd, double p1, double p2, double p3, double p4, double x, double y,
                        double z)
 {
     return(AddWPtoList(cmd, p1, p2, p3, p4, x, y, z, null));
 }
Exemple #9
0
 public void InsertWP(int idx, MAVLink.MAV_CMD cmd, double p1, double p2, double p3, double p4, double x,
                      double y,
                      double z, object tag = null)
 {
     MainV2.instance.FlightPlanner.InsertCommand(idx, cmd, p1, p2, p3, p4, x, y, z);
 }
Exemple #10
0
 /// <summary>
 /// add wp to command queue - dont upload to mav
 /// </summary>
 /// <param name="cmd"></param>
 /// <param name="p1"></param>
 /// <param name="p2"></param>
 /// <param name="p3"></param>
 /// <param name="p4"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="z"></param>
 public int AddWPtoList(MAVLink.MAV_CMD cmd, double p1, double p2, double p3, double p4, double x, double y,
                        double z, object tag = null)
 {
     return(MainV2.instance.FlightPlanner.AddCommand(cmd, p1, p2, p3, p4, x, y, z, tag));
 }
Exemple #11
0
 /// <summary>
 /// add wp to command queue - dont upload to mav
 /// </summary>
 /// <param name="cmd"></param>
 /// <param name="p1"></param>
 /// <param name="p2"></param>
 /// <param name="p3"></param>
 /// <param name="p4"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="z"></param>
 public void AddWPtoList(MAVLink.MAV_CMD cmd, float p1, float p2, float p3, float p4, float x, float y, float z)
 {
     MainV2.instance.FlightPlanner.AddCommand(cmd, p1, p2, p3, p4, x, y, z);
 }
Exemple #12
0
 private static void CommandLong(MAVLink.MAV_CMD command, float param1, float param2)
 {
     CommandLong(command, param1, param2, 0, 0);
 }
Exemple #13
0
 public static SMissionItem Create(double lat, double lng, double alt, MAVLink.MAV_CMD command, bool isHome = false)
 {
     return(new SMissionItem().Set(lat, lng, alt, command, isHome));
 }