11#include " wiringPiI2C.h"
22#include < wiringPiI2C.h>
3+ #include < unistd.h>
34
45DECLARE (wiringPiI2CRead);
56DECLARE (wiringPiI2CReadReg8);
@@ -9,6 +10,7 @@ DECLARE(wiringPiI2CWriteReg8);
910DECLARE (wiringPiI2CWriteReg16);
1011DECLARE (wiringPiI2CSetupInterface);
1112DECLARE (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+
191213IMPLEMENT_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+ }
0 commit comments