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 }
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); }
/// <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)); }