Skip to content

Commit 4e19523

Browse files
committed
adding disposing function for all resources opening a file descriptor
1 parent 6931958 commit 4e19523

2 files changed

Lines changed: 47 additions & 1 deletion

File tree

src/wiringPiI2C.cc

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "wiringPiI2C.h"
22
#include <wiringPiI2C.h>
3+
#include <unistd.h>
34

45
DECLARE(wiringPiI2CRead);
56
DECLARE(wiringPiI2CReadReg8);
@@ -9,6 +10,7 @@ DECLARE(wiringPiI2CWriteReg8);
910
DECLARE(wiringPiI2CWriteReg16);
1011
DECLARE(wiringPiI2CSetupInterface);
1112
DECLARE(wiringPiI2CSetup);
13+
DECLARE(wiringPiI2CClose);
1214

1315
// Func : int wiringPiI2CRead (int fd);
1416
// Simple device read. Some devices present data when you read them without having to do any register transactions.
@@ -188,6 +190,26 @@ IMPLEMENT(wiringPiI2CSetup) {
188190
SCOPE_CLOSE(INT32(res));
189191
}
190192

193+
// Func : void wiringPiI2CClose(const int fd)
194+
// Description : This closes opened I2C file descriptor
195+
// fd is file descriptor returned either from wiringPiI2CSetup or wiringPiI2CSetupInterface
196+
197+
IMPLEMENT(wiringPiI2CClose) {
198+
SCOPE_OPEN();
199+
200+
SET_ARGUMENT_NAME(0, fd);
201+
202+
CHECK_ARGUMENTS_LENGTH_EQUAL(1);
203+
204+
CHECK_ARGUMENT_TYPE_INT32(0);
205+
206+
int fd = GET_ARGUMENT_AS_INT32(0);
207+
208+
::close(fd);
209+
210+
SCOPE_CLOSE(UNDEFINED());
211+
}
212+
191213
IMPLEMENT_EXPORT_INIT(wiringPiI2C) {
192214
EXPORT_FUNCTION(wiringPiI2CRead);
193215
EXPORT_FUNCTION(wiringPiI2CReadReg8);
@@ -197,4 +219,5 @@ IMPLEMENT_EXPORT_INIT(wiringPiI2C) {
197219
EXPORT_FUNCTION(wiringPiI2CWriteReg16);
198220
EXPORT_FUNCTION(wiringPiI2CSetupInterface);
199221
EXPORT_FUNCTION(wiringPiI2CSetup);
200-
}
222+
EXPORT_FUNCTION(wiringPiI2CClose);
223+
}

src/wiringPiSPI.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#include "wiringPiSPI.h"
22
#include <wiringPiSPI.h>
3+
#include <unistd.h>
34

45
DECLARE(wiringPiSPIGetFd);
56
DECLARE(wiringPiSPIDataRW);
67
DECLARE(wiringPiSPISetup);
78
DECLARE(wiringPiSPISetupMode);
9+
DECLARE(wiringPiSPIClose);
810

911
// Func : int wiringPiSPIGetFd(int channel)
1012

@@ -98,9 +100,30 @@ IMPLEMENT(wiringPiSPISetupMode) {
98100
SCOPE_CLOSE(INT32(res));
99101
}
100102

103+
// Func : void wiringPiSPIClose(const int fd)
104+
// Description : This closes opened SPI file descriptor
105+
// fd is file descriptor returned either from wiringPiSPISetup or wiringPiSPISetupMode
106+
107+
IMPLEMENT(wiringPiSPIClose) {
108+
SCOPE_OPEN();
109+
110+
SET_ARGUMENT_NAME(0, fd);
111+
112+
CHECK_ARGUMENTS_LENGTH_EQUAL(1);
113+
114+
CHECK_ARGUMENT_TYPE_INT32(0);
115+
116+
int fd = GET_ARGUMENT_AS_INT32(0);
117+
118+
::close(fd);
119+
120+
SCOPE_CLOSE(UNDEFINED());
121+
}
122+
101123
IMPLEMENT_EXPORT_INIT(wiringPiSPI) {
102124
EXPORT_FUNCTION(wiringPiSPIGetFd);
103125
EXPORT_FUNCTION(wiringPiSPIDataRW);
104126
EXPORT_FUNCTION(wiringPiSPISetup);
105127
EXPORT_FUNCTION(wiringPiSPISetupMode);
128+
EXPORT_FUNCTION(wiringPiSPIClose);
106129
}

0 commit comments

Comments
 (0)