Ejemplo n.º 1
0
        private IdentificationInfo GetIdentificationInfo(string entityHash, Guid enrchEmailDataId,
                                                         string foundEntityTableName)
        {
            IdentificationInfo identificationInfo = new IdentificationInfo {
                IsIdentified = false
            };
            var select = (Select) new Select(_userConnection)
                         .Column("efc", "CreatedOn")
                         .Column("efc", "IdentificationType")
                         .From(foundEntityTableName).As("efc")
                         .InnerJoin("EnrchTextEntity").As("ete").On("ete", "Id").IsEqual("efc", "EnrchTextEntityId")
                         .Where("ete", "Hash").IsEqual(Column.Parameter(entityHash))
                         .And("ete", "EnrchEmailDataId").IsEqual(Column.Parameter(enrchEmailDataId));

            select.SpecifyNoLockHints();
            using (DBExecutor dbExecutor = _userConnection.EnsureDBConnection()) {
                using (IDataReader dataReader = select.ExecuteReader(dbExecutor)) {
                    while (dataReader.Read())
                    {
                        DateTime createdOn            = dataReader.GetColumnValue <DateTime>("CreatedOn");
                        string   identificationType   = dataReader.GetColumnValue <string>("IdentificationType");
                        bool     isManuallyIdentified = identificationType == IdentificationType.Manual;
                        identificationInfo.IsIdentified = true;
                        identificationInfo.IsActual     = createdOn > _actualMinDate || isManuallyIdentified;
                        if (identificationInfo.IsActual)
                        {
                            return(identificationInfo);
                        }
                    }
                }
            }
            return(identificationInfo);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 发送测试FTP请求
 /// </summary>
 private async void SendFTPRequest()
 {
     IPAddress address = null;
     try
     {
         Task<IPAddress> getAddress = util.GetIPAddressAsync(model.SiteAddress);//获取IP地址
         await getAddress;
         address = getAddress.Result;
     }
     catch//域名解析失败
     {
         await new MessageDialog("The domain name is not exist ").ShowAsync();
         return;
     }
     if (address == null)//如果IPAddress为null说明域名错误
     {
         await new MessageDialog("The domain name is wrong ").ShowAsync();
         return;
     }
     IdentificationInfo userInfo = new IdentificationInfo();//用户输入信息
     userInfo.Username = model.Username;
     userInfo.Password = model.Password;
     LoginType loginType = LoginType.Anonymous;
     if (model.NeedUser)//检测登录方式
     {
         loginType = LoginType.Identify;
     }
     FTPRequest request = new FTPRequest(loginType);
     request.Identification = userInfo;
     request.IdentifyType = loginType;
     request.FtpServer = address;
     await request.MakeRequest();
     await new MessageDialog(request.ProtocalInfo).ShowAsync();//显示返回信息
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 发送测试FTP请求
        /// </summary>
        private async void SendFTPRequest()
        {
            IPAddress address = null;

            try//检测IP是否合法
            {
                address = IPAddress.Parse(model.SiteAddress);
            }
            catch
            {
                await new MessageDialog("wrong address").ShowAsync();
                return;
            }
            IdentificationInfo userInfo = new IdentificationInfo();//用户输入信息

            userInfo.Username = model.Username;
            userInfo.Password = model.Password;
            LoginType loginType = LoginType.Anonymous;

            if (model.NeedUser)//检测登录方式
            {
                loginType = LoginType.Identify;
            }
            FTPRequest request = new FTPRequest(loginType);

            request.Identification = userInfo;
            request.IdentifyType   = loginType;
            request.FtpServer      = address;
            await request.MakeRequest();

            await new MessageDialog(request.ProtocalInfo).ShowAsync();//显示返回信息
        }
        public void Execute(IdentificationInfo iInfo, EnteranceRecord eRecord, OwnerInfo oInfo)
        {
            if (eRecord == null && oInfo == null)
            {
                PlateInfoCallBack();
                return;
            }
            else
            {
                string userType    = "临时车辆";
                int    day         = 255;
                bool   openTheDoor = true;
                bool   charges     = true;
                IChargesRecordService       chargesRecordService = BLL.Container.Container.Resolve <IChargesRecordService>();
                IEnumerable <ChargesRecord> chargesRecords       = chargesRecordService.Query(iInfo.LicensePlateNumber, DateTime.Today);
                double money = chargesRecords.Sum(e => e.ChargeAmount);
                if (oInfo != null)
                {
                    charges = false;
                    if (oInfo.PlateType == 0) //月租车辆
                    {
                        userType = "月租车辆";
                        day      = SurplusDays(oInfo.StopTime);
                        if (day == 0)
                        {
                            //过期
                            userType += "(过期)";
                            charges   = true;
                        }
                        //开门
                    }
                    else if (oInfo.PlateType == 1)//固定车辆
                    {
                        userType = "固定车辆";
                    }
                    else if (oInfo.PlateType == 2) //定距卡车辆
                    {
                        userType = "定距卡车辆";
                    }

                    if (oInfo.UserType == 1) //黑名单
                    {
                        //不开门
                        userType += "(黑名单)";

                        openTheDoor = false;
                    }
                }

                if (openTheDoor)
                {
                }
                else
                {
                }
            }

            PlateInfoCallBack();
        }
Ejemplo n.º 5
0
 public ECUFile(string filePath)
 {
     this.FilePath      = filePath;
     VersionInfo        = new VersionInfo();
     CommunicationInfo  = new CommunicationInfo();
     IdentificationInfo = new IdentificationInfo();
     Measurements       = new Measurements();
 }
Ejemplo n.º 6
0
        public void Execute(IdentificationInfo iInfo, OwnerInfo ownerInfo)
        {
            string userName = string.Empty;
            string userType = "临时车辆";
            //string vehicleType = VehicleTypeToStr(iInfo.LicensePlateType);
            int  day         = 255;
            bool openTheDoor = true;

            try
            {
                if (ownerInfo != null)
                {
                    if (ownerInfo.PlateType == 0) //月租车辆
                    {
                        userType = "月租车辆";
                        day      = SurplusDays(ownerInfo.StopTime);
                        if (day == 0)
                        {
                            //过期
                            userType += "(过期)";

                            openTheDoor = false;
                        }
                        //开门
                    }
                    else if (ownerInfo.PlateType == 1)//固定车辆
                    {
                        userType = "固定车辆";
                    }
                    else if (ownerInfo.PlateType == 2) //定距卡车辆
                    {
                        userType = "定距卡车辆";
                    }

                    if (ownerInfo.UserType == 1) //黑名单
                    {
                        //不开门
                        userType += "(黑名单)";

                        openTheDoor = false;
                    }
                }
                else
                {
                    openTheDoor = false;
                }

                OpenTheDoor(iInfo.LicensePlateNumber, iInfo.IdentificationTime, openTheDoor);
            }
            finally
            {
                EnterVehicleInfo enterInfo = (EnterVehicleInfo)iInfo;
                enterInfo.UserName = userName;
                enterInfo.UserType = userType;

                PlateInfoCallBack(enterInfo);
            }
        }
Ejemplo n.º 7
0
        private bool ReadLine(string line)
        {
            if (line != null)
            {
                if (this.DataRead != null)
                {
                    this.DataRead(line);
                }

                if (string.IsNullOrEmpty(logConfigFile))
                {
                    logConfigFile = line;
                }
                else if (string.IsNullOrEmpty(ecuCharacteristicsFile))
                {
                    ecuCharacteristicsFile = line;
                }
                else if (string.IsNullOrEmpty(ecuDef))
                {
                    ecuDef = line;
                }
                else if (CommunicationInfo == null && line == "[Communication]")
                {
                    //[Communication]
                    CommunicationInfo = new CommunicationInfo();
                }
                else if (CommunicationInfo != null && !CommunicationInfo.Complete)
                {
                    CommunicationInfo.ReadLine(line);
                }
                else if (IdentificationInfo == null && line == "[Identification]")
                {
                    //[Identification]
                    IdentificationInfo = new IdentificationInfo();
                }
                else if (IdentificationInfo != null && !IdentificationInfo.Complete)
                {
                    IdentificationInfo.ReadLine(line);
                }
                else if (Variables == null && line == "Logged variables are:")
                {
                    //logged variables are:
                    Variables = new SessionVariables();
                }
                else if (Variables != null && !Variables.Complete)
                {
                    Variables.ReadLine(line);
                }
                else if (line.StartsWith("-> Start logging"))
                {
                    SamplesPerSecond = short.Parse(line.Substring(line.IndexOf(",") + 2,
                                                                  line.IndexOf("samples/second") - line.IndexOf(",") - 3));
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 8
0
        private bool CheckActualContactIdentification(string contactHash, Guid enrchEmailDataId)
        {
            IdentificationInfo identificationInfo = GetContactIdentificationInfo(contactHash, enrchEmailDataId);

            if (identificationInfo.IsIdentified && !identificationInfo.IsActual)
            {
                ClearContactIdentification(contactHash, enrchEmailDataId);
            }
            return(identificationInfo.IsIdentified && identificationInfo.IsActual);
        }
Ejemplo n.º 9
0
        private bool CheckActualAccountIdentification(string accountHash, Guid enrchEmailDataId)
        {
            IdentificationInfo identificationInfo = GetAccountIdentificationInfo(accountHash, enrchEmailDataId);

            if (identificationInfo.IsIdentified && !identificationInfo.IsActual)
            {
                ClearAccountIdentification(accountHash, enrchEmailDataId);
            }
            return(identificationInfo.IsIdentified && identificationInfo.IsActual);
        }
Ejemplo n.º 10
0
        private void PlateReceived(object sender, PlateEventArgs e)
        {
            IdentificationInfo info        = new IdentificationInfo(e.LicensePlateNumber, e.LicensePlateType, e.LicensePlateColor, e.PanoramaImage, e.VehicleImage, e.IdentificationTime);
            CameraParam        cameraParam = m_CameraParams.Where(w => w.Ip == e.IP).FirstOrDefault();

            if (cameraParam != null)
            {
                IDoor door = cameraParam.Direction == Directions.Enter ? EnterDoor : ExitDoor;
                door.Execute(info);
            }
        }
Ejemplo n.º 11
0
        internal void InitializeSession(IdentificationInfo identificationInfo, CommunicationInfo communicationInfo, SessionVariables variables)
        {
            bool idinfostarted    = false,
                 commInfoStarted  = false,
                 variablesStarted = false;

            using (StreamReader sr = new StreamReader(logFilePath, Encoding.UTF7))
            {
                string line = null;
                while ((line = sr.ReadLine()) != null)
                {
                    if (!identificationInfo.Complete)
                    {
                        if (!idinfostarted)
                        {
                            idinfostarted = line.StartsWith("ECU identified with following data:");
                        }
                        else
                        {
                            identificationInfo.ReadLine(line, true);
                        }
                    }
                    else if (!communicationInfo.Complete)
                    {
                        if (!commInfoStarted)
                        {
                            commInfoStarted = line == "";
                        }
                        else
                        {
                            communicationInfo.ReadLine(line, true);
                        }
                    }
                    else if (!variables.Complete)
                    {
                        if (!variablesStarted)
                        {
                            variablesStarted = line == "";
                        }
                        else
                        {
                            variables.ReadLine(line, true);
                        }

                        if (variables.Complete)
                        {
                            break;
                        }
                    }
                }
            }
        }
Ejemplo n.º 12
0
            /// <summary>
            /// Creates a new object that is a copy of the current instance.
            /// </summary>
            /// <returns>Copy of the current instance</returns>
            public object Clone()
            {
                IdentificationInfo id_info = new IdentificationInfo();

                id_info.GattVersion               = GattVersion;
                id_info.SoftwareVersion           = SoftwareVersion;
                id_info.SoftwareManufacturerName  = SoftwareManufacturerName;
                id_info.HardwareVersion           = HardwareVersion;
                id_info.HardwareManufacturerName  = HardwareManufacturerName;
                id_info.HardwareSerialNumber      = HardwareSerialNumber;
                id_info.HardwareManufacturingDate = HardwareManufacturingDate;
                return(id_info);
            }
        public void Execute(IdentificationInfo iInfo, EnteranceRecord eRecord, OwnerInfo oInfo)
        {
            string userType    = "临时车辆";
            int    day         = 255;
            bool   openTheDoor = true;

            if (oInfo != null)
            {
                if (oInfo.PlateType == 0) //月租车辆
                {
                    userType = "月租车辆";
                    day      = SurplusDays(oInfo.StopTime);
                    if (day == 0)
                    {
                        //过期
                        userType += "(过期)";

                        openTheDoor = false;
                    }
                    //开门
                }
                else if (oInfo.PlateType == 1)//固定车辆
                {
                    userType = "固定车辆";
                }
                else if (oInfo.PlateType == 2) //定距卡车辆
                {
                    userType = "定距卡车辆";
                }

                if (oInfo.UserType == 1) //黑名单
                {
                    //不开门
                    userType += "(黑名单)";

                    openTheDoor = false;
                }
            }
            else
            {
                openTheDoor = false;
            }

            OpenTheDoor(iInfo.LicensePlateNumber, iInfo.IdentificationTime, openTheDoor);

            PlateInfoCallBack();
        }
Ejemplo n.º 14
0
        private void button1_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                IdentificationInfo info = comm.IdentifyDevice();
                Output("Manufacturer: ", info.Manufacturer);
                Output("Model: ", info.Model);
                Output("Revision: ", info.Revision);
                Output("Serial number: ", info.SerialNumber);
            }
            catch (Exception ex)
            {
                ShowException(ex);
            }

            Cursor.Current = Cursors.Default;
        }
Ejemplo n.º 15
0
        public void Execute(IdentificationInfo iInfo)
        {
            bool ret = Compared(iInfo.LicensePlateNumber, iInfo.IdentificationTime);

            if (ret)
            {
                return;
            }

            //获取入场的信息
            IEnteranceRecordService enteranceRecordService = BLL.Container.Container.Resolve <IEnteranceRecordService>();
            EnteranceRecord         enteranceRecord        = enteranceRecordService.Query(iInfo.LicensePlateNumber);
            //获取车主信息
            IOwnerInfoService ownerInfoService = BLL.Container.Container.Resolve <IOwnerInfoService>();
            OwnerInfo         ownerInfo        = ownerInfoService.Query(iInfo.LicensePlateNumber);

            ExitDoor.Execute(iInfo, enteranceRecord, ownerInfo);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Get the Open Vario device identification information
        /// </summary>
        /// <returns>Identification information if the operation succeeded, null otherwise</returns>
        public async Task <IdentificationInfo> GetIdentificationInfo()
        {
            // Check if identification information has already been retrieved
            if (_identification_info == null)
            {
                // List characteristics
                await ListCharacteristics();

                // Look for the command and identification information characteristics
                bool found = true;
                BleGattCharacteristic command_char = null;
                BleGattCharacteristic info_char    = null;
                try
                {
                    command_char = BleCharacteristics[CommandGuid];
                    info_char    = BleCharacteristics[IdentificationInfoGuid];
                }
                catch (KeyNotFoundException)
                {
                    found = false;
                }
                if (found)
                {
                    // Read identification information
                    bool     success  = true;
                    BleValue read_val = new BleValue();
                    _identification_info = new IdentificationInfo();
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)0u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.GattVersion = read_val.ToString();
                    }
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)1u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.SoftwareVersion = read_val.ToString();
                    }
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)2u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.SoftwareManufacturerName = read_val.ToString();
                    }
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)3u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.HardwareVersion = read_val.ToString();
                    }
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)4u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.HardwareManufacturerName = read_val.ToString();
                    }
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)5u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.HardwareSerialNumber = read_val.ToString();
                    }
                    success = success && await BleDevice.WriteValueAsync(command_char, new BleValue((byte)6u));

                    success = success && await BleDevice.ReadValueAsync(info_char, read_val);

                    if (success)
                    {
                        _identification_info.HardwareManufacturingDate = read_val.ToString();
                    }
                    if (!success)
                    {
                        _identification_info = null;
                    }
                }
            }

            // Return a copy of the identification information
            IdentificationInfo identification_info = null;

            if (_identification_info != null)
            {
                identification_info = (_identification_info.Clone() as IdentificationInfo);
            }
            return(identification_info);
        }
