|
@@ -19,6 +19,16 @@ static void handler_TheAnswerChanged(UA_UInt32 monId, UA_DataValue *value, void
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+static UA_StatusCode
|
|
|
+nodeIter(UA_NodeId childId, UA_Boolean isInverse, UA_NodeId referenceTypeId, void *handle) {
|
|
|
+ UA_NodeId *parent = (UA_NodeId *) handle;
|
|
|
+
|
|
|
+ if (!isInverse) {
|
|
|
+ printf("%d, %d --- %d ---> NodeId %d, %d\n", parent->namespaceIndex, parent->identifier.numeric, referenceTypeId.identifier.numeric, childId.namespaceIndex, childId.identifier.numeric);
|
|
|
+ }
|
|
|
+ return UA_STATUSCODE_GOOD;
|
|
|
+}
|
|
|
+
|
|
|
int main(int argc, char *argv[]) {
|
|
|
UA_Client *client = UA_Client_new(UA_ClientConfig_standard, Logger_Stdout);
|
|
|
|
|
@@ -86,6 +96,12 @@ int main(int argc, char *argv[]) {
|
|
|
UA_BrowseRequest_deleteMembers(&bReq);
|
|
|
UA_BrowseResponse_deleteMembers(&bResp);
|
|
|
|
|
|
+ // Same thing, less code:
|
|
|
+ UA_NodeId *parent = UA_NodeId_new();
|
|
|
+ *parent = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
|
|
+ UA_Client_forEachChildNodeCall(client, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER), nodeIter, (void *) parent);
|
|
|
+ UA_NodeId_delete(parent);
|
|
|
+
|
|
|
#ifdef UA_ENABLE_SUBSCRIPTIONS
|
|
|
// Create a subscription with interval 0 (immediate)...
|
|
|
UA_UInt32 subId=0;
|