--- a
+++ b/IoDrvSysfsGPIO/IoDrvSysfsGPIO/ICmpIoDrv/IoDrvUpdateConfiguration/svnobj
@@ -0,0 +1,244 @@
+Gx_l\F!0…jüo’/2IâP¢5x¾ìSystem.StringL{f8a58466-d7f6-439f-bbb8-d4600e41d099}ImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocumentL{f3878285-8e4f-490b-bb1b-9acbb7eb04db}TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}	Id
+longTagText
ŠIoDrvUpdateConfiguration_Count := IoDrvUpdateConfiguration_Count + 1;TIoDrvUpdateConfiguration := Errors.ERR_OK;4IF pConnectorList = 0 THEN*	// Reset applicationr	m_pConnector^.hIoDrv := 0; // no callbacks from runtime!H	m_pConnector^.pFather^.hIoDrv := 0;	Cleanup();	RETURN;END_IFÄm_pConnector := IoMgrConfigGetConnector(pConnectorList, ADR(nCount), m_wModuleType, m_dwInstance);0IF m_pConnector = 0 THENd	IoDrvUpdateConfiguration := ERRORS.ERR_PARAMETER;^//check if device is enabled in the device treel_bDeactivated := NOT IsConnectorEnabled(m_pConnector);@IF m_pConnector^.hIoDrv = 0 THENB	//always needed for reconfigure!L	m_pConnector^.hIoDrv := m_hInterface;^	m_pConnector^.pFather^.hIoDrv := m_hInterface; *IF _bDeactivated THEN!j	IoDrvUpdateConfiguration := CmpErrors.Errors.ERR_OK;"VIF m_pConnector^.hIoDrv = m_hInterface THEN#V	{IF defined (pou:IoMgrConfigSetDiagnosis)}$L	IoMgrConfigSetDiagnosis(m_pConnector,%X							ConnectorFlags.CF_DRIVER_AVAILABLE OR&V							ConnectorFlags.CF_CONNECTOR_FOUND OR'`							ConnectorFlags.CF_CONNECTOR_CONFIGURED OR(V							ConnectorFlags.CF_CONNECTOR_ACTIVE);)	{END_IF}*	+^	IoMgrConfigSetDiagnosis(m_pConnector^.pFather,,^	{IF defined (pou:IoMgrSetDriverProperties)}			-¸		IoMgrSetDriverProperties(m_hInterface, DRVPROP_CONSISTENCY OR DRVPROP_BACKGROUND_GETDIAG);.´		//Note: background diagnosis property flag is optional (supported with 3.5.1.0 runtime)	/&	{END_IF}										0L	//Go through all childs of the device1š	pChild := IoMgrConfigGetFirstChild(m_pConnector, ADR(nCount), m_pConnector);2.	WHILE (pChild <> 0) DO3H		IF IsConnectorEnabled(pChild) THEN4F			pChild^.hIoDrv := m_hInterface;	5Z			{IF defined (pou:IoMgrConfigSetDiagnosis)}6D			IoMgrConfigSetDiagnosis(pChild,7\									ConnectorFlags.CF_DRIVER_AVAILABLE OR8Z									ConnectorFlags.CF_CONNECTOR_FOUND OR9d									ConnectorFlags.CF_CONNECTOR_CONFIGURED OR:Z									ConnectorFlags.CF_CONNECTOR_ACTIVE);;			{END_IF}<			=P			//Go through all childs of the childs>œ			pChildChild := IoMgrConfigGetFirstChild(pChild, ADR(nCount), m_pConnector);?<			WHILE (pChildChild <> 0) DO@V				IF IsConnectorEnabled(pChildChild) THENAT					pChildChild^.hIoDrv := m_hInterface;	B
+					C^					{IF defined (pou:IoMgrConfigSetDiagnosis)}DX								IoMgrConfigSetDiagnosis(pChildChild,Ed													ConnectorFlags.CF_DRIVER_AVAILABLE ORF`													ConnectorFlags.CF_CONNECTOR_FOUND);G					{END_IF}HB					//Read magic boolean flag nrI~					pParameter := IoMgrConfigGetParameter(pChildChild, 10000);J8					IF pParameter <> 0 THENKĄ						pbyExportAllPossibleGPIOs := IoMgrConfigGetParameterValuePointer(pParameter, ADR(Result));L					END_IFM6					IF pdwGPIONr <> 0 THENN						OF						IF pdwGPIONr^ > GPIOSize THENP„							IoDrvUpdateConfiguration := CmpErrors.Errors.ERR_EXCEPTION;Qˆ							strLogMessage := CONCAT('GPIO nr: ' , TO_STRING(pdwGPIONr^));RØ							strLogMessage := CONCAT(strLogMessage,' exceeds max possible nr of gpios: ');S„							strLogMessage := CONCAT(strLogMessage,TO_STRING(GPIOSize));T							U€							CmpLog.LogAdd2(CmpLog.LOG_STD_LOGGER, 0,CmpLog.LogClass.LOG_EXCEPTION, CmpErrors.Errors.ERR_EXCEPTION, 0,strLogMessage );Vb							{IF defined (pou:IoMgrConfigSetDiagnosis)}WV							IoMgrConfigSetDiagnosis(pChildChild,X`												ConnectorFlags.CF_CONNECTOR_ERROR ORYf												ConnectorFlags.CF_CONNECTOR_BUS_ERROR);Z							{END_IF}[							RETURN;\						END_IF]						// ^~						pParameter := IoMgrConfigGetParameter(pChildChild, 5001);_:						IF pParameter <> 0 THEN`°							pszGPIOValueName := IoMgrConfigGetParameterValuePointer(pParameter, ADR(Result));a~						pParameter := IoMgrConfigGetParameter(pChildChild, 5003);b¬							pszGPIODirName := IoMgrConfigGetParameterValuePointer(pParameter, ADR(Result));c						//Inputd˜						pParameter := IoMgrConfigGetParameter(pChildChild, 1000);		(* input *)e>						IF (pParameter <> 0) THENfl							IF (SHL(1,pdwGPIONr^) AND GPIOUsedIn) <> 0 THENg†								IoDrvUpdateConfiguration := CmpErrors.Errors.ERR_EXCEPTION;hŠ								strLogMessage := CONCAT('GPIO nr (' , TO_STRING(pdwGPIONr^));iä								strLogMessage := CONCAT(strLogMessage,') is already assigned as input. Check and fix the configuration.');j‚								CmpLog.LogAdd2(CmpLog.LOG_STD_LOGGER, 0,CmpLog.LogClass.LOG_EXCEPTION, CmpErrors.Errors.ERR_EXCEPTION, 0,strLogMessage );k								ld								{IF defined (pou:IoMgrConfigSetDiagnosis)}m`													ConnectorFlags.CF_CONNECTOR_ERROR);n 								{END_IF}o								RETURN;p							END_IFqn							IF (SHL(1,pdwGPIONr^) AND GPIOUsedOut) <> 0 THENrę								strLogMessage := CONCAT(strLogMessage,') is already assigned as output. Check and fix the configuration.');sj							GPIOUsedIn := GPIOUsedIn OR SHL(1,pdwGPIONr^);tl													ConnectorFlags.CF_CONNECTOR_CONFIGURED ORub													ConnectorFlags.CF_CONNECTOR_ACTIVE);v„							pParameter^.dwDriverSpecific := ADR(_byInputs[pdwGPIONr^]);wœ						pParameter := IoMgrConfigGetParameter(pChildChild, 2000);		(* outputs *)xp							GPIOUsedOut := GPIOUsedOut OR SHL(1,pdwGPIONr^);	yˆ							pParameter^.dwDriverSpecific := ADR(_byOutputs[pdwGPIONr^]);	z				END_IF{š				pChildChild := IoMgrConfigGetNextChild(pChildChild, ADR(nCount), pChild);|			END_WHILE}		END_IF~Ž		pChild := IoMgrConfigGetNextChild(pChild, ADR(nCount), m_pConnector);	END_WHILE€InterfaceL{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}‚Z{attribute 'conditionalshow' := 'IoDrvDebug'}ƒNMETHOD IoDrvUpdateConfiguration : UDINT„VAR_INPUT…^	pConnectorList : POINTER TO IoConfigConnector;†	nCount : DINT;‡END_VARˆVAR‰X	pParameter : POINTER TO IoConfigParameter;	Š	// connectors‹P	pChild : POINTER TO IoConfigConnector;	ŒZ	pChildChild : POINTER TO IoConfigConnector;		// parametersŽ:	pdwGPIONr : POINTER TO UINT;Z	pbyExportAllPossibleGPIOs : POINTER TO BOOL;H	pszSysFsPrefix : POINTER TO STRING;‘L	pszGPIOValueName : POINTER TO STRING;’H	pszGPIODirName : POINTER TO STRING;“	//”2	Result : RTS_IEC_RESULT;•0	strLogMessage : STRING;– 	nCount2 : DINT;ŠŠŠEŌŠŠ	
+­2ÚÐ-
ÐÐ	
+­ÍÚÐ-ÐÐ	
+­3ÚÐ-ÐÐ	
+­ÌÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ûÚÐ-ÐÐ	
+­-ÚÐ-ÐÐ	
+­.ÚÐ-ÐÐ	
+­&ÚÐ-ÐÐ	
+­ÊÚÐ-ÐÐ	
+­$ÚÐ-ÐÐ	
+­æÚÐ-ÐÐ	
+­ðÚÐ-ÐÐ	
+­øÚÐ-ÐÐ	
+­ñÚÐ-ÐÐ	
+­òÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	

+ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­	ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­÷ÚÐ-ÐÐ	

ÚÐ- ÐÐ	
+­ÚÐ-!ÐÐ	
+­ÚÐ-ÐÐ	
+­ïÚÐ-ÐÐ	
+­KÚÐ-ÐÐ	
+­×ÚÐ-"ÐÐ	
+­ÝÚÐ-#ÐÐ	
+­ÞÚÐ-$ÐÐ	
+­ßÚÐ-%ÐÐ	
+­àÚÐ-&ÐÐ	
+­áÚÐ-'ÐÐ	
+­âÚÐ-(ÐÐ	
+­ãÚÐ-)ÐÐ	
+­šÚÐ-*ÐÐ	
+­œÚÐ-#ÐÐ	
+­ÚÐ-+ÐÐ	
+­žÚÐ-%ÐÐ	
+­ŸÚÐ-&ÐÐ	
+­ ÚÐ-'ÐÐ	
+­¡ÚÐ-(ÐÐ	
+­^ÚÐ-)ÐÐ	
+­¾ÚÐ-ÐÐ	
+­¿ÚÐ-,ÐÐ	
+­åÚÐ--ÐÐ	
+­ÀÚÐ-.ÐÐ	
+­MÚÐ-/ÐÐ	
+­ØÚÐ-ÐÐ	
+­ÛÚÐ-*ÐÐ	
+­ÚÐ-0ÐÐ	
+­BÚÐ-1ÐÐ	
+­ùÚÐ-2ÐÐ	
+­DÚÐ-3ÐÐ	
+­ªÚÐ-4ÐÐ	
+­«ÚÐ-5ÐÐ	
+­¬ÚÐ-6ÐÐ	
+­­ÚÐ-7ÐÐ	
+­®ÚÐ-8ÐÐ	
+­¯ÚÐ-9ÐÐ	
+­°ÚÐ-:ÐÐ	
+­úÚÐ-;ÐÐ	
+­ÚÐ-<ÐÐ	
+­ÚÐ-=ÐÐ	
+­ÚÐ->ÐÐ	
+­ÚÐ-?ÐÐ	
+­ÚÐ-@ÐÐ	
+­ÚÐ-AÐÐ	
+­UÚÐ-BÐÐ	
+­˜ÚÐ-CÐÐ	
+­™ÚÐ-DÐÐ	
+­šÚÐ-EÐÐ	
+­ÚÐ-FÐÐ	
+­ ÚÐ-GÐÐ	
+­!ÚÐ-BÐÐ	
+­'ÚÐ-HÐÐ	
+­(ÚÐ-IÐÐ	
+­)ÚÐ-JÐÐ	
+­*ÚÐ-KÐÐ	
+­+ÚÐ-LÐÐ	
+­3ÚÐ-BÐÐ	
+­FÚÐ-MÐÐ	
+­VÚÐ-NÐÐ	
+­HÚÐ-OÐÐ	
+­IÚÐ-PÐÐ	
+­LÚÐ-QÐÐ	
+­NÚÐ-RÐÐ	
+­OÚÐ-SÐÐ	
+­QÚÐ-TÐÐ	
+­JÚÐ-UÐÐ	
+­·ÚÐ-TÐÐ	
+­ºÚÐ-VÐÐ	
+­»ÚÐ-WÐÐ	
+­¼ÚÐ-XÐÐ	
+­ÁÚÐ-YÐÐ	
+­¸ÚÐ-ZÐÐ	
+­¹ÚÐ-TÐÐ	
+­KÚÐ-[ÐÐ	
+­GÚÐ-\ÐÐ	
+­CÚÐ-NÐÐ	
+­ÚÐ-]ÐÐ	
+­ÚÐ-^ÐÐ	
+­ÚÐ-_ÐÐ	
+­ÚÐ-`ÐÐ	
+­ÚÐ-\ÐÐ	
+­ÚÐ-NÐÐ	
+­ÚÐ-aÐÐ	
+­ÚÐ-_ÐÐ	
+­ÚÐ-bÐÐ	
+­ÚÐ-\ÐÐ	

ÚÐ-NÐÐ	
+­ÚÐ-TÐÐ	
+­5ÚÐ-cÐÐ	
+­6ÚÐ-dÐÐ	
+­7ÚÐ-eÐÐ	
+­XÚÐ-TÐÐ	
+­ZÚÐ-fÐÐ	
+­^ÚÐ-gÐÐ	
+­_ÚÐ-hÐÐ	
+­`ÚÐ-iÐÐ	
+­dÚÐ-jÐÐ	
+­±ÚÐ-kÐÐ	
+­´ÚÐ-lÐÐ	
+­µÚÐ-DÐÐ	
+­¶ÚÐ-mÐÐ	
+­³ÚÐ-nÐÐ	
+­²ÚÐ-kÐÐ	
+­\ÚÐ-oÐÐ	
+­]ÚÐ-pÐÐ	
+­fÚÐ-qÐÐ	
+­gÚÐ-gÐÐ	
+­hÚÐ-hÐÐ	
+­iÚÐ-rÐÐ	
+­jÚÐ-jÐÐ	
+­«ÚÐ-kÐÐ	
+­®ÚÐ-lÐÐ	
+­¯ÚÐ-DÐÐ	
+­°ÚÐ-mÐÐ	
+­¬ÚÐ-nÐÐ	
+­­ÚÐ-kÐÐ	
+­kÚÐ-oÐÐ	
+­lÚÐ-pÐÐ	
+­ÂÚÐ-TÐÐ	
+­eÚÐ-TÐÐ	
+­mÚÐ-sÐÐ	
+­†ÚÐ-TÐÐ	
+­ˆÚÐ-VÐÐ	
+­‹ÚÐ-WÐÐ	
+­žÚÐ-tÐÐ	
+­ÚÐ-uÐÐ	
+­‡ÚÐ-ZÐÐ	
+­[ÚÐ-NÐÐ	
+­8ÚÐ-vÐÐ	
+­9ÚÐ-\ÐÐ	
+­=ÚÐ-NÐÐ	
+­>ÚÐ-wÐÐ	
+­?ÚÐ-eÐÐ	
+­€ÚÐ-qÐÐ	
+­ÚÐ-gÐÐ	
+­‚ÚÐ-hÐÐ	
+­ƒÚÐ-rÐÐ	
+­„ÚÐ-jÐÐ	
+­•ÚÐ-kÐÐ	
+­ŸÚÐ-lÐÐ	
+­ ÚÐ-DÐÐ	
+­¡ÚÐ-mÐÐ	
+­—ÚÐ-nÐÐ	
+­–ÚÐ-kÐÐ	
+­…ÚÐ-oÐÐ	
+­ÚÐ-pÐÐ	
+­pÚÐ-fÐÐ	
+­qÚÐ-gÐÐ	
+­rÚÐ-hÐÐ	
+­sÚÐ-iÐÐ	
+­tÚÐ-jÐÐ	
+­¥ÚÐ-kÐÐ	
+­¨ÚÐ-lÐÐ	
+­©ÚÐ-DÐÐ	
+­ªÚÐ-mÐÐ	
+­¦ÚÐ-nÐÐ	
+­§ÚÐ-kÐÐ	
+­uÚÐ-oÐÐ	
+­vÚÐ-pÐÐ	
+­}ÚÐ-TÐÐ	
+­YÚÐ-xÐÐ	
+­nÚÐ-NÐÐ	
+­ÚÐ-TÐÐ	
+­½ÚÐ-VÐÐ	
+­¾ÚÐ-WÐÐ	
+­¿ÚÐ-tÐÐ	
+­ÀÚÐ-uÐÐ	
+­ŽÚÐ-ZÐÐ	
+­oÚÐ-NÐÐ	
+­@ÚÐ-yÐÐ	
+­"ÚÐ-\ÐÐ	
+­RÚÐ-BÐÐ	
+­SÚÐ-BÐÐ	
+­TÚÐ-LÐÐ	
+­#ÚÐ-BÐÐ	
+­$ÚÐ-zÐÐ	
+­%ÚÐ-{ÐÐ	
+­ÚÐ-|ÐÐ	
+­ÚÐ-<ÐÐ	
+­yÚÐ-}ÐÐ	
+­CÚÐ-~ÐÐ	
+­=ÚÐ-ÐÐ	
+­	ÚÐ-ЀÐEÐÐ	
+­™ÚÐ-‚ÐÐ	
+­ÚÐ-ƒÐÐ	
+­ÚÐ-„ÐÐ	
+­ÚÐ-…ÐÐ	
+­ÚÐ-†ÐÐ	
+­ÚÐ-‡ÐÐ	
+­PÚÐ-ˆÐÐ	
+­:ÚÐ-‰ÐÐ	
+­>ÚÐ-ŠÐÐ	
+­ÚÐ-‹ÐÐ	
+­&ÚÐ-ŒÐÐ	
+­`ÚÐ-*ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ŽÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	

+ÚÐ-‘ÐÐ	
+­ÚÐ-’ÐÐ	
+­ÚÐ-*ÐÐ	
+­	ÚÐ-“ÐÐ	
+­äÚÐ-”ÐÐ	
+­MÚÐ-•ÐÐ	
+­WÚÐ-–ÐÐ	
+­ñÚÐ-*ÐÐ	
+­óÚÐ-*ÐÐ	
+­ÚÐ-‡ÐÐ	
+­ÚÐ-
\ No newline at end of file