示例#1
0
        private void SaveSettingMesureBackgroundTask_Completed(object sender, EventArgs e)
        {
            var mesureBackgroundTask = MeasureBackgroundTask.GetInstance;

            mesureBackgroundTask.Completed -= SaveSettingMesureBackgroundTask_Completed;

            try
            {
                var newUserSettings = new UserSettings();

                newUserSettings.isScreenSaverEnable        = IsScreenSaverEnable;
                newUserSettings.isSigFoxComEnable          = IsSigFoxComEnable;
                newUserSettings.isSleepModeEnable          = IsSleepModeEnable;
                newUserSettings.isTempHumiditySensorEnable = IsTempHumiditySensorEnable;
                newUserSettings.isDiagnosticModeEnable     = IsDiagnosticModeEnable;
                newUserSettings.isDebugLedEnable           = IsDebugLedEnable;

                newUserSettings.measureFrequency = MeasureFrequency;
                newUserSettings.productionSiteId = ProductionSiteId;
                newUserSettings.hubMessageAPI    = HubMessageAPI;

                var taskUserSync = Task.Run(async() =>
                {
                    await userSettingsModel.SyncUserSettings(newUserSettings);
                });
                taskUserSync.Wait();

                mesureBackgroundTask.Run();
            }
            catch (Exception ex)
            {
                logModel.AppendLog(Log.CreateErrorLog("Exception on Save Settings", ex));
            }
            finally
            {
                logModel.AppendLog(Log.CreateLog("Settings saved", LogType.Information));
                IsBusy = false;
            }
        }
示例#2
0
        private MeasureBackgroundTask()
        {
            logModel.AppendLog(Log.CreateLog("Measure Service starting...", Log.LogType.System));

            userSettings = new UserSettings();

            var taskUser = Task.Run(async() => { userSettings = await userSettingsModel.GetUserSettingsAsync(); });

            taskUser.Wait();

            logModel.AppendLog(Log.CreateLog("UserSettings retreived", Log.LogType.System));

            //Disable Diagnostic Mode on restart
            if (userSettings.isDiagnosticModeEnable)
            {
                userSettings.isDiagnosticModeEnable = false;

                var taskUserSync = Task.Run(async() =>
                {
                    await userSettingsModel.SyncUserSettings(userSettings);
                });
                taskUserSync.Wait();
            }

            var taskTethering = Task.Run(async() =>
            {
                try
                {
                    var connectedProfile = NetworkInformation.GetInternetConnectionProfile();

                    if (connectedProfile != null)
                    {
                        logModel.AppendLog(Log.CreateLog(String.Format("Connected Profile found - {0}", connectedProfile.ProfileName), Log.LogType.System));
                    }

                    bool isWLANConnection = (connectedProfile == null) ? false : connectedProfile.IsWlanConnectionProfile;

                    if (isWLANConnection == false)
                    {
                        logModel.AppendLog(Log.CreateLog("Device offline", Log.LogType.System));

                        ConnectionProfileFilter filter = new ConnectionProfileFilter();
                        filter.IsWlanConnectionProfile = true;

                        var profile = await NetworkInformation.FindConnectionProfilesAsync(filter);

                        var defaultProfile = profile.FirstOrDefault();

                        if (defaultProfile != null)
                        {
                            logModel.AppendLog(Log.CreateLog(String.Format("Default Profile found - {0}", defaultProfile.ProfileName), Log.LogType.System));

                            var networkOperatorTetheringManager = NetworkOperatorTetheringManager.CreateFromConnectionProfile(defaultProfile);

                            if (networkOperatorTetheringManager.TetheringOperationalState != TetheringOperationalState.On)
                            {
                                var config = new NetworkOperatorTetheringAccessPointConfiguration();

                                config.Ssid       = userSettings.SSID;
                                config.Passphrase = userSettings.ACCESS_POINT_PWD;

                                logModel.AppendLog(Log.CreateLog("Access Point creation init...", Log.LogType.System));
                                await networkOperatorTetheringManager.ConfigureAccessPointAsync(config);

                                var rslt = await networkOperatorTetheringManager.StartTetheringAsync();
                                await Task.Delay(5000);
                                logModel.AppendLog(Log.CreateLog("Access Point creation ending...", Log.LogType.System));

                                if (rslt.Status == TetheringOperationStatus.Success)
                                {
                                    logModel.AppendLog(Log.CreateLog("Access Point created", Log.LogType.System));
                                }
                                else
                                {
                                    logModel.AppendLog(Log.CreateLog(String.Format("Access Point creation failed - {0}", rslt.AdditionalErrorMessage), Log.LogType.Warning));
                                }
                            }
                            else
                            {
                                logModel.AppendLog(Log.CreateLog(String.Format("Access Point already on - {0}", networkOperatorTetheringManager.TetheringOperationalState.ToString()), Log.LogType.System));
                            }
                        }
                        else
                        {
                            logModel.AppendLog(Log.CreateLog("No default profile found", Log.LogType.System));
                        }
                    }
                    else
                    {
                        logModel.AppendLog(Log.CreateLog("No connection profile found", Log.LogType.System));
                    }
                }
                catch (Exception ex)
                {
                    logModel.AppendLog(Log.CreateErrorLog("Error on Access Point init", ex));
                }
            });

            taskTethering.Wait();

            bw.WorkerSupportsCancellation = true;
            bw.WorkerReportsProgress      = true;
            bw.DoWork             += Bw_DoWork;
            bw.RunWorkerCompleted += Bw_RunWorkerCompleted;
            bw.ProgressChanged    += Bw_ProgressChanged;
        }