code: def gpio_properties(self):
          
          res = self._dll.JLINK_EMU_GPIO_GetProps(0, 0)
          if res < 0:
              raise errors.JLinkException(res)
  
          num_props = res
          buf = (structs.JLinkGPIODescriptor * num_props)()
          res = self._dll.JLINK_EMU_GPIO_GetProps(ctypes.byref(buf), num_props)
          if res < 0:
              raise errors.JLinkException(res)
  
          return list(buf)
docs: Returns the properties of the user-controllable GPIOs.
  
          Provided the device supports user-controllable GPIOs, they will be
          returned by this method.
  
          Args:
            self (JLink): the ``JLink`` instance
  
          Returns:
            A list of ``JLinkGPIODescriptor`` instances totalling the number of
            requested properties.
  
          Raises:
            JLinkException: on error.