Ejemplo n.º 17
0
        public void Open()
        {
            VersionInfo        = null;
            CommunicationInfo  = null;
            IdentificationInfo = null;
            Measurements       = null;

            try
            {
                using (StreamReader sr = new StreamReader(this.FilePath, Encoding.UTF7))
                {
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (VersionInfo == null && line == "[Version]")
                        {
                            VersionInfo = new VersionInfo();
                        }
                        else if (VersionInfo != null && !VersionInfo.Complete)
                        {
                            VersionInfo.ReadLine(line);
                        }
                        else if (CommunicationInfo == null && line == "[Communication]")
                        {
                            CommunicationInfo = new CommunicationInfo();
                        }
                        else if (CommunicationInfo != null && !CommunicationInfo.Complete)
                        {
                            CommunicationInfo.ReadLine(line);
                        }
                        else if (IdentificationInfo == null && line == "[Identification]")
                        {
                            IdentificationInfo = new IdentificationInfo();
                        }
                        else if (IdentificationInfo != null && !IdentificationInfo.Complete)
                        {
                            IdentificationInfo.ReadLine(line);
                        }
                        else if (Measurements == null && line == "[Measurements]")
                        {
                            Measurements = new Measurements();
                        }
                        else if (Measurements != null && !Measurements.Complete)
                        {
                            Measurements.ReadLine(line);
                        }
                    }
                }
            }
            catch { }

            if (VersionInfo == null)
            {
                VersionInfo = new VersionInfo();
            }
            if (CommunicationInfo == null)
            {
                CommunicationInfo = new CommunicationInfo();
            }
            if (IdentificationInfo == null)
            {
                IdentificationInfo = new IdentificationInfo();
            }
            if (Measurements == null)
            {
                Measurements = new Measurements();
            }
        }
