https://bitbucket.org/daniel_fort/magic-lantern
Raw File
Tip revision: 143ea9e661a68607f4899da90c96bf430162560b authored by Daniel Fort on 13 December 2017, 21:39:44 UTC
Closed branch raw_video_10bit_12bit_LVState-wip2
Tip revision: 143ea9e
LinuxIOManager.py
from IOManager import IOManager
import dbus


class LinuxIOManager(IOManager):

    def __init__(self):
        self.bus = dbus.SystemBus()
        self.hal_manager = self.bus.get_object("org.freedesktop.Hal", 
                                                            "/org/freedesktop/Hal/Manager")
        self.hal_iface = dbus.Interface(self.hal_manager, "org.freedesktop.Hal.Manager")

    def get_device_with_udi(self,  udi):
        obj = self.bus.get_object('org.freedesktop.Hal', udi)
        if obj != None:
            device = dbus.Interface(obj, 'org.freedesktop.Hal.Device')
            return device
        return None

    def get_mount_point(self, drive_num):
        return drive_num.GetProperty('volume.mount_point')

    def enum_removable_drives(self):
        udis = self.hal_iface.FindDeviceByCapability('volume')
        result = []
        for udi in udis:
            # get a hal object for the volume referenced by udi
            volume = self.get_device_with_udi(udi)
            parent_uri = volume.GetProperty('info.parent')
            parent = self.get_device_with_udi(parent_uri)
            if(parent.GetProperty('storage.removable')):
                result = result + [udi]
        return result

    def get_raw_device(self, drive_num):
	volume = self.get_device_with_udi(drive_num)
        return volume.GetProperty('block.device')

    def get_label(self, drive_num):
	volume = self.get_device_with_udi(drive_num)
        return volume.GetProperty('volume.label')

    def get_fs_type(self, drive_num):
	volume = self.get_device_with_udi(drive_num)
        return volume.GetProperty('volume.fsversion')
back to top