Пример #1
0
 public void UavWasRejected(UAV uav)
 {
     var userConnections = activeConnections.Where(p => p.Value == uav.User.user_id).Select(p => p.Key);
     //(IHubCallerConnectionContext<dynamic>)userConnections.uavWasRejected(uav);
     Clients.Clients((IList<string>)userConnections).uavWasRejected(uav);
     //Clients.All.uavWasRejected(uav);
 }
Пример #2
0
        public async Task<IHttpActionResult> PostUAV(UAV uAV)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            _db.UAVs.Add(uAV);
            await _db.SaveChangesAsync();

            return CreatedAtRoute("DefaultApi", new { id = uAV.Id }, uAV);
        }
Пример #3
0
        public async Task<IHttpActionResult> PostUAVWithConfig(UAV uav)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            uav.Configurations = new Configuration
                {
                    Classification = "quadrotor",
                    create_date = DateTime.Now,
                    modified_date = DateTime.Now,
                    Name = "autogen",
                    NumberOfMotors = 4,

                };

            uav.Schedules.Add(new Schedule
            {
                UAVId = uav.Id,
                create_date = DateTime.Now,
                modified_date = DateTime.Now,
                CurrentMission = null
            });
            _db.UAVs.Add(uav);
            await _db.SaveChangesAsync();

            return Ok(uav);
        }
Пример #4
0
        public async Task<IHttpActionResult> PutUAV(int id, UAV uAV)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != uAV.Id)
            {
                return BadRequest();
            }

            _db.Entry(uAV).State = System.Data.Entity.EntityState.Modified;

            try
            {
                await _db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UAVExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
Пример #5
0
        public async Task<IHttpActionResult> generateUAVs(int number)
        {
            Random num = new Random();
            for (int i = 0; i < number; i++)
            {
                UAV uav = new UAV
                {
                    Callsign = getName().ToUpper() + num.Next(1, 99),
                    NumDeliveries = num.Next(1, 2000),
                    Mileage = num.Next(1, 100),
                    Id = i,
                    create_date = DateTime.Now,
                    modified_date = DateTime.Now,
                    MaxAcceleration = 20,
                    MaxVelocity = 20,
                    MaxVerticalVelocity = 20,
                    MinDeliveryAlt = 100,
                    UpdateRate = 1000,
                    CruiseAltitude = 400,
                    isActive = true,
                };

                uav.Schedules.Add(new Schedule
                {
                    UAVId = uav.Id,
                    create_date = DateTime.Now,
                    modified_date = DateTime.Now,
                    CurrentMission = null
                });

                Configuration config = new Configuration
                {
                    Classification = "Predator",
                    create_date = DateTime.Now,
                    modified_date = DateTime.Now,
                    Name = "Default",
                    NumberOfMotors = 4
                };
                var flights = new List<FlightState>
                {
                   new FlightState { 
                       Longitude = -118.5288,
                       Latitude = 34.2420,
                       Altitude = 400,
                       VelocityX = 0, 
                       VelocityY = 0, 
                       VelocityZ = 0, 
                       Yaw = 0, 
                       Roll = 0, 
                       Pitch = 0, 
                       YawRate = 0, 
                       RollRate = 0, 
                       PitchRate = 0, 
                       BatteryLevel = .99, 
                       UAVId = i
                   },    
               };
                flights.ForEach(f =>
                {
                    f.Timestamp = DateTime.Now;
                    f.create_date = DateTime.Now;
                    f.modified_date = DateTime.Now;
                });

                DateTime dateValue = new DateTime();
                dateValue = DateTime.Now;
                var randPoint = getDistance();

                uav.Configurations = config;
                uav.FlightStates = flights;
                //uav.Schedules = sched;

                _db.UAVs.Add(uav);
                //db.Missions.Add(mission.First());
                //db.Maintenances.Add(maintenances.First());
                _db.Configurations.Add(config);
                //db.Schedules.Add(sched.First());
                _db.FlightStates.Add(flights.First());

                try
                {
                    _db.SaveChanges();
                }
                catch (DbUpdateException e)
                {
                    Console.Write(e.Entries);
                }
            }
            var drones = from u in _db.UAVs.Include(u => u.FlightStates)
                         select new
                         {
                             Id = u.Id,
                             Mileage = u.Mileage,
                             NumDeliveries = u.NumDeliveries,
                             Callsign = u.Callsign,
                             create_date = u.create_date,
                             modified_date = u.modified_date,
                             MaxVelocity = u.MaxVelocity,
                             MaxAcceleration = u.MaxAcceleration,
                             MaxVerticalVelocity = u.MaxVerticalVelocity,
                             UpdateRate = u.UpdateRate,
                             FlightState = u.FlightStates.OrderBy(fs => fs.Timestamp).FirstOrDefault(),
                             EventLog = u.EventLogs
                         };
            return Ok(drones);
        }
Пример #6
0
        public HttpResponseMessage AddUavAndAssign(UAV uav)
        {
            try
            {
                uav.estimated_workload = 0;
                _db.UAVs.Add(uav);
                var nextUserInQueue = _db.Users.FirstOrDefault(u => u.position_in_queue == 1);
                var users = _db.Users;
                if (nextUserInQueue != null)
                {
                    nextUserInQueue.UAVs.Add(uav);
                    uav.User = nextUserInQueue;
                    foreach (var user in users.Where(user => user.user_id != nextUserInQueue.user_id && user.UserRole.role_type == "Flight Dispatcher"))
                    {
                        user.position_in_queue--;
                        _db.Entry(user).State = System.Data.Entity.EntityState.Modified;
                    }
                    nextUserInQueue.position_in_queue = users.Count();
                    _db.Entry(nextUserInQueue).State = System.Data.Entity.EntityState.Modified;
                    _db.Entry(uav).State = System.Data.Entity.EntityState.Modified;
                    _db.SaveChanges();
                }
                else
                {
                    return Request.CreateResponse(HttpStatusCode.Conflict);
                }
            }
            catch (Exception exception)
            {
                return Request.CreateResponse(HttpStatusCode.Conflict);
            }

            return Request.CreateResponse(HttpStatusCode.OK);
            //emit to user that uav has been tasked to them later via signalr
        }