def print_device_info(nodemap):
    '\n    This function prints the device information of the camera from the transport\n    layer; please see NodeMapInfo example for more in-depth comments on printing\n    device information from the nodemap.\n\n    :param nodemap: Transport layer device nodemap.\n    :type nodemap: INodeMap\n    :returns: True if successful, False otherwise.\n    :rtype: bool\n    '
    print('*** DEVICE INFORMATION ***\n')
    try:
        result = True
        node_device_information = PySpin.CCategoryPtr(nodemap.GetNode('DeviceInformation'))
        if (PySpin.IsAvailable(node_device_information) and PySpin.IsReadable(node_device_information)):
            features = node_device_information.GetFeatures()
            for feature in features:
                node_feature = PySpin.CValuePtr(feature)
                print(('%s: %s' % (node_feature.GetName(), (node_feature.ToString() if PySpin.IsReadable(node_feature) else 'Node not readable'))))
        else:
            print('Device control information not available.')
    except PySpin.SpinnakerException as ex:
        print(('Error: %s' % ex))
        return False
    return result
This function prints the device information of the camera from the transport
layer; please see NodeMapInfo example for more in-depth comments on printing
device information from the nodemap.

:param nodemap: Transport layer device nodemap.
:type nodemap: INodeMap
:returns: True if successful, False otherwise.
:rtype: bool
def print_device_info(nodemap):
    '\n    This function prints the device information of the camera from the transport\n    layer; please see NodeMapInfo example for more in-depth comments on printing\n    device information from the nodemap.\n\n    :param nodemap: Transport layer device nodemap.\n    :type nodemap: INodeMap\n    :returns: True if successful, False otherwise.\n    :rtype: bool\n    '
    print('*** DEVICE INFORMATION ***\n')
    try:
        result = True
        node_device_information = PySpin.CCategoryPtr(nodemap.GetNode('DeviceInformation'))
        if (PySpin.IsAvailable(node_device_information) and PySpin.IsReadable(node_device_information)):
            features = node_device_information.GetFeatures()
            for feature in features:
                node_feature = PySpin.CValuePtr(feature)
                print(('%s: %s' % (node_feature.GetName(), (node_feature.ToString() if PySpin.IsReadable(node_feature) else 'Node not readable'))))
        else:
            print('Device control information not available.')
    except PySpin.SpinnakerException as ex:
        print(('Error: %s' % ex))
        return False
    return result