Beispiel #1
0
        internal void UpdateStationsFirmware(List <CFirmwareStation> stationList)
        {
            //SyncLock ServiceStackJBC01_Lock
            bool ret = false;

            if (connectErrorStatus != EnumConnectError.NO_ERROR)
            {
                return;
            }

            try
            {
                List <dc_FirmwareStation> dcStationList = new List <dc_FirmwareStation>();
                foreach (CFirmwareStation firmware in stationList)
                {
                    dc_FirmwareStation dcFirmwareUpdate = new dc_FirmwareStation();
                    dcFirmwareUpdate.stationUUID     = firmware.StationUUID;
                    dcFirmwareUpdate.softwareVersion = firmware.SoftwareVersion;
                    dcFirmwareUpdate.hardwareVersion = firmware.HardwareVersion;

                    dcStationList.Add(dcFirmwareUpdate);
                }

                m_hostService.UpdateStations(dcStationList.ToArray());
            }
            catch (FaultException <faultError> faultEx)
            {
                RaiseEventError(faultEx, System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
            catch (Exception ex)
            {
                RaiseEventError(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
            //End SyncLock
        }
Beispiel #2
0
        public List <dc_FirmwareStation> GetInfoUpdateFirmware(dc_FirmwareStation infoUpdateFirmware)
        {
            List <dc_FirmwareStation> listInfoUpdateFirmware = new List <dc_FirmwareStation>();

            try
            {
                m_mutexHostControllerEndpoints.WaitOne();
                foreach (EndpointAddress ep in m_hostControllerEndpoints)
                {
                    BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
                    JBCHostControllerServiceClient serviceClient = new JBCHostControllerServiceClient(binding, ep);

                    serviceClient.Open();
                    listInfoUpdateFirmware.AddRange(serviceClient.GetInfoUpdateFirmware(infoUpdateFirmware));
                    serviceClient.Close();
                }
            }
            catch (Exception ex)
            {
                LoggerModule.logger.Error(System.Reflection.MethodInfo.GetCurrentMethod().Name + ". Error: " + ex.Message);
            }
            finally
            {
                m_mutexHostControllerEndpoints.ReleaseMutex();
            }

            return(listInfoUpdateFirmware);
        }
 public static void CopyData(CFirmwareStation firmwareVersion,
                             dc_FirmwareStation dcFirmwareVersion)
 {
     firmwareVersion.StationUUID     = dcFirmwareVersion.stationUUID;
     firmwareVersion.Model           = dcFirmwareVersion.model;
     firmwareVersion.ModelVersion    = dcFirmwareVersion.modelVersion;
     firmwareVersion.ProtocolVersion = dcFirmwareVersion.protocolVersion;
     firmwareVersion.HardwareVersion = dcFirmwareVersion.hardwareVersion;
     firmwareVersion.SoftwareVersion = dcFirmwareVersion.softwareVersion;
     firmwareVersion.FileName        = dcFirmwareVersion.fileName;
 }
        /// <summary>
        /// Returns the station latest firmware version given a station model and a hardware version
        /// </summary>
        /// <param name="requestInfoUpdateFirmware">Station model and hardware version information</param>
        /// <returns>Station firmware information</returns>
        public List <dc_FirmwareStation> GetInfoUpdateFirmware(dc_FirmwareStation requestInfoUpdateFirmware)
        {
            //Descargar el archivo de versiones del remote server
            string sFilePath = m_systemFilesManager.DownloadFile(System.Convert.ToString(My.Settings.Default.VersionFirmwareFileName));

            Hashtable htInfoUpdateFirmware = new Hashtable(); //Language -> dc_FirmwareVersion
            Hashtable htLatestFirmwareDate = new Hashtable(); //Language -> Date

            if (File.Exists(sFilePath))
            {
                bool bFoundModel = false;
                bool bFoundHw    = false;

                //Decrypt
                byte[] fileReader = File.ReadAllBytes(sFilePath);
                byte[] Key        = JBC_encryption.JBC_ENCRYPTION_KEY;
                byte[] IV         = JBC_encryption.JBC_ENCRYPTION_IV;
                string decrypted  = System.Convert.ToString(RoutinesLibrary.Security.AES.DecryptStringFromBytes_AES(fileReader, Key, IV));

                //Carriage Return (0x0D AKA Char 13) and Line Feed (0x0A AKA Char 10)
                string[] sTextLines = decrypted.Replace("\r", "").Split('\n');

                //Leemos el documento line by line
                foreach (string sTextLine in sTextLines)
                {
                    //Buscar modelo
                    if (!bFoundModel)
                    {
                        //Es una línea de modelo
                        if (sTextLine.IndexOf(MODEL_MARK) == 0)
                        {
                            string[] lineArray = Strings.Split(sTextLine, SEPARATOR, MODEL_LINE_ARGS);

                            //Comprobar el numero de campos de una linea
                            if (lineArray.Length == MODEL_LINE_ARGS)
                            {
                                //Modelo encontrado
                                if (lineArray[1].Trim() == requestInfoUpdateFirmware.model)
                                {
                                    bFoundModel = true;
                                }
                            }
                        }


                        //Buscar hardware
                    }
                    else if (bFoundModel && !bFoundHw)
                    {
                        //Es una línea de hardware
                        if (sTextLine.IndexOf(HARDWARE_MARK) == 0)
                        {
                            string[] lineArray = Strings.Split(sTextLine, SEPARATOR, HARDWARE_LINE_ARGS);

                            //Comprobar el numero de campos de una linea
                            if (lineArray.Length == HARDWARE_LINE_ARGS)
                            {
                                //Hardware encontrado
                                if (lineArray[1].Trim() == requestInfoUpdateFirmware.hardwareVersion || lineArray[1].Trim() == HARDWARE_ALL_VERSION)
                                {
                                    bFoundModel = true;
                                    bFoundHw    = true;
                                }
                            }

                            //Si es una línea de modelo salir
                        }
                        else if (sTextLine.IndexOf(MODEL_MARK) == 0)
                        {
                            break;
                        }

                        //Buscar software
                    }
                    else if (bFoundModel && bFoundHw)
                    {
                        //Es una línea de software
                        if (sTextLine.IndexOf(SOFTWARE_MARK) == 0)
                        {
                            string[] lineArray = Strings.Split(sTextLine, SEPARATOR, SOFTWARE_LINE_ARGS);

                            //Comprobar el numero de campos de una linea
                            if (lineArray.Length >= SOFTWARE_LINE_ARGS_NO_LANG)
                            {
                                //Si es una estación multidioma seleccionamos el idioma
                                string language = SOFTWARE_DEFAULT_LANGUAGE;
                                if (lineArray.Length == SOFTWARE_LINE_ARGS)
                                {
                                    language = lineArray[6].Trim();
                                }

                                //Elemento nuevo
                                if (!htInfoUpdateFirmware.Contains(language))
                                {
                                    dc_FirmwareStation newInfoUpdateFirmware = new dc_FirmwareStation();
                                    newInfoUpdateFirmware.stationUUID     = requestInfoUpdateFirmware.stationUUID;
                                    newInfoUpdateFirmware.model           = requestInfoUpdateFirmware.model;
                                    newInfoUpdateFirmware.hardwareVersion = requestInfoUpdateFirmware.hardwareVersion;
                                    newInfoUpdateFirmware.softwareVersion = lineArray[1].Trim();
                                    newInfoUpdateFirmware.modelVersion    = lineArray[2].Trim();
                                    newInfoUpdateFirmware.protocolVersion = lineArray[3].Trim();
                                    newInfoUpdateFirmware.fileName        = lineArray[4].Trim();
                                    newInfoUpdateFirmware.language        = language;

                                    htInfoUpdateFirmware.Add(language, newInfoUpdateFirmware);
                                    htLatestFirmwareDate.Add(language, lineArray[5].Trim());

                                    //Elemento existente. Comprobar si la fecha es mas reciente
                                }
                                else if (Convert.ToDateTime((htLatestFirmwareDate[language]).ToString()) < Convert.ToDateTime(lineArray[5].Trim()))
                                {
                                    dc_FirmwareStation newInfoUpdateFirmware = (dc_FirmwareStation)(htInfoUpdateFirmware[language]);
                                    newInfoUpdateFirmware.softwareVersion = lineArray[1].Trim();
                                    newInfoUpdateFirmware.modelVersion    = lineArray[2].Trim();
                                    newInfoUpdateFirmware.protocolVersion = lineArray[3].Trim();
                                    newInfoUpdateFirmware.fileName        = lineArray[4].Trim();

                                    htInfoUpdateFirmware[language] = newInfoUpdateFirmware;
                                    htLatestFirmwareDate[language] = lineArray[5].Trim();
                                }
                            }

                            //No es una línea de software, salir
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }

            //Valores a retornar. Convertir de hashtable a list
            List <dc_FirmwareStation> retInfoUpdateFirmware = new List <dc_FirmwareStation>();

            foreach (DictionaryEntry infoUpdateFirmwareEntry in htInfoUpdateFirmware)
            {
                retInfoUpdateFirmware.Add((dc_FirmwareStation)infoUpdateFirmwareEntry.Value);
            }

            return(retInfoUpdateFirmware);
        }
Beispiel #5
0
 /// <summary>
 /// Returns information of all available software version for a station model
 /// </summary>
 /// <param name="infoUpdateFirmware"></param>
 /// <returns>Software versions for a station model</returns>
 public List <dc_FirmwareStation> GetInfoUpdateFirmware(dc_FirmwareStation infoUpdateFirmware)
 {
     return(m_updaterFirmwareManager.GetInfoUpdateFirmware(infoUpdateFirmware));
 }