Функция C передает функцию в качестве параметра. Как обернуть эту функцию, используя node-ffi? - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь обернуть код c, используя node-ffi.Но одна функция c вызывает функцию в параметре, я искал в Интернете, но у меня не было надлежащего способа обернуть эту функцию с помощью node-ffi.

Вот то, что я пробовал раньше (фрагмент),

example.js

var intPin = 40;
var state = 0;
var lib = require('./c_functions');
lib.c_functions.attachInterrupt(intPin,abc); //attachInterrupt is a c function and **Problem 1**

function abc(){
    console.log("state: ",state);
    state++;
}

c_functions.js // библиотека доступа к файлам и функции экспорта

var ffi = require('ffi');     //requires to use node-ffi functionalities
var ref = require('ref');     //reference to integer type
var int = ref.types.int;
var voidtype = ref.types.void;
var objPtr = ref.refType(voidType);  //void pointer

var c_functions = ffi.Library('/usr/local/lib/lib.so.0.5.0', {  //accessing so file
    "attachInterrupt":[voidtype, [int,objPtr]] // **Problem 2**
});
/**
 *  @breif Definitions for Pin modes
 */
var INPUT = 0;
var OUTPUT = 1;
/**
 *  @breif Definitions for pin values
 */

var LOW = 0;
var HIGH = 1;

module.exports = {c_functions , HIGH, LOW, INPUT, OUTPUT}; //exporting functions

Итак, у меня 2 проблемы,

1.Задача 2 (в коде) - Каким должен быть тип 2-го аргумента функции attachInterrupt?

2.Задача 1 (в коде) - Как вызвать функцию, переданную в качестве параметра?

Пожалуйста, помогите!Спасибо.

...