[r2]: / IoDrvSysfsGPIO / Functions / SysfsGPIOExportAll / svnobj  Maximize  Restore  History

Download this file

31 lines (30 with data), 5.4 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
FUNCTION SysfsGPIOExportAll : BOOL
VAR_INPUT
	pszSysFsDirname : POINTER TO STRING;
END_VAR
VAR
	i : INT;
	szDirEntry: STRING(255);
	diMaxDirEntry: INT := 255;
	Result: RTS_IEC_RESULT;
	DirInfo : SysDir.DirInfo;
	hDir: RTS_IEC_HANDLE;
	iGpioNr : INT := -1;
	szBase: STRING(255);
	szNGPIO: STRING(255);
	szPathGpioChipNr: STRING(255);
	szLabel: STRING(255);
	iGPIOBase: INT;
	Result := SysDir.SysDirRead(hDir, szDirEntry, diMaxDirEntry, ADR(DirInfo));
	WHILE Result = 0 DO
			szPathGpioChipNr := CONCAT(CONCAT(pszSysFsDirname^, szDirEntry),'/');
			szNGPIO := ReadFileString(CONCAT(szPathGpioChipNr, 'ngpio'));
			iGPIONr := STRING_TO_INT(szNGPIO);
			// now export all GPIOs from this chip if enabled
			FOR i := iGPIOBase TO (iGPIOBase + iGPIONr) - 1 DO
		Result := SysDir.SysDirRead(hDir, szDirEntry, diMaxDirEntry, ADR(DirInfo));
	END_WHILE
	// done, now close hDir
	SysDir.SysDirClose(hDir);
	hDir := RTS_INVALID_HANDLE;
END_IF