@canboat/canboatjs 3.15.1 → 3.16.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +10 -0
- package/build/Makefile +347 -0
- package/build/binding.Makefile +6 -0
- package/build/canSocket.target.mk +189 -0
- package/build/gyp-mac-tool +772 -0
- package/dist/bin/candumpjs.js +2 -3
- package/dist/bin/candumpjs.js.map +1 -1
- package/dist/bin/cansendjs.js +3 -4
- package/dist/bin/cansendjs.js.map +1 -1
- package/dist/canSocket.d.ts +39 -0
- package/dist/canSocket.d.ts.map +1 -0
- package/dist/canSocket.js +101 -0
- package/dist/canSocket.js.map +1 -0
- package/dist/canbus.d.ts.map +1 -1
- package/dist/canbus.js +4 -19
- package/dist/canbus.js.map +1 -1
- package/dist/fromPgn.js +7 -1
- package/dist/fromPgn.js.map +1 -1
- package/dist/simpleCan.d.ts.map +1 -1
- package/dist/simpleCan.js +2 -3
- package/dist/simpleCan.js.map +1 -1
- package/native/canSocket.cpp +64 -0
- package/package.json +15 -13
- package/tsconfig.tsbuildinfo +1 -1
- package/vscode-profile-2025-07-21-12-04-28.cpuprofile +1 -0
- package/dist/actisense-serial.d.ts +0 -17
- package/dist/bin/actisense-file.d.ts +0 -3
- package/dist/bin/actisense-n2k-tcp.d.ts +0 -3
- package/dist/bin/actisense-serialjs.d.ts +0 -3
- package/dist/bin/analyzerjs.d.ts +0 -3
- package/dist/bin/candumpjs.d.ts +0 -3
- package/dist/bin/cansendjs.d.ts +0 -3
- package/dist/bin/ikonvert-serial.d.ts +0 -3
- package/dist/bin/to-pgn.d.ts +0 -3
- package/dist/bin/utils.d.ts +0 -4
- package/dist/bin/ydvr-file.d.ts +0 -3
- package/dist/browser.d.ts +0 -25
- package/dist/canId.d.ts +0 -21
- package/dist/canId.test.d.ts +0 -2
- package/dist/canbus.d.ts +0 -17
- package/dist/candevice.d.ts +0 -23
- package/dist/codes.d.ts +0 -2
- package/dist/discovery.d.ts +0 -17
- package/dist/fromPgnStream.d.ts +0 -17
- package/dist/ikonvert.d.ts +0 -17
- package/dist/index.d.ts +0 -40
- package/dist/maretron.d.ts +0 -74
- package/dist/maretron.test.d.ts +0 -2
- package/dist/n2k-actisense.test.d.ts +0 -2
- package/dist/n2kDevice.d.ts +0 -44
- package/dist/persist.d.ts +0 -18
- package/dist/pgns.d.ts +0 -5
- package/dist/pgns.test.d.ts +0 -2
- package/dist/simpleCan.d.ts +0 -17
- package/dist/stringMsg.test.d.ts +0 -2
- package/dist/utilities.test.d.ts +0 -2
- package/dist/venus-mqtt.d.ts +0 -11
- package/dist/w2k01.d.ts +0 -17
- package/dist/yddevice.d.ts +0 -25
- package/dist/ydgw02.d.ts +0 -17
package/dist/simpleCan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simpleCan.js","sourceRoot":"","sources":["../lib/simpleCan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;
|
|
1
|
+
{"version":3,"file":"simpleCan.js","sourceRoot":"","sources":["../lib/simpleCan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#include <napi.h>
|
|
2
|
+
#include <sys/socket.h>
|
|
3
|
+
#include <sys/ioctl.h>
|
|
4
|
+
#include <net/if.h>
|
|
5
|
+
#include <linux/can.h>
|
|
6
|
+
#include <linux/can/raw.h>
|
|
7
|
+
#include <unistd.h>
|
|
8
|
+
#include <cstring>
|
|
9
|
+
#include <cerrno>
|
|
10
|
+
|
|
11
|
+
Napi::Value OpenCanSocket(const Napi::CallbackInfo& info) {
|
|
12
|
+
Napi::Env env = info.Env();
|
|
13
|
+
|
|
14
|
+
if (info.Length() < 1 || !info[0].IsString()) {
|
|
15
|
+
Napi::TypeError::New(env, "Interface name required")
|
|
16
|
+
.ThrowAsJavaScriptException();
|
|
17
|
+
return env.Undefined();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
std::string ifname = info[0].As<Napi::String>().Utf8Value();
|
|
21
|
+
|
|
22
|
+
int fd = socket(PF_CAN, SOCK_RAW, CAN_RAW);
|
|
23
|
+
if (fd < 0) {
|
|
24
|
+
Napi::Error::New(env, std::string("socket(PF_CAN): ") + strerror(errno))
|
|
25
|
+
.ThrowAsJavaScriptException();
|
|
26
|
+
return env.Undefined();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
struct ifreq ifr;
|
|
30
|
+
std::memset(&ifr, 0, sizeof(ifr));
|
|
31
|
+
std::strncpy(ifr.ifr_name, ifname.c_str(), IFNAMSIZ - 1);
|
|
32
|
+
if (ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
|
|
33
|
+
std::string err = std::string("ioctl(SIOCGIFINDEX) for '") + ifname +
|
|
34
|
+
"': " + strerror(errno);
|
|
35
|
+
close(fd);
|
|
36
|
+
Napi::Error::New(env, err).ThrowAsJavaScriptException();
|
|
37
|
+
return env.Undefined();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
struct sockaddr_can addr;
|
|
41
|
+
std::memset(&addr, 0, sizeof(addr));
|
|
42
|
+
addr.can_family = AF_CAN;
|
|
43
|
+
addr.can_ifindex = ifr.ifr_ifindex;
|
|
44
|
+
if (bind(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
|
|
45
|
+
std::string err =
|
|
46
|
+
std::string("bind() to '") + ifname + "': " + strerror(errno);
|
|
47
|
+
close(fd);
|
|
48
|
+
Napi::Error::New(env, err).ThrowAsJavaScriptException();
|
|
49
|
+
return env.Undefined();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Leave fd in blocking mode. fs.createReadStream uses libuv's threadpool
|
|
53
|
+
// (uv_fs_read) — blocking reads on worker threads are correct and efficient.
|
|
54
|
+
// This avoids EAGAIN errors and eliminates the uv_poll_t failure mode entirely.
|
|
55
|
+
|
|
56
|
+
return Napi::Number::New(env, fd);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
60
|
+
exports.Set("openCanSocket", Napi::Function::New(env, OpenCanSocket));
|
|
61
|
+
return exports;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
NODE_API_MODULE(canSocket, Init)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canboat/canboatjs",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.16.0-beta.2",
|
|
4
4
|
"description": "Native javascript version of canboat",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"browser": "dist/browser.js",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"code-coverage": "jest --coverage && nyc mocha --exit",
|
|
12
12
|
"build_ios": "webpack -c ./webpack.config.js --mode development ./ios.js -o ios_canboat.js",
|
|
13
13
|
"build_prod_ios": "webpack -c ./webpack.config.js --mode production ./ios.js -o ios_canboat.js",
|
|
14
|
+
"install": "node-gyp rebuild || echo 'Native CAN socket addon not available on this platform'",
|
|
14
15
|
"build": "tsc -b --pretty false",
|
|
15
16
|
"watch": "tsc --watch",
|
|
16
17
|
"prepublishOnly": "npm run build",
|
|
@@ -27,15 +28,15 @@
|
|
|
27
28
|
]
|
|
28
29
|
},
|
|
29
30
|
"bin": {
|
|
30
|
-
"analyzerjs": "
|
|
31
|
-
"to-pgn": "
|
|
32
|
-
"actisense-serialjs": "
|
|
33
|
-
"actisense-file": "
|
|
34
|
-
"actisense-n2k-tcp": "
|
|
35
|
-
"candumpjs": "
|
|
36
|
-
"ikonvert-serial": "
|
|
37
|
-
"cansendjs": "
|
|
38
|
-
"ydr-file": "
|
|
31
|
+
"analyzerjs": "dist/bin/analyzerjs.js",
|
|
32
|
+
"to-pgn": "dist/bin/to-pgn.js",
|
|
33
|
+
"actisense-serialjs": "dist/bin/actisense-serialjs.js",
|
|
34
|
+
"actisense-file": "dist/bin/actisense-file.js",
|
|
35
|
+
"actisense-n2k-tcp": "dist/bin/actisense-n2k-tcp.js",
|
|
36
|
+
"candumpjs": "dist/bin/candumpjs.js",
|
|
37
|
+
"ikonvert-serial": "dist/bin/ikonvert-serial.js",
|
|
38
|
+
"cansendjs": "dist/bin/cansendjs.js",
|
|
39
|
+
"ydr-file": "dist/bin/ydvr-file.js"
|
|
39
40
|
},
|
|
40
41
|
"keywords": [
|
|
41
42
|
"boat",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"minimist": "^1.2.0",
|
|
66
67
|
"moment": "^2.30.1",
|
|
67
68
|
"mqtt": "^2.18.8",
|
|
69
|
+
"node-addon-api": "^8.6.0",
|
|
68
70
|
"split": "^1.0.1"
|
|
69
71
|
},
|
|
70
72
|
"devDependencies": {
|
|
@@ -96,13 +98,13 @@
|
|
|
96
98
|
"typescript-eslint": "^8.35.0",
|
|
97
99
|
"webpack-cli": "^6.0.1"
|
|
98
100
|
},
|
|
101
|
+
"gypfile": true,
|
|
99
102
|
"optionalDependencies": {
|
|
100
103
|
"@serialport/parser-readline": "11.x.x",
|
|
101
|
-
"serialport": "11.x.x"
|
|
102
|
-
"socketcan": "^4.0.3"
|
|
104
|
+
"serialport": "11.x.x"
|
|
103
105
|
},
|
|
104
106
|
"repository": {
|
|
105
107
|
"type": "git",
|
|
106
|
-
"url": "https://github.com/canboat/canboatjs.git"
|
|
108
|
+
"url": "git+https://github.com/canboat/canboatjs.git"
|
|
107
109
|
}
|
|
108
110
|
}
|