internal IMessage ParsePayload(string payload)
        {
            var bitVector = ConvertPayload(payload);

            try
            {
                switch (payload.First())
                {
                case '1':
                    var msg1 = new MessageType1(bitVector);
                    msg1.Distance = _distanceCalculator.Calc(_observationPoint.Longitude, _observationPoint.Latitude, msg1.Longitude, msg1.Latitude);
                    return(msg1);

                case '3':
                    var msg3 = new MessageType3(bitVector);
                    msg3.Distance = _distanceCalculator.Calc(msg3.Longitude, msg3.Latitude, _observationPoint.Longitude, _observationPoint.Latitude);
                    return(msg3);

                case '4':
                    var msg4 = new MessageType4(bitVector);
                    msg4.Distance = _distanceCalculator.Calc(msg4.Longitude, msg4.Latitude, _observationPoint.Longitude, _observationPoint.Latitude);
                    return(msg4);

                case '5':
                    return(new MessageType5(bitVector));

                default:
                    return(new MessageTypeNotImplemented(payload));
                }
            }
            catch (Exception ex)
            {
                return(new MessageParsingError($"Payload: {payload}, {ex.Message}", ex.StackTrace));
            }
        }
 public static MessageType4Csv MapFrom(this MessageType4Csv self, MessageType4 message, DateTime timestamp)
 {
     self.Epfd         = message.Epfd;
     self.Mmsi         = message.Mmsi;
     self.Latitude     = message.Latitude;
     self.Longitude    = message.Longitude;
     self.FixQuality   = message.FixQuality;
     self.Year         = message.Year;
     self.Month        = message.Month;
     self.Day          = message.Day;
     self.Hour         = message.Hour;
     self.Minute       = message.Minute;
     self.Second       = message.Second;
     self.Repeat       = message.Repeat;
     self.RaimFlag     = message.RaimFlag;
     self.RadioStatus  = message.RadioStatus;
     self.TimestampUtc = timestamp;
     return(self);
 }
        private void cmbMessageType_SelectedIndexChanged(object sender, EventArgs e)
        {
            RootMessages messageObject;

            byte messageID = Convert.ToByte(cmbMessageType.SelectedItem.ToString().Split(' ')[2]);

            #region Mesaj ID göre MesajType[MesajID] nesnesi oluşturuluyor.
            if (messageID == 1)
            {
                messageObject = new MessageType1();
            }
            else if (messageID == 2)
            {
                messageObject = new MessageType2();
            }
            else if (messageID == 3)
            {
                messageObject = new MessageType3();
            }
            else if (messageID == 4)
            {
                messageObject = new MessageType4();
            }
            else if (messageID == 5)
            {
                messageObject = new MessageType5();
            }
            else if (messageID == 6)
            {
                messageObject = new MessageType6();
            }
            else if (messageID == 7)
            {
                messageObject = new MessageType7();
            }
            else if (messageID == 8)
            {
                messageObject = new MessageType8();
            }
            else if (messageID == 9)
            {
                messageObject = new MessageType9();
            }
            else if (messageID == 10)
            {
                messageObject = new MessageType10();
            }
            else if (messageID == 11)
            {
                messageObject = new MessageType11();
            }
            else if (messageID == 12)
            {
                messageObject = new MessageType12();
            }
            else if (messageID == 13)
            {
                messageObject = new MessageType13();
            }
            else if (messageID == 14)
            {
                messageObject = new MessageType14();
            }
            else if (messageID == 15)
            {
                messageObject = new MessageType15();
            }
            else if (messageID == 16)
            {
                messageObject = new MessageType16();
            }
            else if (messageID == 17)
            {
                messageObject = new MessageType17();
            }
            else if (messageID == 18)
            {
                messageObject = new MessageType18();
            }
            else if (messageID == 19)
            {
                messageObject = new MessageType19();
            }
            else if (messageID == 20)
            {
                messageObject = new MessageType20();
            }
            else if (messageID == 22)
            {
                messageObject = new MessageType22();
            }
            else if (messageID == 23)
            {
                messageObject = new MessageType23();
            }
            else if (messageID == 24)
            {
                string type = cmbMessageType.SelectedItem.ToString().Split(' ')[3];

                if (type == "A")
                {
                    messageObject = new MessageType24A();
                }
                else
                {
                    messageObject = new MessageType24B();
                }
            }
            else if (messageID == 25)
            {
                messageObject = new MessageType25();
            }
            //MessageBox.Show("Mesaj 26 düzelt");
            else if (messageID == 26)
            {
                messageObject = new MessageType26();
            }
            else if (messageID == 27)
            {
                messageObject = new MessageType27();
            }
            else
            {
                MessageBox.Show("MESAJ PARSE EDİLEMEDİ.", "HATALI MESAJ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                messageObject = null;
            }
            #endregion

            AddMessagesRows(messageObject);
        }
        private void btnConstructorMessage_Click(object sender, EventArgs e)
        {
            #region return edilen Message ID'sine göre ilgili sınıfta işlem yapılacak.
            RootMessages messageObject;
            byte         messageID = Convert.ToByte(cmbMessageType.SelectedItem.ToString().Split(' ')[2]);

            if (messageID == 1)
            {
                messageObject = new MessageType1();
            }
            else if (messageID == 2)
            {
                messageObject = new MessageType2();
            }
            else if (messageID == 3)
            {
                messageObject = new MessageType3();
            }
            else if (messageID == 4)
            {
                messageObject = new MessageType4();
            }
            else if (messageID == 5)
            {
                messageObject = new MessageType5();
            }
            else if (messageID == 6)
            {
                messageObject = new MessageType6();
            }
            else if (messageID == 7)
            {
                messageObject = new MessageType7();
            }
            else if (messageID == 8)
            {
                messageObject = new MessageType8();
            }
            else if (messageID == 9)
            {
                messageObject = new MessageType9();
            }
            else if (messageID == 10)
            {
                messageObject = new MessageType10();
            }
            else if (messageID == 11)
            {
                messageObject = new MessageType11();
            }
            else if (messageID == 12)
            {
                messageObject = new MessageType12();
            }
            else if (messageID == 13)
            {
                messageObject = new MessageType13();
            }
            else if (messageID == 14)
            {
                messageObject = new MessageType14();
            }
            else if (messageID == 15)
            {
                messageObject = new MessageType15();
            }
            else if (messageID == 16)
            {
                messageObject = new MessageType16();
            }
            else if (messageID == 18)
            {
                messageObject = new MessageType18();
            }
            else if (messageID == 19)
            {
                messageObject = new MessageType19();
            }
            else if (messageID == 20)
            {
                messageObject = new MessageType20();
            }
            else if (messageID == 22)
            {
                messageObject = new MessageType22();
            }
            else if (messageID == 23)
            {
                messageObject = new MessageType23();
            }
            else if (messageID == 24)
            {
                MessageType24 mesaj24 = new MessageType24();
                mesaj24.setPartNumber(VDM1);
                if (mesaj24.getPartNumber() == 0)
                {
                    messageObject = new MessageType24A();
                }
                else
                {
                    messageObject = new MessageType24B();
                }
            }
            else if (messageID == 25)
            {
                messageObject = new MessageType25();
            }
            //MessageBox.Show("Mesaj 26 düzelt");
            else if (messageID == 26)
            {
                messageObject = new MessageType26();
            }
            else if (messageID == 27)
            {
                messageObject = new MessageType27();
            }
            else
            {
                MessageBox.Show("MESAJ PARSE EDİLEMEDİ.", "HATALI MESAJ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                messageObject = null;
            }

            #endregion

            ConstructorMessage(messageObject);
        }
        private void Run()
        {
            ////Datagridview işlemleri
            //dgwMessages.ReadOnly = true;

            try
            {
                //Mesaj cümle sayısı döndürülüyor.
                sentencePartCount = getSentenceCount();
                //Mesaj ID döndürülüyor.
                byte         messageID = root.getMessageID(VDM1);
                RootMessages mesaj;
                if (sentencePartCount == 1)
                {
                    #region return edilen Message ID'sine göre ilgili sınıfta işlem yapılacak.

                    if (messageID == 1)
                    {
                        mesaj = new MessageType1();
                    }
                    else if (messageID == 2)
                    {
                        mesaj = new MessageType2();
                    }
                    else if (messageID == 3)
                    {
                        mesaj = new MessageType3();
                    }
                    else if (messageID == 4)
                    {
                        mesaj = new MessageType4();
                    }
                    else if (messageID == 6)
                    {
                        mesaj = new MessageType6();
                    }
                    else if (messageID == 7)
                    {
                        mesaj = new MessageType7();
                    }
                    else if (messageID == 8)
                    {
                        mesaj = new MessageType8();
                    }
                    else if (messageID == 9)
                    {
                        mesaj = new MessageType9();
                    }
                    else if (messageID == 10)
                    {
                        mesaj = new MessageType10();
                    }
                    else if (messageID == 11)
                    {
                        mesaj = new MessageType11();
                    }
                    else if (messageID == 12)
                    {
                        mesaj = new MessageType12();
                    }
                    else if (messageID == 13)
                    {
                        mesaj = new MessageType13();
                    }
                    else if (messageID == 14)
                    {
                        mesaj = new MessageType14();
                    }
                    else if (messageID == 15)
                    {
                        mesaj = new MessageType15();
                    }
                    else if (messageID == 16)
                    {
                        mesaj = new MessageType16();
                    }
                    else if (messageID == 18)
                    {
                        mesaj = new MessageType18();
                    }
                    else if (messageID == 19)
                    {
                        mesaj = new MessageType19();
                    }
                    else if (messageID == 20)
                    {
                        mesaj = new MessageType20();
                    }
                    else if (messageID == 22)
                    {
                        mesaj = new MessageType22();
                    }
                    else if (messageID == 23)
                    {
                        mesaj = new MessageType23();
                    }
                    else if (messageID == 24)
                    {
                        MessageType24 mesaj24 = new MessageType24();
                        mesaj24.setPartNumber(VDM1);
                        if (mesaj24.getPartNumber() == 0)
                        {
                            mesaj = new MessageType24A();
                        }
                        else
                        {
                            mesaj = new MessageType24B();
                        }
                    }
                    else if (messageID == 25)
                    {
                        mesaj = new MessageType25();
                    }
                    //MessageBox.Show("Mesaj 26 düzelt");
                    else if (messageID == 26)
                    {
                        mesaj = new MessageType26();
                    }
                    else if (messageID == 27)
                    {
                        mesaj = new MessageType27();
                    }
                    else
                    {
                        MessageBox.Show("MESAJ PARSE EDİLEMEDİ.", "HATALI MESAJ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        mesaj = null;
                    }
                    #endregion
                    //Mesaj parse edilecek
                    mesaj.Parser(VDM1);
                    // ve datagridview'e eklenecek.
                    ShowMessageValue(mesaj);
                }
                else if (sentencePartCount == 2 && messageID != 0)
                {
                    #region return edilen Message ID'sine göre ilgili sınıfta işlem yapılacak.
                    if (messageID == 5)
                    {
                        mesaj = new MessageType5();
                    }
                    else if (messageID == 12)
                    {
                        mesaj = new MessageType12();
                    }
                    else if (messageID == 17)
                    {
                        mesaj = new MessageType17();
                    }
                    else if (messageID == 21)
                    {
                        mesaj = new MessageType21();
                    }
                    else
                    {
                        mesaj = null;
                    }
                    #endregion
                    //Mesaj parse edilecek
                    mesaj.Parser(VDM1, VDM2);
                    //ve datagridview'e eklenecek.
                    ShowMessageValue(mesaj);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex, "frmMain :: Run");
                throw;
            }
        }