Example #1
0
        public List <SystemTracks> getFullTrackMessagesByTime(TimeType startTime, TimeType endTime)
        {
            List <SystemTracks>             TrackMessages = new List <SystemTracks>();
            IMongoCollection <BsonDocument> collection    = _db.GetCollection <BsonDocument>("SystemTrack");
            var filter1 = Builders <BsonDocument> .Filter.Gt("timeStamp.seconds", startTime.seconds);

            var filter2 = Builders <BsonDocument> .Filter.Lt("timeStamp.seconds", endTime.seconds);

            var mainFilter = Builders <BsonDocument> .Filter.And(filter1, filter2);

            var result = collection.Find(mainFilter).ToList();

            foreach (var trackRecord in result)
            {
                var tmp = new JsonWriterSettings {
                    OutputMode = JsonOutputMode.Strict
                };
                JObject json = JObject.Parse(trackRecord.ToJson <MongoDB.Bson.BsonDocument>(tmp));

                SystemTracks trackMessage = Newtonsoft.Json.JsonConvert.DeserializeObject <SystemTracks>(json.ToString());

                TrackMessages.Add(trackMessage);
            }

            return(TrackMessages);
        }
Example #2
0
        public void SendTrackData(SystemTracks message)
        {
            string json = JsonConvert.SerializeObject(message);

            var body = Encoding.UTF8.GetBytes(json);

            Channel.BasicPublish(exchange: "LucidTrackData",
                                 routingKey: "",
                                 basicProperties: null,
                                 body: body);
        }
Example #3
0
        public List <SystemTracks> getTracksByID(long trackID)
        {
            IMongoCollection <BsonDocument> collection = _db.GetCollection <BsonDocument>("SystemTrack");
            var filter = Builders <BsonDocument> .Filter.Eq("systemTracks.trackID", trackID);

            var result           = collection.Find(filter).ToList();
            var listOfTMAMessage = new List <SystemTracks>();

            foreach (var mes in result)
            {
                var x = new JsonWriterSettings {
                    OutputMode = JsonOutputMode.Strict
                };
                JObject json = JObject.Parse(mes.ToJson <MongoDB.Bson.BsonDocument>(x));

                SystemTracks tmaMessage = Newtonsoft.Json.JsonConvert.DeserializeObject <SystemTracks>(json.ToString());

                SystemTracks UpdatedMessge = new SystemTracks();
                UpdatedMessge.timeStamp = tmaMessage.timeStamp;

                bool isTrakIDFounded = false;

                for (int i = 0; i < tmaMessage.systemTracks.Count; i++)
                {
                    if (tmaMessage.systemTracks[i].trackID == trackID)
                    {
                        isTrakIDFounded = true;
                        TrackData neededTrack = new TrackData()
                        {
                            creationTime        = tmaMessage.systemTracks[i].creationTime,
                            relativeBearing     = tmaMessage.systemTracks[i].relativeBearing,
                            relativeBearingRate = tmaMessage.systemTracks[i].relativeBearingRate,
                            trackID             = tmaMessage.systemTracks[i].trackID,
                            trackState          = tmaMessage.systemTracks[i].trackState
                        };

                        UpdatedMessge.systemTracks = new List <TrackData>();
                        UpdatedMessge.systemTracks.Add(neededTrack);
                    }
                }
                if (isTrakIDFounded)
                {
                    listOfTMAMessage.Add(UpdatedMessge);
                }
            }

            return(listOfTMAMessage);
        }
 public void UpdateTargetsData(byte[] targets, IInterpreter <SystemTracks> targetsInterpreter)
 {
     m_targets = targetsInterpreter.ByteArrayToStruct(targets);
 }
Example #5
0
        // Handle a TMA message
        public void HandleTMAMessage(TMAOriginalMessage message)
        {
            SystemTracks sysTracks = new SystemTracks();

            sysTracks.timeStamp = convertTime(message.timeStamp);

            sysTracks.systemTracks = new List <TrackData>();

            foreach (OriginalSystemTrack OrigTrack in message.systemTracks)
            {
                // if track exists
                if (OrigTrack.trackId != 0)
                {
                    TrackData newTrackData = new TrackData();

                    newTrackData.trackID = OrigTrack.trackId;

                    newTrackData.relativeBearing = OrigTrack.bearing;

                    if (OrigTrack.bearingRate.valid)
                    {
                        newTrackData.relativeBearingRate = OrigTrack.bearingRate.value;
                    }

                    // if new track
                    if (!isKnownTarget[OrigTrack.trackId - 1])
                    {
                        isKnownTarget[OrigTrack.trackId - 1] = true;
                        creationTime[OrigTrack.trackId - 1]  = OrigTrack.timeStamp;

                        newTrackData.trackState   = State.NewTrack;
                        newTrackData.creationTime = convertTime(OrigTrack.timeStamp);
                    }
                    // if old track
                    else
                    {
                        newTrackData.trackState   = State.UpdateTrack;
                        newTrackData.creationTime = convertTime(creationTime[OrigTrack.trackId - 1]);
                    }

                    sysTracks.systemTracks.Add(newTrackData);
                }
            }

            if (lastTracksMessage != null)
            {
                foreach (var currTrack in lastTracksMessage.systemTracks)
                {
                    if (currTrack.trackId != 0)
                    {
                        // check if track was deleted
                        if (!sysTracks.systemTracks.Exists(x => x.trackID == currTrack.trackId))
                        {
                            isKnownTarget[currTrack.trackId - 1] = false;
                            TrackData newTrack = new TrackData()
                            {
                                trackID    = currTrack.trackId,
                                trackState = State.DeleteTrack
                            };

                            sysTracks.systemTracks.Add(newTrack);
                        }
                    }
                }
            }

            lastTracksMessage = message;

            // send to stiching
            sender.SendTrackData(sysTracks);

            // save to db
            db.saveRecord(sysTracks, "SystemTrack");
        }