Ejemplo n.º 1
0
    def _getFeatureInfos(self):
        """
        Gets feature info of all available features. Will
        cause error if object/camera is not opened.

        :returns: list -- feature info for available features.
        """
        # check it's populated as can't populate it in __init__
        if self._featureInfos is None:
            # args
            dummyFeatureInfo = structs.VimbaFeatureInfo()
            numFound = c_uint32(-1)

            # call once to get number of available features
            # Vimba DLL will return an error code
            errorCode = VimbaDLL.featuresList(self._handle,
                                              byref(dummyFeatureInfo),
                                              0,
                                              byref(numFound),
                                              sizeof(dummyFeatureInfo))
            if errorCode != 0:
                raise VimbaException(errorCode)

            # number of features specified by Vimba
            numFeatures = numFound.value

            # args
            featureInfoArray = (structs.VimbaFeatureInfo * numFeatures)()

            # call again to get the features
            # Vimba DLL will return an error code
            errorCode = VimbaDLL.featuresList(self._handle,
                                              featureInfoArray,
                                              numFeatures,
                                              byref(numFound),
                                              sizeof(dummyFeatureInfo))
            if errorCode != 0:
                raise VimbaException(errorCode)

            self._featureInfos = list(
                featInfo for featInfo in featureInfoArray)
        return self._featureInfos