From e48d4c04cf47d111224d26443b4f85f2fd5c3b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Mon, 26 Jan 2026 16:37:15 +0100 Subject: [PATCH 01/12] Code review pt.1 --- examples/tree_traversal.c | 231 +++++++++++++++++++++----------------- 1 file changed, 126 insertions(+), 105 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index f54f401..6d80c93 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -8,81 +8,94 @@ enum ComponentType { - Unk = 0, - Device, - FunctionBlock, - IOFolder, - Channel, - Server, - Signal, - Folder, - Component, - SyncComponent, - InputPort + DaqUnknown = 0, + DaqDevice, + DaqFunctionBlock, + DaqIOFolder, + DaqChannel, + DaqServer, + DaqSignal, + DaqFolder, + DaqComponent, + DaqSyncComponent, + DaqInputPort }; -void componentTreePrintOut(daqDevice* headDevice, daqDict** listOfAvailableDevices, daqBool printout); +void addDaqComponentToDict(daqDict* listOfAvailableComponents, daqComponent* component); -void printDaqSignal(daqSignal* signal, daqDict* listOfAvailableDevices, daqBool printout); -void printInputPort(daqInputPort* inputPort, daqDict* listOfAvailableDevices, daqBool printout); -void printDaqSyncComponent(daqSyncComponent* syncComp, daqDict* listOfAvailableDevices, daqBool printout); -void printDaqServer(daqServer* server, daqDict* listOfAvailableDevices, daqBool printout); -void printDaqFolder(daqFolder* folder, daqDict* listOfAvailableDevices, daqBool printout); -void printDaqFunctionBlock(daqFunctionBlock* functionBlock, daqDict* listOfAvailableDevices, daqBool printout); -void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool printout); +void printComponentTree(daqDevice* headDevice, daqDict** listOfAvailableComponents, daqBool printout); -void addDaqComponentToDict(daqDict* listOfAvailableDevices, daqComponent* component); +void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqFunctionBlock(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); -void addDaqComponentToDict(daqDict* listOfAvailableDevices, daqComponent* component) +void printDaqFolder(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); + +void printDaqServer(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); + +void printDaqSyncComponent(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); + +void printInputPort(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); + +void printDaqSignal(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); + +void addDaqComponentToDict(daqDict* listOfAvailableComponents, daqComponent* component) { daqString* globalId = NULL; daqString* description = NULL; daqComponent_getGlobalId(component, &globalId); daqComponent_getDescription(component, &description); - daqDict_set(listOfAvailableDevices, globalId, description); + daqDict_set(listOfAvailableComponents, globalId, description); daqReleaseRef(globalId); daqReleaseRef(description); } -void componentTreePrintOut(daqDevice* headDevice, daqDict** listOfAvailableDevices, daqBool printout) +void printComponentTree(daqDevice* headDevice, daqDict** listOfAvailableComponents, daqBool printout) { - daqDict_createDict(listOfAvailableDevices); - printDaqDevice(headDevice, *listOfAvailableDevices, printout); + daqDict_createDict(listOfAvailableComponents); + printDaqDevice(headDevice, *listOfAvailableComponents, printout); } -void printObjectList(daqList* list, daqDict* listOfAvailableDevices, daqBool printout) +enum ComponentType getComponentType(daqBaseObject* baseObject) { - daqBaseObject* listMember = NULL; - daqSizeT count = 0; - daqList_getCount(list, &count); - if (count <= 0) - return; - daqList_getItemAt(list, 0, &listMember); - enum ComponentType componentType = Unk; + enum ComponentType componentType = DaqUnknown; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_DEVICE_INTF_ID) && (componentType == Unk)) - componentType = Device; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqDevice; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_SERVER_INTF_ID) && (componentType == Unk)) - componentType = Server; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SERVER_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqServer; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_SYNC_COMPONENT_INTF_ID) && (componentType == Unk)) - componentType = SyncComponent; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqSyncComponent; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_FUNCTION_BLOCK_INTF_ID) && (componentType == Unk)) - componentType = FunctionBlock; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqFunctionBlock; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_FOLDER_INTF_ID) && (componentType == Unk)) - componentType = Folder; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FOLDER_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqFolder; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_INPUT_PORT_INTF_ID) && (componentType == Unk)) - componentType = InputPort; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_INPUT_PORT_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqInputPort; - if (DAQ_SUPPORTS_INTERFACE(listMember, DAQ_SIGNAL_INTF_ID) && (componentType == Unk)) - componentType = Signal; + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SIGNAL_INTF_ID) && (componentType == DaqUnknown)) + componentType = DaqSignal; + + return componentType; +} + +void printObjectList(daqList* list, daqDict* listOfAvailableComponents, daqBool printout) +{ + daqBaseObject* listMember = NULL; + daqSizeT count = 0; + daqList_getCount(list, &count); + if (count <= 0) + return; + daqList_getItemAt(list, 0, &listMember); + + enum ComponentType componentType = getComponentType(listMember); daqSizeT numberOfObjects = 0; daqList_getCount(list, &numberOfObjects); @@ -93,66 +106,45 @@ void printObjectList(daqList* list, daqDict* listOfAvailableDevices, daqBool pri switch (componentType) { - case Device: + case DaqDevice: { - daqDevice* device = NULL; - daqQueryInterface(listMember, DAQ_DEVICE_INTF_ID, &device); - printDaqDevice(device, listOfAvailableDevices, printout); - daqReleaseRef(device); + printDaqDevice(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } - case Server: + case DaqServer: { - daqServer* server = NULL; - daqQueryInterface(listMember, DAQ_SERVER_INTF_ID, &server); - printDaqServer(server, listOfAvailableDevices, printout); - daqReleaseRef(server); + printDaqServer(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } - case SyncComponent: + case DaqSyncComponent: { - daqSyncComponent* syncComponent = NULL; - daqQueryInterface(listMember, DAQ_SYNC_COMPONENT_INTF_ID, &syncComponent); - printDaqSyncComponent(syncComponent, listOfAvailableDevices, printout); - daqReleaseRef(syncComponent); + printDaqSyncComponent(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } - case FunctionBlock: + case DaqFunctionBlock: { - daqFunctionBlock* functionBlock = NULL; - daqQueryInterface(listMember, DAQ_FUNCTION_BLOCK_INTF_ID, &functionBlock); - printDaqFunctionBlock(functionBlock, listOfAvailableDevices, printout); - daqReleaseRef(functionBlock); + printDaqFunctionBlock(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } - case Folder: + case DaqFolder: { - daqFolder* folder = NULL; - daqQueryInterface(listMember, DAQ_FOLDER_INTF_ID, &folder); - printDaqFolder(folder, listOfAvailableDevices, printout); - daqReleaseRef(folder); + printDaqFolder(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } - case InputPort: + case DaqInputPort: { - daqInputPort* inputPort = NULL; - daqQueryInterface(listMember, DAQ_INPUT_PORT_INTF_ID, &inputPort); - printInputPort(inputPort, listOfAvailableDevices, printout); - daqReleaseRef(inputPort); + printInputPort(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } - case Signal: + case DaqSignal: { - daqSignal* signal = NULL; - daqQueryInterface(listMember, DAQ_SIGNAL_INTF_ID, &signal); - printDaqSignal(signal, listOfAvailableDevices, printout); - daqReleaseRef(signal); + printDaqSignal(listMember, listOfAvailableComponents, printout); daqReleaseRef(listMember); break; } @@ -165,8 +157,10 @@ void printObjectList(daqList* list, daqDict* listOfAvailableDevices, daqBool pri } } -void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool printout) +void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) { + daqDevice* device = NULL; + daqQueryInterface(baseObject, DAQ_DEVICE_INTF_ID, &device); daqString* name = NULL; daqComponent_getName((daqComponent*)device, &name); @@ -175,13 +169,13 @@ void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool daqReleaseRef(name); - addDaqComponentToDict(listOfAvailableDevices, (daqComponent*) device); + addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) device); daqFolder* ioFolder = NULL; daqDevice_getInputsOutputsFolder(device, &ioFolder); if (ioFolder != NULL) { - printDaqFolder(ioFolder, listOfAvailableDevices, printout); + printDaqFolder(ioFolder, listOfAvailableComponents, printout); daqReleaseRef(ioFolder); } @@ -189,7 +183,7 @@ void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool daqDevice_getSyncComponent(device, &syncComponent); if (syncComponent != NULL) { - printDaqSyncComponent(syncComponent, listOfAvailableDevices, printout); + printDaqSyncComponent(syncComponent, listOfAvailableComponents, printout); daqReleaseRef(syncComponent); } @@ -197,7 +191,7 @@ void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool daqDevice_getDevices(device, &devices, NULL); if (devices != NULL) { - printObjectList(devices, listOfAvailableDevices, printout); + printObjectList(devices, listOfAvailableComponents, printout); daqReleaseRef(devices); } @@ -205,7 +199,7 @@ void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool daqDevice_getFunctionBlocks(device, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, listOfAvailableDevices, printout); + printObjectList(functionBlocks, listOfAvailableComponents, printout); daqReleaseRef(functionBlocks); } @@ -213,13 +207,17 @@ void printDaqDevice(daqDevice* device, daqDict* listOfAvailableDevices, daqBool daqDevice_getServers(device, &servers); if (servers != NULL) { - printObjectList(servers, listOfAvailableDevices, printout); + printObjectList(servers, listOfAvailableComponents, printout); daqReleaseRef(servers); } + + daqReleaseRef(device); } -void printDaqFunctionBlock(daqFunctionBlock* functionBlock, daqDict* listOfAvailableDevices, daqBool printout) +void printDaqFunctionBlock(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) { + daqFunctionBlock* functionBlock = NULL; + daqQueryInterface(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID, &functionBlock); daqString* name = NULL; daqComponent_getName((daqComponent*)functionBlock, &name); @@ -228,13 +226,13 @@ void printDaqFunctionBlock(daqFunctionBlock* functionBlock, daqDict* listOfAvail daqReleaseRef(name); - addDaqComponentToDict(listOfAvailableDevices, (daqComponent*) functionBlock); + addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) functionBlock); daqList* functionBlocks = NULL; daqFunctionBlock_getFunctionBlocks(functionBlock, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, listOfAvailableDevices, printout); + printObjectList(functionBlocks, listOfAvailableComponents, printout); daqReleaseRef(functionBlocks); } @@ -242,7 +240,7 @@ void printDaqFunctionBlock(daqFunctionBlock* functionBlock, daqDict* listOfAvail daqFunctionBlock_getInputPorts(functionBlock, &inputPorts, NULL); if (inputPorts != NULL) { - printObjectList(inputPorts, listOfAvailableDevices, printout); + printObjectList(inputPorts, listOfAvailableComponents, printout); daqReleaseRef(inputPorts); } @@ -250,13 +248,17 @@ void printDaqFunctionBlock(daqFunctionBlock* functionBlock, daqDict* listOfAvail daqFunctionBlock_getSignals(functionBlock, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, listOfAvailableDevices, printout); + printObjectList(listOfSignals, listOfAvailableComponents, printout); daqReleaseRef(listOfSignals); } + + daqReleaseRef(functionBlock); } -void printDaqFolder(daqFolder* folder, daqDict* listOfAllDevices, daqBool printout) +void printDaqFolder(daqBaseObject* baseObject, daqDict* listOfAllDevices, daqBool printout) { + daqFolder* folder = NULL; + daqQueryInterface(baseObject, DAQ_FOLDER_INTF_ID, &folder); daqString* name = NULL; daqComponent_getName((daqComponent*)folder, &name); @@ -275,10 +277,15 @@ void printDaqFolder(daqFolder* folder, daqDict* listOfAllDevices, daqBool printo printObjectList(listOfItems, listOfAllDevices, printout); daqReleaseRef(listOfItems); } + + daqReleaseRef(folder); } -void printDaqServer(daqServer* server, daqDict* listOfAllAvailableDevices, daqBool printout) +void printDaqServer(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) { + daqServer* server = NULL; + daqQueryInterface(baseObject, DAQ_SERVER_INTF_ID, &server); + daqString* name = NULL; daqComponent_getName((daqComponent*)server, &name); @@ -287,19 +294,23 @@ void printDaqServer(daqServer* server, daqDict* listOfAllAvailableDevices, daqBo daqReleaseRef(name); - addDaqComponentToDict(listOfAllAvailableDevices, (daqComponent*) server); + addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) server); daqList* listOfSignals = NULL; daqServer_getSignals(server, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, listOfAllAvailableDevices, printout); + printObjectList(listOfSignals, listOfAvailableComponents, printout); daqReleaseRef(listOfSignals); } + + daqReleaseRef(server); } -void printDaqSyncComponent(daqSyncComponent* syncComp, daqDict* listOfAvailableDevices, daqBool printout) +void printDaqSyncComponent(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) { + daqSyncComponent* syncComp = NULL; + daqQueryInterface(baseObject, DAQ_SYNC_COMPONENT_INTF_ID, &syncComp); daqString* name = NULL; daqComponent_getName((daqComponent*)syncComp, &name); @@ -308,11 +319,15 @@ void printDaqSyncComponent(daqSyncComponent* syncComp, daqDict* listOfAvailableD daqReleaseRef(name); - addDaqComponentToDict(listOfAvailableDevices, (daqComponent*) syncComp); + addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) syncComp); + + daqReleaseRef(syncComp); } -void printInputPort(daqInputPort* inputPort, daqDict* listOfAvailableDevices, daqBool printout) +void printInputPort(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) { + daqInputPort* inputPort = NULL; + daqQueryInterface(baseObject, DAQ_INPUT_PORT_INTF_ID, &inputPort); daqString* name = NULL; daqComponent_getName((daqComponent*)inputPort, &name); @@ -321,11 +336,15 @@ void printInputPort(daqInputPort* inputPort, daqDict* listOfAvailableDevices, da daqReleaseRef(name); - addDaqComponentToDict(listOfAvailableDevices, (daqComponent*) inputPort); + addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) inputPort); + + daqReleaseRef(inputPort); } -void printDaqSignal(daqSignal* signal, daqDict* listOfAvailableDevices, daqBool printout) +void printDaqSignal(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) { + daqSignal* signal = NULL; + daqQueryInterface(baseObject, DAQ_SIGNAL_INTF_ID, &signal); daqString* name = NULL; daqComponent_getName((daqComponent*)signal, &name); @@ -334,7 +353,9 @@ void printDaqSignal(daqSignal* signal, daqDict* listOfAvailableDevices, daqBool daqReleaseRef(name); - addDaqComponentToDict(listOfAvailableDevices, (daqComponent*) signal); + addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) signal); + + daqReleaseRef(signal); } int main() @@ -348,7 +369,7 @@ int main() daqDict* listOfComponents = NULL; - componentTreePrintOut((daqDevice*)instance, &listOfComponents, True); + printComponentTree((daqDevice*)instance, &listOfComponents, True); daqSizeT count = 0; daqDict_getCount(listOfComponents, &count); From 8afe7606958dacb159a060a956fef6f762b4a98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Tue, 27 Jan 2026 10:03:28 +0100 Subject: [PATCH 02/12] Addressed code review --- examples/tree_traversal.c | 227 +++++++++++++++----------------------- 1 file changed, 86 insertions(+), 141 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 6d80c93..0cf0b4c 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -21,72 +21,58 @@ enum ComponentType DaqInputPort }; -void addDaqComponentToDict(daqDict* listOfAvailableComponents, daqComponent* component); +void printComponentTree(daqDevice* headDevice, daqBool printout); -void printComponentTree(daqDevice* headDevice, daqDict** listOfAvailableComponents, daqBool printout); +enum ComponentType getComponentType(daqBaseObject* baseObject); -void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqDevice(daqBaseObject* baseObject, daqBool printout); -void printDaqFunctionBlock(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqFunctionBlock(daqBaseObject* baseObject, daqBool printout); -void printDaqFolder(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqFolder(daqBaseObject* baseObject, daqBool printout); -void printDaqServer(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqServer(daqBaseObject* baseObject, daqBool printout); -void printDaqSyncComponent(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqSyncComponent(daqBaseObject* baseObject, daqBool printout); -void printInputPort(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printInputPort(daqBaseObject* baseObject, daqBool printout); -void printDaqSignal(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout); +void printDaqSignal(daqBaseObject* baseObject, daqBool printout); -void addDaqComponentToDict(daqDict* listOfAvailableComponents, daqComponent* component) +void printComponentTree(daqDevice* headDevice, daqBool printout) { - daqString* globalId = NULL; - daqString* description = NULL; - daqComponent_getGlobalId(component, &globalId); - daqComponent_getDescription(component, &description); - - daqDict_set(listOfAvailableComponents, globalId, description); - - daqReleaseRef(globalId); - daqReleaseRef(description); -} - -void printComponentTree(daqDevice* headDevice, daqDict** listOfAvailableComponents, daqBool printout) -{ - daqDict_createDict(listOfAvailableComponents); - printDaqDevice(headDevice, *listOfAvailableComponents, printout); + printDaqDevice(headDevice, printout); } enum ComponentType getComponentType(daqBaseObject* baseObject) { enum ComponentType componentType = DaqUnknown; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID) && (componentType == DaqUnknown)) + if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID)) componentType = DaqDevice; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SERVER_INTF_ID) && (componentType == DaqUnknown)) + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SERVER_INTF_ID)) componentType = DaqServer; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID) && (componentType == DaqUnknown)) + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID)) componentType = DaqSyncComponent; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID) && (componentType == DaqUnknown)) + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID)) componentType = DaqFunctionBlock; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FOLDER_INTF_ID) && (componentType == DaqUnknown)) + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FOLDER_INTF_ID)) componentType = DaqFolder; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_INPUT_PORT_INTF_ID) && (componentType == DaqUnknown)) + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_INPUT_PORT_INTF_ID)) componentType = DaqInputPort; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SIGNAL_INTF_ID) && (componentType == DaqUnknown)) + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SIGNAL_INTF_ID)) componentType = DaqSignal; return componentType; } -void printObjectList(daqList* list, daqDict* listOfAvailableComponents, daqBool printout) +void printObjectList(daqList* list, enum ComponentType compType, daqBool printout) { daqBaseObject* listMember = NULL; daqSizeT count = 0; @@ -95,12 +81,15 @@ void printObjectList(daqList* list, daqDict* listOfAvailableComponents, daqBool return; daqList_getItemAt(list, 0, &listMember); - enum ComponentType componentType = getComponentType(listMember); + enum ComponentType componentType = compType; + + if (componentType == DaqUnknown) + componentType = getComponentType(listMember); - daqSizeT numberOfObjects = 0; - daqList_getCount(list, &numberOfObjects); + count = 0; + daqList_getCount(list, &count); - for (daqSizeT i = 0; i < numberOfObjects; i++) + for (daqSizeT i = 0; i < count; i++) { daqList_getItemAt(list, i, &listMember); @@ -108,43 +97,43 @@ void printObjectList(daqList* list, daqDict* listOfAvailableComponents, daqBool { case DaqDevice: { - printDaqDevice(listMember, listOfAvailableComponents, printout); + printDaqDevice(listMember, printout); daqReleaseRef(listMember); break; } case DaqServer: { - printDaqServer(listMember, listOfAvailableComponents, printout); + printDaqServer(listMember, printout); daqReleaseRef(listMember); break; } case DaqSyncComponent: { - printDaqSyncComponent(listMember, listOfAvailableComponents, printout); + printDaqSyncComponent(listMember, printout); daqReleaseRef(listMember); break; } case DaqFunctionBlock: { - printDaqFunctionBlock(listMember, listOfAvailableComponents, printout); + printDaqFunctionBlock(listMember, printout); daqReleaseRef(listMember); break; } case DaqFolder: { - printDaqFolder(listMember, listOfAvailableComponents, printout); + printDaqFolder(listMember, printout); daqReleaseRef(listMember); break; } case DaqInputPort: { - printInputPort(listMember, listOfAvailableComponents, printout); + printInputPort(listMember, printout); daqReleaseRef(listMember); break; } case DaqSignal: { - printDaqSignal(listMember, listOfAvailableComponents, printout); + printDaqSignal(listMember, printout); daqReleaseRef(listMember); break; } @@ -157,25 +146,23 @@ void printObjectList(daqList* list, daqDict* listOfAvailableComponents, daqBool } } -void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) +void printDaqDevice(daqBaseObject* baseObject, daqBool printout) { daqDevice* device = NULL; daqQueryInterface(baseObject, DAQ_DEVICE_INTF_ID, &device); - daqString* name = NULL; - daqComponent_getName((daqComponent*)device, &name); - - if (printout && name != NULL) - printDaqFormattedString("Device: %s\n", name); + daqString* localId = NULL; + daqComponent_getLocalId((daqComponent*)device, &localId); - daqReleaseRef(name); + if (printout && localId != NULL) + printDaqFormattedString("Device: %s\n", localId); - addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) device); + daqReleaseRef(localId); daqFolder* ioFolder = NULL; daqDevice_getInputsOutputsFolder(device, &ioFolder); if (ioFolder != NULL) { - printDaqFolder(ioFolder, listOfAvailableComponents, printout); + printDaqFolder(ioFolder, printout); daqReleaseRef(ioFolder); } @@ -183,7 +170,7 @@ void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponent daqDevice_getSyncComponent(device, &syncComponent); if (syncComponent != NULL) { - printDaqSyncComponent(syncComponent, listOfAvailableComponents, printout); + printDaqSyncComponent(syncComponent, printout); daqReleaseRef(syncComponent); } @@ -191,7 +178,7 @@ void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponent daqDevice_getDevices(device, &devices, NULL); if (devices != NULL) { - printObjectList(devices, listOfAvailableComponents, printout); + printObjectList(devices, DaqDevice, printout); daqReleaseRef(devices); } @@ -199,7 +186,7 @@ void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponent daqDevice_getFunctionBlocks(device, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, listOfAvailableComponents, printout); + printObjectList(functionBlocks, DaqFunctionBlock, printout); daqReleaseRef(functionBlocks); } @@ -207,32 +194,30 @@ void printDaqDevice(daqBaseObject* baseObject, daqDict* listOfAvailableComponent daqDevice_getServers(device, &servers); if (servers != NULL) { - printObjectList(servers, listOfAvailableComponents, printout); + printObjectList(servers, DaqServer, printout); daqReleaseRef(servers); } daqReleaseRef(device); } -void printDaqFunctionBlock(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) +void printDaqFunctionBlock(daqBaseObject* baseObject, daqBool printout) { daqFunctionBlock* functionBlock = NULL; daqQueryInterface(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID, &functionBlock); - daqString* name = NULL; - daqComponent_getName((daqComponent*)functionBlock, &name); - - if (printout && name != NULL) - printDaqFormattedString("Function block: %s\n", name); + daqString* localId = NULL; + daqComponent_getLocalId((daqComponent*)functionBlock, &localId); - daqReleaseRef(name); + if (printout && localId != NULL) + printDaqFormattedString("Function block: %s\n", localId); - addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) functionBlock); + daqReleaseRef(localId); daqList* functionBlocks = NULL; daqFunctionBlock_getFunctionBlocks(functionBlock, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, listOfAvailableComponents, printout); + printObjectList(functionBlocks, DaqFunctionBlock, printout); daqReleaseRef(functionBlocks); } @@ -240,7 +225,7 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, daqDict* listOfAvailableCo daqFunctionBlock_getInputPorts(functionBlock, &inputPorts, NULL); if (inputPorts != NULL) { - printObjectList(inputPorts, listOfAvailableComponents, printout); + printObjectList(inputPorts, DaqInputPort, printout); daqReleaseRef(inputPorts); } @@ -248,112 +233,101 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, daqDict* listOfAvailableCo daqFunctionBlock_getSignals(functionBlock, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, listOfAvailableComponents, printout); + printObjectList(listOfSignals, DaqSignal, printout); daqReleaseRef(listOfSignals); } daqReleaseRef(functionBlock); } -void printDaqFolder(daqBaseObject* baseObject, daqDict* listOfAllDevices, daqBool printout) +void printDaqFolder(daqBaseObject* baseObject, daqBool printout) { daqFolder* folder = NULL; daqQueryInterface(baseObject, DAQ_FOLDER_INTF_ID, &folder); - daqString* name = NULL; - daqComponent_getName((daqComponent*)folder, &name); + daqString* localId = NULL; + daqComponent_getName((daqComponent*)folder, &localId); + if (printout && localId!=NULL) + printDaqFormattedString("Folder: %s\n", localId); - if (printout&& name!=NULL) - printDaqFormattedString("Folder: %s\n", name); - - daqReleaseRef(name); - - addDaqComponentToDict(listOfAllDevices, (daqComponent*) folder); + daqReleaseRef(localId); daqList* listOfItems = NULL; daqFolder_getItems(folder, &listOfItems, NULL); if (listOfItems != NULL) { - printObjectList(listOfItems, listOfAllDevices, printout); + printObjectList(listOfItems, DaqUnknown, printout); daqReleaseRef(listOfItems); } daqReleaseRef(folder); } -void printDaqServer(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) +void printDaqServer(daqBaseObject* baseObject, daqBool printout) { daqServer* server = NULL; daqQueryInterface(baseObject, DAQ_SERVER_INTF_ID, &server); - daqString* name = NULL; - daqComponent_getName((daqComponent*)server, &name); - - if(printout && name != NULL) - printDaqFormattedString("Server: %s\n", name); + daqString* localId = NULL; + daqComponent_getLocalId((daqComponent*)server, &localId); - daqReleaseRef(name); + if(printout && localId != NULL) + printDaqFormattedString("Server: %s\n", localId); - addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) server); + daqReleaseRef(localId); daqList* listOfSignals = NULL; daqServer_getSignals(server, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, listOfAvailableComponents, printout); + printObjectList(listOfSignals, DaqSignal, printout); daqReleaseRef(listOfSignals); } daqReleaseRef(server); } -void printDaqSyncComponent(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) +void printDaqSyncComponent(daqBaseObject* baseObject, daqBool printout) { daqSyncComponent* syncComp = NULL; daqQueryInterface(baseObject, DAQ_SYNC_COMPONENT_INTF_ID, &syncComp); - daqString* name = NULL; - daqComponent_getName((daqComponent*)syncComp, &name); + daqString* localId = NULL; + daqComponent_getLocalId((daqComponent*)syncComp, &localId); - if(printout && name != NULL) - printDaqFormattedString("Sync component: %s\n", name); + if(printout && localId != NULL) + printDaqFormattedString("Sync component: %s\n", localId); - daqReleaseRef(name); - - addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) syncComp); + daqReleaseRef(localId); daqReleaseRef(syncComp); } -void printInputPort(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) +void printInputPort(daqBaseObject* baseObject, daqBool printout) { daqInputPort* inputPort = NULL; daqQueryInterface(baseObject, DAQ_INPUT_PORT_INTF_ID, &inputPort); - daqString* name = NULL; - daqComponent_getName((daqComponent*)inputPort, &name); - - if (printout && name != NULL) - printDaqFormattedString("Input port: %s\n", name); + daqString* localId = NULL; + daqComponent_getLocalId((daqComponent*)inputPort, &localId); - daqReleaseRef(name); + if (printout && localId != NULL) + printDaqFormattedString("Input port: %s\n", localId); - addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) inputPort); + daqReleaseRef(localId); daqReleaseRef(inputPort); } -void printDaqSignal(daqBaseObject* baseObject, daqDict* listOfAvailableComponents, daqBool printout) +void printDaqSignal(daqBaseObject* baseObject, daqBool printout) { daqSignal* signal = NULL; daqQueryInterface(baseObject, DAQ_SIGNAL_INTF_ID, &signal); - daqString* name = NULL; - daqComponent_getName((daqComponent*)signal, &name); - - if (printout && name != NULL) - printDaqFormattedString("Signal: %s\n", name); + daqString* localId = NULL; + daqComponent_getLocalId((daqComponent*)signal, &localId); - daqReleaseRef(name); + if (printout && localId != NULL) + printDaqFormattedString("Signal: %s\n", localId); - addDaqComponentToDict(listOfAvailableComponents, (daqComponent*) signal); + daqReleaseRef(localId); daqReleaseRef(signal); } @@ -367,37 +341,8 @@ int main() daqDevice* simulator = NULL; addSimulator(&simulator, &instance); - daqDict* listOfComponents = NULL; - - printComponentTree((daqDevice*)instance, &listOfComponents, True); - - daqSizeT count = 0; - daqDict_getCount(listOfComponents, &count); - printf("\nNumber of components in the openDAQ tree: %llu\n\n", count); - - daqList* keys = NULL; - daqDict_getKeyList(listOfComponents, &keys); - daqIterator* iterator = NULL; - daqList_createStartIterator(keys, &iterator); - - while(daqIterator_moveNext(iterator) == DAQ_SUCCESS) - { - daqBaseObject* current = NULL; - daqIterator_getCurrent(iterator, ¤t); - daqString* comp = NULL; - if(DAQ_SUPPORTS_INTERFACE(current, DAQ_STRING_INTF_ID)) - { - daqQueryInterface(current, DAQ_STRING_INTF_ID, &comp); - daqConstCharPtr constChar = NULL; - daqString_getCharPtr(comp, &constChar); - printf("%s\n", constChar); - } - daqReleaseRef(current); - } + printDaqDevice((daqDevice*) instance, True); - daqReleaseRef(iterator); - daqReleaseRef(keys); - daqReleaseRef(listOfComponents); daqReleaseRef(simulator); daqReleaseRef(instance); daqReleaseRef(simulatorInstance); From 30f33258d01017b5bc5751eede10f2434a5e5331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Tue, 27 Jan 2026 10:04:34 +0100 Subject: [PATCH 03/12] Removed redundant function --- examples/tree_traversal.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 0cf0b4c..cf5a377 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -21,8 +21,6 @@ enum ComponentType DaqInputPort }; -void printComponentTree(daqDevice* headDevice, daqBool printout); - enum ComponentType getComponentType(daqBaseObject* baseObject); void printDaqDevice(daqBaseObject* baseObject, daqBool printout); @@ -39,11 +37,6 @@ void printInputPort(daqBaseObject* baseObject, daqBool printout); void printDaqSignal(daqBaseObject* baseObject, daqBool printout); -void printComponentTree(daqDevice* headDevice, daqBool printout) -{ - printDaqDevice(headDevice, printout); -} - enum ComponentType getComponentType(daqBaseObject* baseObject) { enum ComponentType componentType = DaqUnknown; From 7423063d0a2b4ac633d271be9dcb1fc81e5a4361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Tue, 27 Jan 2026 15:16:10 +0100 Subject: [PATCH 04/12] Addessed the second code review --- examples/tree_traversal.c | 177 ++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 91 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index cf5a377..99a7ca6 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -23,49 +23,47 @@ enum ComponentType enum ComponentType getComponentType(daqBaseObject* baseObject); -void printDaqDevice(daqBaseObject* baseObject, daqBool printout); +void printDaqDevice(daqBaseObject* baseObject, uint8_t indent); -void printDaqFunctionBlock(daqBaseObject* baseObject, daqBool printout); +void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent); -void printDaqFolder(daqBaseObject* baseObject, daqBool printout); +void printDaqFolder(daqBaseObject* baseObject, uint8_t indent); -void printDaqServer(daqBaseObject* baseObject, daqBool printout); +void printDaqServer(daqBaseObject* baseObject, uint8_t indent); -void printDaqSyncComponent(daqBaseObject* baseObject, daqBool printout); +void printDaqSyncComponent(daqBaseObject* baseObject, uint8_t indent); -void printInputPort(daqBaseObject* baseObject, daqBool printout); +void printInputPort(daqBaseObject* baseObject, uint8_t indent); -void printDaqSignal(daqBaseObject* baseObject, daqBool printout); +void printDaqSignal(daqBaseObject* baseObject, uint8_t indent); enum ComponentType getComponentType(daqBaseObject* baseObject) { - enum ComponentType componentType = DaqUnknown; - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID)) - componentType = DaqDevice; + return DaqDevice; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SERVER_INTF_ID)) - componentType = DaqServer; + return DaqServer; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID)) - componentType = DaqSyncComponent; + return DaqSyncComponent; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID)) - componentType = DaqFunctionBlock; + return DaqFunctionBlock; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FOLDER_INTF_ID)) - componentType = DaqFolder; + return DaqFolder; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_INPUT_PORT_INTF_ID)) - componentType = DaqInputPort; + return DaqInputPort; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SIGNAL_INTF_ID)) - componentType = DaqSignal; + return DaqSignal; - return componentType; + return DaqUnknown; } -void printObjectList(daqList* list, enum ComponentType compType, daqBool printout) +void printObjectList(daqList* list, enum ComponentType compType, uint8_t indent) { daqBaseObject* listMember = NULL; daqSizeT count = 0; @@ -73,11 +71,9 @@ void printObjectList(daqList* list, enum ComponentType compType, daqBool printou if (count <= 0) return; daqList_getItemAt(list, 0, &listMember); - - enum ComponentType componentType = compType; - if (componentType == DaqUnknown) - componentType = getComponentType(listMember); + if (compType == DaqUnknown) + compType = getComponentType(listMember); count = 0; daqList_getCount(list, &count); @@ -86,76 +82,62 @@ void printObjectList(daqList* list, enum ComponentType compType, daqBool printou { daqList_getItemAt(list, i, &listMember); - switch (componentType) + switch (compType) { case DaqDevice: - { - printDaqDevice(listMember, printout); - daqReleaseRef(listMember); + printDaqDevice(listMember, indent+1); break; - } + case DaqServer: - { - printDaqServer(listMember, printout); - daqReleaseRef(listMember); + printDaqServer(listMember, indent+1); break; - } + case DaqSyncComponent: - { - printDaqSyncComponent(listMember, printout); - daqReleaseRef(listMember); + printDaqSyncComponent(listMember, indent+1); break; - } + case DaqFunctionBlock: - { - printDaqFunctionBlock(listMember, printout); - daqReleaseRef(listMember); + printDaqFunctionBlock(listMember, indent+1); break; - } + case DaqFolder: - { - printDaqFolder(listMember, printout); - daqReleaseRef(listMember); + printDaqFolder(listMember, indent+1); break; - } + case DaqInputPort: - { - printInputPort(listMember, printout); - daqReleaseRef(listMember); + printInputPort(listMember, indent+1); break; - } + case DaqSignal: - { - printDaqSignal(listMember, printout); - daqReleaseRef(listMember); + printDaqSignal(listMember, indent+1); break; - } + default: - { - daqReleaseRef(listMember); break; } - } + + daqReleaseRef(listMember); } } -void printDaqDevice(daqBaseObject* baseObject, daqBool printout) +void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) { daqDevice* device = NULL; daqQueryInterface(baseObject, DAQ_DEVICE_INTF_ID, &device); daqString* localId = NULL; daqComponent_getLocalId((daqComponent*)device, &localId); - if (printout && localId != NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Device: %s\n", localId); - - daqReleaseRef(localId); + } daqFolder* ioFolder = NULL; daqDevice_getInputsOutputsFolder(device, &ioFolder); if (ioFolder != NULL) { - printDaqFolder(ioFolder, printout); + printDaqFolder(ioFolder, indent+1); daqReleaseRef(ioFolder); } @@ -163,7 +145,7 @@ void printDaqDevice(daqBaseObject* baseObject, daqBool printout) daqDevice_getSyncComponent(device, &syncComponent); if (syncComponent != NULL) { - printDaqSyncComponent(syncComponent, printout); + printDaqSyncComponent(syncComponent, indent+1); daqReleaseRef(syncComponent); } @@ -171,7 +153,7 @@ void printDaqDevice(daqBaseObject* baseObject, daqBool printout) daqDevice_getDevices(device, &devices, NULL); if (devices != NULL) { - printObjectList(devices, DaqDevice, printout); + printObjectList(devices, DaqDevice, indent+1); daqReleaseRef(devices); } @@ -179,7 +161,7 @@ void printDaqDevice(daqBaseObject* baseObject, daqBool printout) daqDevice_getFunctionBlocks(device, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, DaqFunctionBlock, printout); + printObjectList(functionBlocks, DaqFunctionBlock, indent+1); daqReleaseRef(functionBlocks); } @@ -187,30 +169,32 @@ void printDaqDevice(daqBaseObject* baseObject, daqBool printout) daqDevice_getServers(device, &servers); if (servers != NULL) { - printObjectList(servers, DaqServer, printout); + printObjectList(servers, DaqServer, indent+1); daqReleaseRef(servers); } + daqReleaseRef(localId); daqReleaseRef(device); } -void printDaqFunctionBlock(daqBaseObject* baseObject, daqBool printout) +void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent) { daqFunctionBlock* functionBlock = NULL; daqQueryInterface(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID, &functionBlock); daqString* localId = NULL; daqComponent_getLocalId((daqComponent*)functionBlock, &localId); - if (printout && localId != NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Function block: %s\n", localId); - - daqReleaseRef(localId); + } daqList* functionBlocks = NULL; daqFunctionBlock_getFunctionBlocks(functionBlock, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, DaqFunctionBlock, printout); + printObjectList(functionBlocks, DaqFunctionBlock, indent+1); daqReleaseRef(functionBlocks); } @@ -218,7 +202,7 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, daqBool printout) daqFunctionBlock_getInputPorts(functionBlock, &inputPorts, NULL); if (inputPorts != NULL) { - printObjectList(inputPorts, DaqInputPort, printout); + printObjectList(inputPorts, DaqInputPort, indent+1); daqReleaseRef(inputPorts); } @@ -226,37 +210,40 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, daqBool printout) daqFunctionBlock_getSignals(functionBlock, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, DaqSignal, printout); + printObjectList(listOfSignals, DaqSignal, indent+1); daqReleaseRef(listOfSignals); } + daqReleaseRef(localId); daqReleaseRef(functionBlock); } -void printDaqFolder(daqBaseObject* baseObject, daqBool printout) +void printDaqFolder(daqBaseObject* baseObject, uint8_t indent) { daqFolder* folder = NULL; daqQueryInterface(baseObject, DAQ_FOLDER_INTF_ID, &folder); daqString* localId = NULL; - daqComponent_getName((daqComponent*)folder, &localId); + daqComponent_getName((daqComponent*) folder, &localId); - if (printout && localId!=NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Folder: %s\n", localId); - - daqReleaseRef(localId); + } daqList* listOfItems = NULL; daqFolder_getItems(folder, &listOfItems, NULL); if (listOfItems != NULL) { - printObjectList(listOfItems, DaqUnknown, printout); + printObjectList(listOfItems, DaqUnknown, indent+1); daqReleaseRef(listOfItems); } + daqReleaseRef(localId); daqReleaseRef(folder); } -void printDaqServer(daqBaseObject* baseObject, daqBool printout) +void printDaqServer(daqBaseObject* baseObject, uint8_t indent) { daqServer* server = NULL; daqQueryInterface(baseObject, DAQ_SERVER_INTF_ID, &server); @@ -264,64 +251,72 @@ void printDaqServer(daqBaseObject* baseObject, daqBool printout) daqString* localId = NULL; daqComponent_getLocalId((daqComponent*)server, &localId); - if(printout && localId != NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Server: %s\n", localId); - - daqReleaseRef(localId); + } daqList* listOfSignals = NULL; daqServer_getSignals(server, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, DaqSignal, printout); + printObjectList(listOfSignals, DaqSignal, indent+1); daqReleaseRef(listOfSignals); } + daqReleaseRef(localId); daqReleaseRef(server); } -void printDaqSyncComponent(daqBaseObject* baseObject, daqBool printout) +void printDaqSyncComponent(daqBaseObject* baseObject, uint8_t indent) { daqSyncComponent* syncComp = NULL; daqQueryInterface(baseObject, DAQ_SYNC_COMPONENT_INTF_ID, &syncComp); daqString* localId = NULL; daqComponent_getLocalId((daqComponent*)syncComp, &localId); - if(printout && localId != NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Sync component: %s\n", localId); + } daqReleaseRef(localId); - daqReleaseRef(syncComp); } -void printInputPort(daqBaseObject* baseObject, daqBool printout) +void printInputPort(daqBaseObject* baseObject, uint8_t indent) { daqInputPort* inputPort = NULL; daqQueryInterface(baseObject, DAQ_INPUT_PORT_INTF_ID, &inputPort); daqString* localId = NULL; daqComponent_getLocalId((daqComponent*)inputPort, &localId); - if (printout && localId != NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Input port: %s\n", localId); + } daqReleaseRef(localId); - daqReleaseRef(inputPort); } -void printDaqSignal(daqBaseObject* baseObject, daqBool printout) +void printDaqSignal(daqBaseObject* baseObject, uint8_t indent) { daqSignal* signal = NULL; daqQueryInterface(baseObject, DAQ_SIGNAL_INTF_ID, &signal); daqString* localId = NULL; daqComponent_getLocalId((daqComponent*)signal, &localId); - if (printout && localId != NULL) + if (localId != NULL) + { + printf("%*c", indent, ' '); printDaqFormattedString("Signal: %s\n", localId); + } daqReleaseRef(localId); - daqReleaseRef(signal); } @@ -334,7 +329,7 @@ int main() daqDevice* simulator = NULL; addSimulator(&simulator, &instance); - printDaqDevice((daqDevice*) instance, True); + printDaqDevice((daqDevice*) instance, 0); daqReleaseRef(simulator); daqReleaseRef(instance); From 9f2e79477d2bb0c8db3cc5b8b023a0b22ea8a7ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Fri, 30 Jan 2026 08:39:18 +0100 Subject: [PATCH 05/12] Addressed the requested minor changes --- examples/tree_traversal.c | 91 +++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 33 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 99a7ca6..2429cd5 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -21,10 +21,14 @@ enum ComponentType DaqInputPort }; +void printDaqObject(daqBaseObject* baseObject, enum ComponentType compType, uint8_t indent); + enum ComponentType getComponentType(daqBaseObject* baseObject); void printDaqDevice(daqBaseObject* baseObject, uint8_t indent); +void printDaqChannel(daqBaseObject* baseObject, uint8_t indent); + void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent); void printDaqFolder(daqBaseObject* baseObject, uint8_t indent); @@ -37,6 +41,47 @@ void printInputPort(daqBaseObject* baseObject, uint8_t indent); void printDaqSignal(daqBaseObject* baseObject, uint8_t indent); +void printDaqObject(daqBaseObject* baseObject, enum ComponentType compType, uint8_t indent) +{ + switch (compType) + { + case DaqDevice: + printDaqDevice(baseObject, indent + 1); + break; + + case DaqServer: + printDaqServer(baseObject, indent + 1); + break; + + case DaqSyncComponent: + printDaqSyncComponent(baseObject, indent + 1); + break; + + case DaqChannel: + printDaqChannel(baseObject, indent + 1); + break; + + case DaqFunctionBlock: + printDaqFunctionBlock(baseObject, indent + 1); + break; + + case DaqFolder: + printDaqFolder(baseObject, indent + 1); + break; + + case DaqInputPort: + printInputPort(baseObject, indent + 1); + break; + + case DaqSignal: + printDaqSignal(baseObject, indent + 1); + break; + + default: + break; + } +} + enum ComponentType getComponentType(daqBaseObject* baseObject) { if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID)) @@ -48,6 +93,9 @@ enum ComponentType getComponentType(daqBaseObject* baseObject) else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID)) return DaqSyncComponent; + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_CHANNEL_INTF_ID)) + return DaqChannel; + else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID)) return DaqFunctionBlock; @@ -82,39 +130,7 @@ void printObjectList(daqList* list, enum ComponentType compType, uint8_t indent) { daqList_getItemAt(list, i, &listMember); - switch (compType) - { - case DaqDevice: - printDaqDevice(listMember, indent+1); - break; - - case DaqServer: - printDaqServer(listMember, indent+1); - break; - - case DaqSyncComponent: - printDaqSyncComponent(listMember, indent+1); - break; - - case DaqFunctionBlock: - printDaqFunctionBlock(listMember, indent+1); - break; - - case DaqFolder: - printDaqFolder(listMember, indent+1); - break; - - case DaqInputPort: - printInputPort(listMember, indent+1); - break; - - case DaqSignal: - printDaqSignal(listMember, indent+1); - break; - - default: - break; - } + printDaqObject(listMember, compType, indent); daqReleaseRef(listMember); } @@ -133,6 +149,8 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) printDaqFormattedString("Device: %s\n", localId); } + // IOFolder is a SPECIAL TYPE of FOLDER that only accepts + // IChannel and IIoFolderConfig components. daqFolder* ioFolder = NULL; daqDevice_getInputsOutputsFolder(device, &ioFolder); if (ioFolder != NULL) @@ -177,6 +195,13 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) daqReleaseRef(device); } +void printDaqChannel(daqBaseObject* baseObject, uint8_t indent) +{ + // Channels are standard function blocks that have + // an additional option of providing a list of tags. + printDaqFunctionBlock(baseObject, indent); +} + void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent) { daqFunctionBlock* functionBlock = NULL; From 724772a9ff382245e3653652a07383f73aa0a1e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Fri, 30 Jan 2026 08:57:15 +0100 Subject: [PATCH 06/12] Updated comment about channels --- examples/tree_traversal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 2429cd5..04da0b6 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -197,8 +197,8 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) void printDaqChannel(daqBaseObject* baseObject, uint8_t indent) { - // Channels are standard function blocks that have - // an additional option of providing a list of tags. + // Channels represent physical sensors in openDAQ. + // Their internal structure is the same as that of the function block. printDaqFunctionBlock(baseObject, indent); } From 1065cecd7046e14a0d52eecef73423620fe1e3e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Wed, 4 Feb 2026 12:01:23 +0100 Subject: [PATCH 07/12] Removed unnecessary indents --- examples/tree_traversal.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 04da0b6..2442621 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -46,35 +46,35 @@ void printDaqObject(daqBaseObject* baseObject, enum ComponentType compType, uint switch (compType) { case DaqDevice: - printDaqDevice(baseObject, indent + 1); + printDaqDevice(baseObject, indent); break; case DaqServer: - printDaqServer(baseObject, indent + 1); + printDaqServer(baseObject, indent); break; case DaqSyncComponent: - printDaqSyncComponent(baseObject, indent + 1); + printDaqSyncComponent(baseObject, indent); break; case DaqChannel: - printDaqChannel(baseObject, indent + 1); + printDaqChannel(baseObject, indent); break; case DaqFunctionBlock: - printDaqFunctionBlock(baseObject, indent + 1); + printDaqFunctionBlock(baseObject, indent); break; case DaqFolder: - printDaqFolder(baseObject, indent + 1); + printDaqFolder(baseObject, indent); break; case DaqInputPort: - printInputPort(baseObject, indent + 1); + printInputPort(baseObject, indent); break; case DaqSignal: - printDaqSignal(baseObject, indent + 1); + printDaqSignal(baseObject, indent); break; default: From f245037a398be5e640aff929043778b9d56f939b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Mon, 16 Feb 2026 14:54:30 +0100 Subject: [PATCH 08/12] Updated naming structure for enums --- examples/CMakeLists.txt | 3 +- examples/tree_traversal.c | 92 +++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 9d003f9..d4eb360 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -14,7 +14,8 @@ set(EXAMPLE_SOURCES simple_properties_display_handling.c basic_conversions_example.c advanced_conversions_example.c - multi_reader_read_same_rates.c) + multi_reader_read_same_rates.c + tree_traversal.c) foreach(src ${EXAMPLE_SOURCES}) get_filename_component(exec_name ${src} NAME_WLE) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 2442621..a5ab29a 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -6,24 +6,24 @@ #include -enum ComponentType +enum exdaq_ComponentType { - DaqUnknown = 0, - DaqDevice, - DaqFunctionBlock, - DaqIOFolder, - DaqChannel, - DaqServer, - DaqSignal, - DaqFolder, - DaqComponent, - DaqSyncComponent, - DaqInputPort + exdaq_ComponentType_Unknown = 0, + exdaq_ComponentType_Device, + exdaq_ComponentTypeFunctionBlock, + exdaq_ComponentType_IOFolder, + exdaq_ComponentType_Channel, + exdaq_ComponentType_Server, + exdaq_ComponentType_Signal, + exdaq_ComponentType_Folder, + exdaq_ComponentType_Component, + exdaq_ComponentType_SyncComponent, + exdaq_ComponentType_InputPort }; -void printDaqObject(daqBaseObject* baseObject, enum ComponentType compType, uint8_t indent); +void printDaqObject(daqBaseObject* baseObject, enum exdaq_ComponentType compType, uint8_t indent); -enum ComponentType getComponentType(daqBaseObject* baseObject); +enum exdaq_ComponentType getComponentType(daqBaseObject* baseObject); void printDaqDevice(daqBaseObject* baseObject, uint8_t indent); @@ -37,43 +37,43 @@ void printDaqServer(daqBaseObject* baseObject, uint8_t indent); void printDaqSyncComponent(daqBaseObject* baseObject, uint8_t indent); -void printInputPort(daqBaseObject* baseObject, uint8_t indent); +void printDaqInputPort(daqBaseObject* baseObject, uint8_t indent); void printDaqSignal(daqBaseObject* baseObject, uint8_t indent); -void printDaqObject(daqBaseObject* baseObject, enum ComponentType compType, uint8_t indent) +void printDaqObject(daqBaseObject* baseObject, enum exdaq_ComponentType compType, uint8_t indent) { switch (compType) { - case DaqDevice: + case exdaq_ComponentType_Device: printDaqDevice(baseObject, indent); break; - case DaqServer: + case exdaq_ComponentType_Server: printDaqServer(baseObject, indent); break; - case DaqSyncComponent: + case exdaq_ComponentType_SyncComponent: printDaqSyncComponent(baseObject, indent); break; - case DaqChannel: + case exdaq_ComponentType_Channel: printDaqChannel(baseObject, indent); break; - case DaqFunctionBlock: + case exdaq_ComponentTypeFunctionBlock: printDaqFunctionBlock(baseObject, indent); break; - case DaqFolder: + case exdaq_ComponentType_Folder: printDaqFolder(baseObject, indent); break; - case DaqInputPort: - printInputPort(baseObject, indent); + case exdaq_ComponentType_InputPort: + printDaqInputPort(baseObject, indent); break; - case DaqSignal: + case exdaq_ComponentType_Signal: printDaqSignal(baseObject, indent); break; @@ -82,36 +82,36 @@ void printDaqObject(daqBaseObject* baseObject, enum ComponentType compType, uint } } -enum ComponentType getComponentType(daqBaseObject* baseObject) +enum exdaq_ComponentType getComponentType(daqBaseObject* baseObject) { if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID)) - return DaqDevice; + return exdaq_ComponentType_Device; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SERVER_INTF_ID)) - return DaqServer; + return exdaq_ComponentType_Server; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID)) - return DaqSyncComponent; + return exdaq_ComponentType_SyncComponent; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_CHANNEL_INTF_ID)) - return DaqChannel; + return exdaq_ComponentType_Channel; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID)) - return DaqFunctionBlock; + return exdaq_ComponentTypeFunctionBlock; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FOLDER_INTF_ID)) - return DaqFolder; + return exdaq_ComponentType_Folder; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_INPUT_PORT_INTF_ID)) - return DaqInputPort; + return exdaq_ComponentType_InputPort; else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SIGNAL_INTF_ID)) - return DaqSignal; + return exdaq_ComponentType_Signal; - return DaqUnknown; + return exdaq_ComponentType_Unknown; } -void printObjectList(daqList* list, enum ComponentType compType, uint8_t indent) +void printObjectList(daqList* list, enum exdaq_ComponentType compType, uint8_t indent) { daqBaseObject* listMember = NULL; daqSizeT count = 0; @@ -120,7 +120,7 @@ void printObjectList(daqList* list, enum ComponentType compType, uint8_t indent) return; daqList_getItemAt(list, 0, &listMember); - if (compType == DaqUnknown) + if (compType == exdaq_ComponentType_Unknown) compType = getComponentType(listMember); count = 0; @@ -171,7 +171,7 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) daqDevice_getDevices(device, &devices, NULL); if (devices != NULL) { - printObjectList(devices, DaqDevice, indent+1); + printObjectList(devices, exdaq_ComponentType_Device, indent+1); daqReleaseRef(devices); } @@ -179,7 +179,7 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) daqDevice_getFunctionBlocks(device, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, DaqFunctionBlock, indent+1); + printObjectList(functionBlocks, exdaq_ComponentTypeFunctionBlock, indent+1); daqReleaseRef(functionBlocks); } @@ -187,7 +187,7 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) daqDevice_getServers(device, &servers); if (servers != NULL) { - printObjectList(servers, DaqServer, indent+1); + printObjectList(servers, exdaq_ComponentType_Server, indent+1); daqReleaseRef(servers); } @@ -219,7 +219,7 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent) daqFunctionBlock_getFunctionBlocks(functionBlock, &functionBlocks, NULL); if (functionBlocks != NULL) { - printObjectList(functionBlocks, DaqFunctionBlock, indent+1); + printObjectList(functionBlocks, exdaq_ComponentTypeFunctionBlock, indent+1); daqReleaseRef(functionBlocks); } @@ -227,7 +227,7 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent) daqFunctionBlock_getInputPorts(functionBlock, &inputPorts, NULL); if (inputPorts != NULL) { - printObjectList(inputPorts, DaqInputPort, indent+1); + printObjectList(inputPorts, exdaq_ComponentType_InputPort, indent+1); daqReleaseRef(inputPorts); } @@ -235,7 +235,7 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent) daqFunctionBlock_getSignals(functionBlock, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, DaqSignal, indent+1); + printObjectList(listOfSignals, exdaq_ComponentType_Signal, indent+1); daqReleaseRef(listOfSignals); } @@ -260,7 +260,7 @@ void printDaqFolder(daqBaseObject* baseObject, uint8_t indent) daqFolder_getItems(folder, &listOfItems, NULL); if (listOfItems != NULL) { - printObjectList(listOfItems, DaqUnknown, indent+1); + printObjectList(listOfItems, exdaq_ComponentType_Unknown, indent+1); daqReleaseRef(listOfItems); } @@ -286,7 +286,7 @@ void printDaqServer(daqBaseObject* baseObject, uint8_t indent) daqServer_getSignals(server, &listOfSignals, NULL); if (listOfSignals != NULL) { - printObjectList(listOfSignals, DaqSignal, indent+1); + printObjectList(listOfSignals, exdaq_ComponentType_Signal, indent+1); daqReleaseRef(listOfSignals); } @@ -311,7 +311,7 @@ void printDaqSyncComponent(daqBaseObject* baseObject, uint8_t indent) daqReleaseRef(syncComp); } -void printInputPort(daqBaseObject* baseObject, uint8_t indent) +void printDaqInputPort(daqBaseObject* baseObject, uint8_t indent) { daqInputPort* inputPort = NULL; daqQueryInterface(baseObject, DAQ_INPUT_PORT_INTF_ID, &inputPort); From 68c29c2c7d8b3c0544566386828ce9a6278e709c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Mon, 16 Feb 2026 14:55:24 +0100 Subject: [PATCH 09/12] Missied unrefined artifacts --- examples/advanced_conversions_example.c | 2 +- examples/util_headers/daq_property_utils.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/advanced_conversions_example.c b/examples/advanced_conversions_example.c index 0ad30b1..98c4a80 100644 --- a/examples/advanced_conversions_example.c +++ b/examples/advanced_conversions_example.c @@ -125,7 +125,7 @@ int main() daqTypeManager* typeManager = NULL; daqContext_getTypeManager(context, &typeManager); - enum exdaq_ComponentStatusTypeEnum enumStatusType = daqExample_ComponentStatusType_Error; + enum exdaq_ComponentStatusTypeEnum enumStatusType = exdaq_ComponentStatusType_Error; daqEnumeration* daqEnum = toCompStatusTypeEnum(enumStatusType, typeManager); enum exdaq_ComponentStatusTypeEnum enumStatusType2 = fromDaqCompStatusTypeEnum(daqEnum); diff --git a/examples/util_headers/daq_property_utils.h b/examples/util_headers/daq_property_utils.h index 1233cbb..1a93300 100644 --- a/examples/util_headers/daq_property_utils.h +++ b/examples/util_headers/daq_property_utils.h @@ -223,7 +223,7 @@ void printPropertyDefaultValue(daqProperty* property) daqBaseObject* value = NULL; daqProperty_getDefaultValue(property, &value); - determinePrintingProcedure(value, property); + determineValuePrintProcedure(value, property); if (value != NULL) daqReleaseRef(value); @@ -235,7 +235,7 @@ void printPropertyValue(daqProperty* property) daqProperty_getValue(property, &value); - determinePrintingProcedure(value, property); + determineValuePrintProcedure(value, property); if (value != NULL) daqReleaseRef(value); From 96565f5641ccf1cec6cbe3f335e7d358f39a48f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Mon, 16 Feb 2026 15:50:57 +0100 Subject: [PATCH 10/12] Adjusted code review --- examples/tree_traversal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index a5ab29a..54edfaf 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -149,8 +149,8 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) printDaqFormattedString("Device: %s\n", localId); } - // IOFolder is a SPECIAL TYPE of FOLDER that only accepts - // IChannel and IIoFolderConfig components. + // IOFolder is a special type of folder that only accepts + // Channels and IOFolderConfig components. daqFolder* ioFolder = NULL; daqDevice_getInputsOutputsFolder(device, &ioFolder); if (ioFolder != NULL) @@ -197,7 +197,7 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) void printDaqChannel(daqBaseObject* baseObject, uint8_t indent) { - // Channels represent physical sensors in openDAQ. + // Channels represent Physical IO in openDAQ. // Their internal structure is the same as that of the function block. printDaqFunctionBlock(baseObject, indent); } From ef8d37986797bf21f532b8bbb53ba75323500ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Tue, 17 Feb 2026 15:44:10 +0100 Subject: [PATCH 11/12] Updated folder traversal and structure --- examples/tree_traversal.c | 85 +++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 54edfaf..860c7da 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -23,15 +23,13 @@ enum exdaq_ComponentType void printDaqObject(daqBaseObject* baseObject, enum exdaq_ComponentType compType, uint8_t indent); -enum exdaq_ComponentType getComponentType(daqBaseObject* baseObject); - void printDaqDevice(daqBaseObject* baseObject, uint8_t indent); void printDaqChannel(daqBaseObject* baseObject, uint8_t indent); void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent); -void printDaqFolder(daqBaseObject* baseObject, uint8_t indent); +void printDaqIOFolder(daqBaseObject* baseObject, uint8_t indent); void printDaqServer(daqBaseObject* baseObject, uint8_t indent); @@ -66,7 +64,7 @@ void printDaqObject(daqBaseObject* baseObject, enum exdaq_ComponentType compType break; case exdaq_ComponentType_Folder: - printDaqFolder(baseObject, indent); + printDaqIOFolder(baseObject, indent); break; case exdaq_ComponentType_InputPort: @@ -82,35 +80,6 @@ void printDaqObject(daqBaseObject* baseObject, enum exdaq_ComponentType compType } } -enum exdaq_ComponentType getComponentType(daqBaseObject* baseObject) -{ - if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_DEVICE_INTF_ID)) - return exdaq_ComponentType_Device; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SERVER_INTF_ID)) - return exdaq_ComponentType_Server; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SYNC_COMPONENT_INTF_ID)) - return exdaq_ComponentType_SyncComponent; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_CHANNEL_INTF_ID)) - return exdaq_ComponentType_Channel; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FUNCTION_BLOCK_INTF_ID)) - return exdaq_ComponentTypeFunctionBlock; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_FOLDER_INTF_ID)) - return exdaq_ComponentType_Folder; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_INPUT_PORT_INTF_ID)) - return exdaq_ComponentType_InputPort; - - else if (DAQ_SUPPORTS_INTERFACE(baseObject, DAQ_SIGNAL_INTF_ID)) - return exdaq_ComponentType_Signal; - - return exdaq_ComponentType_Unknown; -} - void printObjectList(daqList* list, enum exdaq_ComponentType compType, uint8_t indent) { daqBaseObject* listMember = NULL; @@ -120,9 +89,6 @@ void printObjectList(daqList* list, enum exdaq_ComponentType compType, uint8_t i return; daqList_getItemAt(list, 0, &listMember); - if (compType == exdaq_ComponentType_Unknown) - compType = getComponentType(listMember); - count = 0; daqList_getCount(list, &count); @@ -150,12 +116,12 @@ void printDaqDevice(daqBaseObject* baseObject, uint8_t indent) } // IOFolder is a special type of folder that only accepts - // Channels and IOFolderConfig components. + // Channels and IOFolders components. daqFolder* ioFolder = NULL; daqDevice_getInputsOutputsFolder(device, &ioFolder); if (ioFolder != NULL) { - printDaqFolder(ioFolder, indent+1); + printDaqIOFolder(ioFolder, indent+1); daqReleaseRef(ioFolder); } @@ -243,7 +209,7 @@ void printDaqFunctionBlock(daqBaseObject* baseObject, uint8_t indent) daqReleaseRef(functionBlock); } -void printDaqFolder(daqBaseObject* baseObject, uint8_t indent) +void printDaqIOFolder(daqBaseObject* baseObject, uint8_t indent) { daqFolder* folder = NULL; daqQueryInterface(baseObject, DAQ_FOLDER_INTF_ID, &folder); @@ -253,18 +219,49 @@ void printDaqFolder(daqBaseObject* baseObject, uint8_t indent) if (localId != NULL) { printf("%*c", indent, ' '); - printDaqFormattedString("Folder: %s\n", localId); + printDaqFormattedString("IOFolder: %s\n", localId); + daqReleaseRef(localId); } daqList* listOfItems = NULL; daqFolder_getItems(folder, &listOfItems, NULL); - if (listOfItems != NULL) + + daqSizeT count = 0; + daqList_getCount(listOfItems, &count); + + if (listOfItems == NULL) { - printObjectList(listOfItems, exdaq_ComponentType_Unknown, indent+1); - daqReleaseRef(listOfItems); + daqReleaseRef(folder); + return; } - daqReleaseRef(localId); + daqList* listOfFolders = NULL; + daqList* listOfChannels = NULL; + daqBaseObject* item = NULL; + + daqList_createList(&listOfFolders); + daqList_createList(&listOfChannels); + + for (daqSizeT i = 0; i < count; i++) + { + daqList_getItemAt(listOfItems, i, &item); + + if (DAQ_SUPPORTS_INTERFACE(item, DAQ_FOLDER_INTF_ID)) + { + daqList_pushBack(listOfFolders, item); + } + else if (DAQ_SUPPORTS_INTERFACE(item, DAQ_SIGNAL_INTF_ID)) + { + daqList_pushBack(listOfChannels, item); + } + } + + printObjectList(listOfFolders, exdaq_ComponentType_Folder, indent+1); + printObjectList(listOfChannels, exdaq_ComponentType_Signal, indent+1); + daqReleaseRef(listOfFolders); + daqReleaseRef(listOfChannels); + daqReleaseRef(listOfItems); + daqReleaseRef(folder); } From 4f2f5e215d75133985d56cdaf345951fa5f6c89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Zako=C5=A1ek?= Date: Wed, 18 Feb 2026 08:12:32 +0100 Subject: [PATCH 12/12] Removing redudant enum --- examples/tree_traversal.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/tree_traversal.c b/examples/tree_traversal.c index 860c7da..6a7b010 100644 --- a/examples/tree_traversal.c +++ b/examples/tree_traversal.c @@ -11,11 +11,10 @@ enum exdaq_ComponentType exdaq_ComponentType_Unknown = 0, exdaq_ComponentType_Device, exdaq_ComponentTypeFunctionBlock, - exdaq_ComponentType_IOFolder, exdaq_ComponentType_Channel, exdaq_ComponentType_Server, exdaq_ComponentType_Signal, - exdaq_ComponentType_Folder, + exdaq_ComponentType_IOFolder, exdaq_ComponentType_Component, exdaq_ComponentType_SyncComponent, exdaq_ComponentType_InputPort @@ -63,7 +62,7 @@ void printDaqObject(daqBaseObject* baseObject, enum exdaq_ComponentType compType printDaqFunctionBlock(baseObject, indent); break; - case exdaq_ComponentType_Folder: + case exdaq_ComponentType_IOFolder: printDaqIOFolder(baseObject, indent); break; @@ -256,7 +255,7 @@ void printDaqIOFolder(daqBaseObject* baseObject, uint8_t indent) } } - printObjectList(listOfFolders, exdaq_ComponentType_Folder, indent+1); + printObjectList(listOfFolders, exdaq_ComponentType_IOFolder, indent+1); printObjectList(listOfChannels, exdaq_ComponentType_Signal, indent+1); daqReleaseRef(listOfFolders); daqReleaseRef(listOfChannels);