//public static string ToStringValue(this TemperatureUnit e) //{ // switch (e) // { // case TemperatureUnit.Celsius: return "Celsius"; // case TemperatureUnit.Fahrenheit: return "Fahrenheit"; // } // return "NotSpecified(" + e.ToString() + ")"; //} //public static string ToStringValue(this FlapPosition e) //{ // switch (e) // { // case FlapPosition.y_fahrer: return "y_fahrer"; // case FlapPosition.y_fahrer_beifahrer: return "y_fahrer_beifahrer"; // } // return "NotSpecified(" + e.ToString() + ")"; //} public static string ToStringValue(this MassStorageMountState e) { switch (e) { case MassStorageMountState.NotInitialized: return("NotInitialized"); case MassStorageMountState.DeviceConnectFailed: return("DeviceConnectFailed"); case MassStorageMountState.UnknownDeviceConnected: return("UnknownDeviceConnected"); case MassStorageMountState.MassStorageConnected: return("MassStorageConnected"); case MassStorageMountState.Mounted: return("Mounted"); case MassStorageMountState.Unmounted: return("Unmounted"); } return("NotSpecified(" + e.ToString() + ")"); }
public static void Launch(LaunchMode launchMode = LaunchMode.MicroFramework) { try { Comfort.Init(); IntegratedHeatingAndAirConditioning.Init(); _resetCause = GHI.Processor.Watchdog.LastResetCause; blueLed = new OutputPort(FEZPandaIII.Gpio.Led1, false); greenLed = new OutputPort(FEZPandaIII.Gpio.Led2, false); orangeLed = new OutputPort(FEZPandaIII.Gpio.Led3, _resetCause == GHI.Processor.Watchdog.ResetCause.Watchdog); redLed = new OutputPort(FEZPandaIII.Gpio.Led4, false); #if (NETMF && RELEASE) || (OnBoardMonitorEmulator && !DebugOnRealDeviceOverFTDI) _useWatchdog = true; #endif if (_useWatchdog) { GHI.Processor.Watchdog.Enable(watchDogTimeoutInMilliseconds); } settings = Settings.Instance; FileLogger.Create(); InitManagers(); InstrumentClusterElectronics.DateTimeChanged += DateTimeChanged; Logger.Debug("Watchdog.ResetCause: " + (_resetCause == GHI.Processor.Watchdog.ResetCause.Normal ? "Normal" : "Watchdog")); if (_useWatchdog) { Logger.Debug("Watchdog enabled with timeout: " + watchDogTimeoutInMilliseconds); } //SettingsScreen.Instance.Status = version.Length > 11 ? version.Replace(" ", "") : version; //Localization.SetCurrent(RussianLocalization.SystemName); //Localization.SetCurrent(settings.Language); //Comfort.AutoLockDoors = settings.AutoLockDoors; //Comfort.AutoUnlockDoors = settings.AutoUnlockDoors; //Comfort.AutoCloseWindows = settings.AutoCloseWindows; //Comfort.AutoCloseSunroof = settings.AutoCloseSunroof; #region MassStorage //Controller.DeviceConnectFailed += (sss, eee) => //{ // Logger.Error("DeviceConnectFailed!"); // LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(redLed, 1, 100)); // ControllerState = UsbMountState.DeviceConnectFailed; // _removableMediaInsertedSync.Set(); //}; //Controller.UnknownDeviceConnected += (ss, ee) => //{ // Logger.Error("UnknownDeviceConnected!"); // LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(redLed, 2, 100)); // ControllerState = UsbMountState.UnknownDeviceConnected; // _removableMediaInsertedSync.Set(); //}; //Controller.MassStorageConnected += (sender, massStorage) => //{ // Logger.Debug("Controller MassStorageConnected!"); // LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(orangeLed, 2, 100)); // ControllerState = UsbMountState.MassStorageConnected; RemovableMedia.Insert += (s, e) => { LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(orangeLed, 3, 100)); string rootDirectory = VolumeInfo.GetVolumes()[0].RootDirectory; settings = Settings.Init(rootDirectory + "\\imBMW.ini"); FileLogger.Init(rootDirectory + "\\logs", () => VolumeInfo.GetVolumes()[0].FlushAll()); Logger.Debug("Logger initialized."); MassStorageMountState = MassStorageMountState.Mounted; _removableMediaInsertedSync.Set(); }; RemovableMedia.Eject += (s, e) => { FileLogger.Eject(); Logger.Print("RemovableMedia Ejected!"); LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(greenLed, 3, 100)); MassStorageMountState = MassStorageMountState.Unmounted; }; //_massStorage = massStorage; _massStorage = new SDCard(SDCard.SDInterface.SPI); _massStorage.Mount(); //}; #if RELEASE //Controller.Start(); #else #if NETMF // WARNING! Be aware, without this line you can get 'Controller -> DeviceConnectFailed' each time when you start debugging... if (Debugger.IsAttached) #endif { //Controller.Start(); } #endif #endregion LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(orangeLed, 1, 200)); bool isSignalled = _removableMediaInsertedSync.WaitOne(Debugger.IsAttached ? 10000 : 10000, true); if (!isSignalled) // No Storage inserted { InstrumentClusterElectronics.ShowNormalTextWithGong(MassStorageMountState.ToStringValue()); FrontDisplay.RefreshLEDs(LedType.RedBlinking, append: true); LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(redLed, 3, 100)); } else { if (MassStorageMountState == MassStorageMountState.DeviceConnectFailed || MassStorageMountState == MassStorageMountState.UnknownDeviceConnected) { InstrumentClusterElectronics.ShowNormalTextWithGong(MassStorageMountState.ToStringValue()); FrontDisplay.RefreshLEDs(LedType.Red, append: true); LedBlinkingQueueThreadWorker.Enqueue(new LedBlinkingItem(redLed, 4, 100)); ResetBoard(); } } Logger.Debug("MassStorage state: " + MassStorageMountState.ToStringValue()); InstrumentClusterElectronics.RequestDateTime(); Init(); Logger.Debug("Started!"); BordmonitorMenu.MenuButtonHold += () => { FrontDisplay.RefreshLEDs(LedType.Empty); if (Emulator.IsEnabled) { Emulator.PlayerIsPlayingChanged += (s, isPlayingChangedValue) => { if (!isPlayingChangedValue) { ResetBoard(); } }; Radio.PressOnOffToggle(); //Emulator.IsEnabled = false; } else { ResetBoard(); } }; BordmonitorMenu.PhoneButtonHold += () => { VolumioRestApiPlayer.Reboot(); Logger.Warning("Reboot request sent."); }; BordmonitorMenu.EjectButtonHold += () => { UnmountMassStorage(); _massStorage = null; Logger.Warning("UNMOUNTED!"); }; Manager.Instance.AddMessageReceiverForSourceDevice(DeviceAddress.InstrumentClusterElectronics, m => { if (m.Data[0] == 0x11 && m.Data.Length == 2) // Ignition status { GHI.Processor.Watchdog.ResetCounter(); } }); requestIgnitionStateTimer = new Timer(RequestIgnitionStateTimerHandler, null, 0, requestIgnitionStateTimerPeriod); imBMWTest(); Logger.Debug("Actions inited!"); if (launchMode == LaunchMode.MicroFramework) { Thread.Sleep(Timeout.Infinite); } } catch (Exception ex) { LedBlinking(new LedBlinkingItem(redLed, 5, 200)); Thread.Sleep(200); redLed.Write(true); Logger.Error(ex, "while modules initialization"); ResetBoard(); } }