Ejemplo n.º 18
0
        public void Execute(IdentificationInfo iInfo)
        {
            bool ret = Compared(iInfo.LicensePlateNumber, iInfo.IdentificationTime);

            if (ret)
            {
                return;
            }

            IEnteranceRecordService enteranceRecordService = BLL.Container.Container.Resolve <IEnteranceRecordService>();
            EnteranceRecord         enteranceRecord        = null;
            OwnerInfo     ownerInfo    = null;
            ChargesRecord chargeRecord = null;

            try
            {
                if (iInfo.LicensePlateNumber != "ABCDEF")
                {
                    enteranceRecord = enteranceRecordService.Query(iInfo.LicensePlateNumber);
                    //获取车主信息
                    IOwnerInfoService ownerInfoService = BLL.Container.Container.Resolve <IOwnerInfoService>();
                    ownerInfo = ownerInfoService.Query(iInfo.LicensePlateNumber);
                    //获取车辆记录中修改的车辆类型 大车 中车 小车
                    IChargesRecordService chargeRecordService = BLL.Container.Container.Resolve <IChargesRecordService>();
                    chargeRecord = chargeRecordService.Query(iInfo.LicensePlateNumber);
                }
                EnterDoor.Execute(iInfo, ownerInfo);
            }
            finally
            {
                try
                {
                    if (enteranceRecord == null)
                    {
                        int vehicleType = 0;
                        if (iInfo.LicensePlateType == LicensePlateTypes.LT_YELLOW || iInfo.LicensePlateType == LicensePlateTypes.LT_YELLOW2)
                        {
                            vehicleType = 2;
                        }
                        if (chargeRecord != null)
                        {
                            if (vehicleType != chargeRecord.VehicleType)
                            {
                                vehicleType = chargeRecord.VehicleType;
                            }
                        }
                        enteranceRecord = new EnteranceRecord(iInfo.LicensePlateNumber, iInfo.IdentificationTime, vehicleType);
                        enteranceRecordService.Add(enteranceRecord);
                    }
                    else
                    {
                        enteranceRecord.EntranceTime = iInfo.IdentificationTime;
                        enteranceRecordService.Update(enteranceRecord);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex.Message, ex);
                }
            }
        }
