Loading GenICam nodes to camera

My question is: How to load only these nodes which we really need? Aravis gives us the possibility to load each node that is in the genicam xml file, but is any function or tool in Aravis to split nodes to these we need and these which we not. I know that it is very hard to objectively make this partition and i do not even know rules of this selection.

Hi John,

If by “node really needed” you mean node normally accessed by a user, you have to walk through the dom tree starting from the “Root” Category node, checking if each node is implemented and available.

You may want to have a look at arvtool.c, specifically the arv_tool_list_features function.

Cheers.

Thank you for your response.

I understand a way to get the values of all nodes, but I’ve got a problem with nodes that should not be written to the camera. For example, there is a node named GevSCPHostPort which can not be written to the camera after creating the stream. I want to ask if Aravis gives a way to blacklist nodes which can interrupt the working of the application

I guess the Visibility property could be used, but it is not implemented in aravis. Please open a github issue.

Cheers,

Emmanuel.

I have just checked the genicam standard feature naming convention. Vivibility will not help, as for example, GevSCPHostPort standard visibility value is Guru.

Yes, it is Guru but is it a problem? This is one of these nodes which I will not want to write, so the idea is to use only Beginner and Expert Visibility. Moreover, GenICam Standard Features Naming Convention(version 2.3) says:

G: Guru – Advanced features that might bring the cameras into a state where it will not
work properly anymore if it is set incorrectly for the cameras current mode of operation.

I want also to ask about getting the acces mode of node. As i see in the GitHub repo there is function called “arv_gc_feature_node_get_access_mode” which is not avaible because of always false in if statement.

#if 0
ArvGcAccessMode
arv_gc_feature_node_get_access_mode (ArvGcFeatureNode *self)
{
    g_return_val_if_fail (ARV_IS_GC_FEATURE_NODE (self), ARV_GC_ACCESS_MODE_RW);

    if (ARV_IS_GC_PROPERTY_NODE (self->priv->imposed_access_mode))
        return arv_gc_property_node_get_access_mode (self->priv->imposed_access_mode, 
ARV_GC_ACCESS_MODE_RW);

return arv_gc_property_node_get_access_mode (self->priv->access_mode, 
ARV_GC_ACCESS_MODE_RW);
}
#endif

Will it be enabled in the future?

It is disabled because the implementation is incomplete. The current node only check the value of the AccessMode and ImposedAccessMode node properties, which only works for register nodes. A complete implementation should be able to return the correct access mode for other node than registers, by checking the access mode of the referenced nodes.

Okay, I understand. Thank you very much for your help.

It would be great if you could code the implementation of this function in the future.
I will create an issue on GitHub with this.