Skip to content

Commit 39fa079

Browse files
Daniel Ballayichoi
authored andcommitted
Improve type validator in GPIO module based on #993 (#994)
IoT.js-DCO-1.0-Signed-off-by: Daniel Balla [email protected]
1 parent d9c7212 commit 39fa079

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

src/modules/iotjs_module_gpio.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#include <stdio.h>
2222

2323

24-
static void iotjs_gpio_destroy(iotjs_gpio_t* gpio);
2524
static iotjs_gpio_t* iotjs_gpio_instance_from_jval(const iotjs_jval_t* jgpio);
2625
IOTJS_DEFINE_NATIVE_HANDLE_INFO_THIS_MODULE(gpio);
2726

@@ -49,14 +48,14 @@ static void iotjs_gpio_destroy(iotjs_gpio_t* gpio) {
4948

5049

5150
static iotjs_gpio_reqwrap_t* iotjs_gpio_reqwrap_create(
52-
const iotjs_jval_t* jcallback, const iotjs_jval_t* jgpio, GpioOp op) {
51+
const iotjs_jval_t* jcallback, iotjs_gpio_t* gpio, GpioOp op) {
5352
iotjs_gpio_reqwrap_t* gpio_reqwrap = IOTJS_ALLOC(iotjs_gpio_reqwrap_t);
5453
IOTJS_VALIDATED_STRUCT_CONSTRUCTOR(iotjs_gpio_reqwrap_t, gpio_reqwrap);
5554

5655
iotjs_reqwrap_initialize(&_this->reqwrap, jcallback, (uv_req_t*)&_this->req);
5756

5857
_this->req_data.op = op;
59-
_this->gpio_instance = iotjs_gpio_instance_from_jval(jgpio);
58+
_this->gpio_instance = gpio;
6059
return gpio_reqwrap;
6160
}
6261

@@ -229,22 +228,22 @@ static void gpio_set_configurable(iotjs_gpio_t* gpio,
229228
}
230229

231230

232-
#define GPIO_ASYNC(call, jthis, jcallback, op) \
231+
#define GPIO_ASYNC(call, this, jcallback, op) \
233232
do { \
234233
uv_loop_t* loop = iotjs_environment_loop(iotjs_environment_get()); \
235234
iotjs_gpio_reqwrap_t* req_wrap = \
236-
iotjs_gpio_reqwrap_create(jcallback, jthis, op); \
235+
iotjs_gpio_reqwrap_create(jcallback, this, op); \
237236
uv_work_t* req = iotjs_gpio_reqwrap_req(req_wrap); \
238237
uv_queue_work(loop, req, iotjs_gpio_##call##_worker, \
239238
iotjs_gpio_after_worker); \
240239
} while (0)
241240

242241

243-
#define GPIO_ASYNC_WITH_VALUE(call, jthis, jcallback, op, val) \
242+
#define GPIO_ASYNC_WITH_VALUE(call, this, jcallback, op, val) \
244243
do { \
245244
uv_loop_t* loop = iotjs_environment_loop(iotjs_environment_get()); \
246245
iotjs_gpio_reqwrap_t* req_wrap = \
247-
iotjs_gpio_reqwrap_create(jcallback, jthis, op); \
246+
iotjs_gpio_reqwrap_create(jcallback, this, op); \
248247
uv_work_t* req = iotjs_gpio_reqwrap_req(req_wrap); \
249248
iotjs_gpio_reqdata_t* req_data = iotjs_gpio_reqwrap_data(req_wrap); \
250249
req_data->value = val; \
@@ -265,7 +264,7 @@ JHANDLER_FUNCTION(GpioConstructor) {
265264
gpio_set_configurable(gpio, JHANDLER_GET_ARG(0, object));
266265

267266
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG(1, function);
268-
GPIO_ASYNC(open, jgpio, jcallback, kGpioOpOpen);
267+
GPIO_ASYNC(open, gpio, jcallback, kGpioOpOpen);
269268
}
270269

271270

@@ -275,12 +274,11 @@ JHANDLER_FUNCTION(Write) {
275274
DJHANDLER_CHECK_ARG_IF_EXIST(1, function);
276275

277276
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(1, function);
278-
const iotjs_jval_t* jgpio = JHANDLER_GET_THIS(object);
279277

280278
bool value = JHANDLER_GET_ARG(0, boolean);
281279

282280
if (jcallback) {
283-
GPIO_ASYNC_WITH_VALUE(write, jgpio, jcallback, kGpioOpWrite, value);
281+
GPIO_ASYNC_WITH_VALUE(write, gpio, jcallback, kGpioOpWrite, value);
284282
} else {
285283
if (!iotjs_gpio_write(gpio, value)) {
286284
JHANDLER_THROW(COMMON, "GPIO WriteSync Error");
@@ -297,10 +295,9 @@ JHANDLER_FUNCTION(Read) {
297295
DJHANDLER_CHECK_ARG_IF_EXIST(0, function);
298296

299297
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(0, function);
300-
const iotjs_jval_t* jgpio = JHANDLER_GET_THIS(object);
301298

302299
if (jcallback) {
303-
GPIO_ASYNC(read, jgpio, jcallback, kGpioOpRead);
300+
GPIO_ASYNC(read, gpio, jcallback, kGpioOpRead);
304301
iotjs_jhandler_return_null(jhandler);
305302
} else {
306303
int value = iotjs_gpio_read(gpio);
@@ -317,10 +314,9 @@ JHANDLER_FUNCTION(Close) {
317314
DJHANDLER_CHECK_ARG_IF_EXIST(0, function);
318315

319316
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(0, function);
320-
const iotjs_jval_t* jgpio = JHANDLER_GET_THIS(object);
321317

322318
if (jcallback) {
323-
GPIO_ASYNC(close, jgpio, jcallback, kGpioOpClose);
319+
GPIO_ASYNC(close, gpio, jcallback, kGpioOpClose);
324320
} else {
325321
if (!iotjs_gpio_close(gpio)) {
326322
JHANDLER_THROW(COMMON, "GPIO CloseSync Error");

0 commit comments

Comments
 (0)