protected Device MatchEvent <SERVICE>(ServiceEvent serviceEvent, ServiceEventType eventType) where SERVICE : class { if (serviceEvent.ServiceEventType != eventType) { return(null); } var device = serviceEvent.Subject as Device; if (device == null) { return(null); } var service = device.DeviceDriver as SERVICE; if (service == null) { return(null); } //HAL.DebugWriteLine("BaseService:MatchEvent()-Z"); //HAL.Pause(); return(device); }
private void DispatchEvents(ServiceEvent serviceEvent) { int i = 0; while (true) { BaseService service; //HAL.DebugWriteLine("ServiceManager:SendEvents():Loop-A: " + i.ToString() + "/" + services.Count.ToString()); //HAL.Pause(); lock (_lockServices) { if (i >= services.Count) { return; } service = services[i]; } //HAL.DebugWriteLine("ServiceManager:SendEvents():Loop-B: " + i.ToString() + "/" + services.Count.ToString()); //HAL.Pause(); i++; //HAL.DebugWriteLine("ServiceManager:SendEvents():Loop-C: " + i.ToString() + "/" + services.Count.ToString()); //HAL.Pause(); service.PostEvent(serviceEvent); //HAL.DebugWriteLine("ServiceManager:SendEvents():Post-PostEvent"); //HAL.Pause(); } }
public void AddEvent(ServiceEvent serviceEvent) { lock (_eventLock) { events.Add(serviceEvent); } SendEvents(); }
public override void PostEvent(ServiceEvent serviceEvent) { //HAL.DebugWriteLine("PCIDeviceService:PostEvent()"); //HAL.Pause(); var device = MatchEvent <PCIDevice>(serviceEvent, ServiceEventType.Start); if (device == null) { return; } var pciDevice = device.DeviceDriver as PCIDevice; // Find the best matching driver PCIDeviceDriverRegistryEntry matchedDriver = null; int matchPriorty = 0; // Start ISA Drivers var drivers = DeviceService.GetDeviceDrivers(DeviceBusType.PCI); foreach (var driver in drivers) { if (!(driver is PCIDeviceDriverRegistryEntry pciDriver)) { continue; } if (!IsMatch(pciDriver, pciDevice)) { continue; } int priority = GetMatchedPriority(pciDriver, pciDevice); if (priority <= 0) { continue; } if (priority < matchPriorty || matchPriorty == 0) { matchedDriver = pciDriver; matchPriorty = priority; } } if (matchedDriver == null) { return; // no driver found } StartDevice(matchedDriver, device, pciDevice); }
public override void PostEvent(ServiceEvent serviceEvent) { var device = MatchEvent <IPCIControllerLegacy>(serviceEvent, ServiceEventType.Start); if (device == null) { return; } var pciController = device.DeviceDriver as IPCIControllerLegacy; CreatePCIDevices(device, pciController); }
public override void PostEvent(ServiceEvent serviceEvent) { //HAL.DebugWriteLine("PCIControllerService:PostEvent()"); //HAL.Pause(); var device = MatchEvent <IPCIController>(serviceEvent, ServiceEventType.Start); if (device == null) { return; } var pciController = device.DeviceDriver as IPCIController; CreatePCIDevices(device, pciController); }
public override void PostEvent(ServiceEvent serviceEvent) { //HAL.DebugWriteLine("DiskDeviceService:PostEvent()-A"); //HAL.Pause(); var device = MatchEvent <IDiskControllerDevice>(serviceEvent, ServiceEventType.Start); if (device == null) { return; } // This mounts everything detected var controller = device.DeviceDriver as IDiskControllerDevice; var deviceService = device.DeviceService; for (uint drive = 0; drive < controller.MaximunDriveCount; drive++) { if (!controller.Open(drive)) { continue; } if (controller.GetTotalSectors(drive) == 0) { continue; } // don't mount twice if (deviceService.CheckExists(device, drive)) { return; } var configuration = new DiskDeviceConfiguration() { DriveNbr = drive, ReadOnly = false }; deviceService.Initialize(new DiskDeviceDriver(), device, true, configuration); } }
public void AddEvent(ServiceEvent serviceEvent) { //HAL.DebugWriteLine("ServiceManager:AddEvent():Start"); //HAL.Pause(); lock (_lockEvents) { events.Add(serviceEvent); } //HAL.DebugWriteLine("ServiceManager:AddEvent():SendEvents"); //HAL.Pause(); SendEvents(); //HAL.DebugWriteLine("ServiceManager:AddEvent():End"); //HAL.Pause(); }
/// <summary> /// Posts the event. /// </summary> /// <param name="serviceEvent">The service event.</param> public virtual void PostEvent(ServiceEvent serviceEvent) { }