代码之家  ›  专栏  ›  技术社区  ›  clahey

HAL属性何时更新

  •  4
  • clahey  · 技术社区  · 16 年前

    在propertynotified信号期间,我从处理程序调用org.freedesktop.hal.device上的getproperty。我只对已添加或更改的属性调用getProperty。

    在属性添加期间调用getproperty时,会出现org.freedesktop.hal.nosuchproperty异常。我也担心在变化中,我会得到旧的价值观。

    我应该什么时候给getproperty打电话?涉及到什么样的种族条件?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Maksym Gontar    15 年前

    怎么样 装置存在 方法(类) here ):

        if device.PropertyExists('info.product'):
            return device.GetProperty('info.product')
        return "unknown"
    

    属性修改 信号, ex from real world ):

     #
     # _CBHalDeviceConnected
     #
     # INTERNAL
     #
     # Callback triggered when a device is connected through Hal.
     #
    
     def _CBHalDeviceConnected(self, obj_path): 
    ...
     self.device.connect_to_signal("PropertyModified", 
       self._CBHalDeviceAuthStateChanged) 
    ...
    
    #
    # _CBHalDeviceAuthStateChanged
    #
    # INTERNAL
    #
    # Callback triggered when a Hal device property is changed, 
    # for checking authorization state changes
    #
    
    def _CBHalDeviceAuthStateChanged(self,num_changes,properties):
     for property in properties:
     property_name, added, removed = property
     if property_name == "pda.pocketpc.password":
     self.logger.info("_CBHalDeviceAuthStateChanged: 
         device authorization state changed: reauthorizing")
     self._ProcessAuth() 
    

    HAL 0.5.10 Specification
    D-Bus Specification
    D-Bus Tutorial