from Plugins.Plugin import PluginDescriptor from Components.Harddisk import harddiskmanager from Tools.Directories import fileExists hotplugNotifier = [ ] bdpoll = None def processHotplugData(self, v): print "hotplug:", v action = v.get("ACTION") device = v.get("DEVPATH") physdevpath = v.get("PHYSDEVPATH") media_state = v.get("X_E2_MEDIA_STATUS") dev = device.split('/')[-1] if action is not None and action == "add": error, blacklisted, removable, is_cdrom, partitions, medium_found = harddiskmanager.addHotplugPartition(dev, physdevpath) if bdpoll and removable or is_cdrom: bdpoll.addDevice(dev, is_cdrom, medium_found) elif action is not None and action == "remove": if bdpoll: bdpoll.removeDevice(dev) harddiskmanager.removeHotplugPartition(dev) elif media_state is not None: if media_state == '1': harddiskmanager.removeHotplugPartition(dev) harddiskmanager.addHotplugPartition(dev, physdevpath) elif media_state == '0': harddiskmanager.removeHotplugPartition(dev) for callback in hotplugNotifier: try: callback(dev, action or media_state) except AttributeError: hotplugNotifier.remove(callback) CDROM_DRIVE_STATUS = 0x5326 CDROM_MEDIA_CHANGED = 0x5325 CDSL_CURRENT = ((int)(~0>>1)) CDS_NO_INFO = 0 CDS_NO_DISC = 1 CDS_TRAY_OPEN = 2 CDS_DRIVE_NOT_READY = 3 CDS_DISC_OK = 4 ENOMEDIUM = 159 IOC_NRBITS = 8 IOC_NRSHIFT = 0 IOC_TYPESHIFT = (IOC_NRSHIFT+IOC_NRBITS) BLKRRPART = ((0x12<