Ejemplo n.º 19
0
        internal void InitializeSession(IdentificationInfo identificationInfo, CommunicationInfo communicationInfo, SessionVariables variables)
        {
            bool idinfostarted    = false,
                 commInfoStarted  = false,
                 variablesStarted = false;

            using (StreamReader sr = new StreamReader(LogFilePath, Encoding.UTF7))
            {
                string line = null;

                while ((line = sr.ReadLine()) != null)
                {
                    if (this.LogType == LogTypes.Unknown)
                    {
                        if (line.Contains("VCDS") || line.Contains("VAG-COM"))
                        {
                            this.LogType = LogTypes.VCDS;
                        }
                        else if (line.StartsWith("Time,"))
                        {
                            this.LogType = LogTypes.Eurodyne;
                        }
                        else if (line.StartsWith("Time (sec),"))
                        {
                            this.LogType = LogTypes.Normal;
                        }
                    }

                    if (this.LogType == LogTypes.VCDS)
                    {
                        if (!variables.Complete)
                        {
                            if (!variablesStarted)
                            {
                                variablesStarted = line.StartsWith(",Group A:") || line.StartsWith("Marker,");
                                NewVCDSFormat    = line.StartsWith("Marker,");
                            }

                            if (variablesStarted)
                            {
                                variables.ReadLine(line, this.LogType);
                            }

                            if (variables.Complete)
                            {
                                break;
                            }
                        }
                    }
                    else if (this.LogType == LogTypes.Eurodyne)
                    {
                        if (!variables.Complete)
                        {
                            if (!variablesStarted)
                            {
                                variablesStarted = line.StartsWith("Time,");
                            }

                            if (variablesStarted)
                            {
                                variables.ReadLine(line, this.LogType);
                            }

                            if (variables.Complete)
                            {
                                break;
                            }
                        }
                    }
                    else if (this.LogType == LogTypes.Normal)
                    {
                        if (!variablesStarted)
                        {
                            variablesStarted = line.StartsWith("Time (sec),");
                        }

                        if (variablesStarted)
                        {
                            variables.ReadLine(line, this.LogType);
                        }

                        if (variables.Complete)
                        {
                            break;
                        }
                    }

                    if (!identificationInfo.Complete)
                    {
                        if (!idinfostarted)
                        {
                            idinfostarted = line.StartsWith("ECU identified with following data:");
                        }
                        else
                        {
                            this.LogType = LogTypes.ME7Logger;
                            identificationInfo.ReadLine(line, true);
                        }
                    }
                    else if (!communicationInfo.Complete)
                    {
                        if (!commInfoStarted)
                        {
                            commInfoStarted = line == "" || line.All(c => c == ',');
                        }
                        else
                        {
                            communicationInfo.ReadLine(line, true);
                        }
                    }
                    else if (!variables.Complete)
                    {
                        if (!variablesStarted)
                        {
                            variablesStarted = line == "" || line.All(c => c == ',');
                        }
                        else
                        {
                            variables.ReadLine(line, this.LogType);
                        }

                        if (variables.Complete)
                        {
                            break;
                        }
                    }
                }
            }
        }
Ejemplo n.º 20
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="ble_device">BLE device proxy to use to communicate with the Open Vario device</param>
 /// <param name="ble_service">BLE service representing the identification service</param>
 public IdentificationService(IBleDevice ble_device, BleGattService ble_service)
     : base(ble_device, ble_service)
 {
     _identification_info = null;
 }