@homebridge/dbus-native 0.6.0 → 0.7.1
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/index.d.ts +32 -0
- package/lib/dbus-buffer.js +1 -1
- package/lib/marshall.js +1 -1
- package/lib/marshallers.js +1 -1
- package/lib/put.js +101 -0
- package/package.json +15 -15
package/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import { Socket } from "net";
|
|
3
|
+
|
|
4
|
+
export function systemBus(): MessageBus;
|
|
5
|
+
|
|
6
|
+
export class MessageBus {
|
|
7
|
+
connection: BusConnection;
|
|
8
|
+
public invoke(message: any, callback: (error: { name: string, message: any } | undefined, value: any) => void): void;
|
|
9
|
+
public getService(name: string): DBusService;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class BusConnection extends EventEmitter {
|
|
13
|
+
public stream: Socket;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class DBusService {
|
|
17
|
+
public name: string;
|
|
18
|
+
public bus: MessageBus;
|
|
19
|
+
public getObject(name: string, callback: (error: null | Error, obj?: DBusObject) => void): DBusObject;
|
|
20
|
+
public getInterface(objName: string, ifaceName: string, callback: (error: null | Error, iface?: DBusInterface) => void): void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class DBusObject {
|
|
24
|
+
public name: string;
|
|
25
|
+
public service: DBusService;
|
|
26
|
+
public as(name: string): DBusInterface;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class DBusInterface extends EventEmitter implements Record<string, any> {
|
|
30
|
+
public $parent: DBusObject;
|
|
31
|
+
public $name: string; // string interface name
|
|
32
|
+
}
|
package/lib/dbus-buffer.js
CHANGED
package/lib/marshall.js
CHANGED
package/lib/marshallers.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const Buffer = require('safe-buffer').Buffer;
|
|
2
2
|
const align = require('./align').align;
|
|
3
3
|
const parseSignature = require('../lib/signature');
|
|
4
|
-
const Long = require('
|
|
4
|
+
const Long = require('long');
|
|
5
5
|
/**
|
|
6
6
|
* MakeSimpleMarshaller
|
|
7
7
|
* @param signature - the signature of the data you want to check
|
package/lib/put.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const assert = require('assert');
|
|
2
|
+
|
|
3
|
+
module.exports = Put;
|
|
4
|
+
function Put() {
|
|
5
|
+
if (!(this instanceof Put)) return new Put();
|
|
6
|
+
|
|
7
|
+
var words = [];
|
|
8
|
+
var len = 0;
|
|
9
|
+
|
|
10
|
+
this.put = function (buf) {
|
|
11
|
+
words.push({ buffer: buf });
|
|
12
|
+
len += buf.length;
|
|
13
|
+
return this;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
this.word8 = function (x) {
|
|
17
|
+
words.push({ bytes: 1, value: x });
|
|
18
|
+
len += 1;
|
|
19
|
+
return this;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
this.floatle = function (x) {
|
|
23
|
+
words.push({ bytes: 'float', endian: 'little', value: x });
|
|
24
|
+
len += 4;
|
|
25
|
+
return this;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
[8, 16, 24, 32, 64].forEach(
|
|
29
|
+
function (bits) {
|
|
30
|
+
this['word' + bits + 'be'] = function (x) {
|
|
31
|
+
words.push({ endian: 'big', bytes: bits / 8, value: x });
|
|
32
|
+
len += bits / 8;
|
|
33
|
+
return this;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
this['word' + bits + 'le'] = function (x) {
|
|
37
|
+
words.push({ endian: 'little', bytes: bits / 8, value: x });
|
|
38
|
+
len += bits / 8;
|
|
39
|
+
return this;
|
|
40
|
+
};
|
|
41
|
+
}.bind(this)
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
this.pad = function (bytes) {
|
|
45
|
+
assert(
|
|
46
|
+
Number.isInteger(bytes),
|
|
47
|
+
'pad(bytes) must be supplied with an integer!'
|
|
48
|
+
);
|
|
49
|
+
words.push({ endian: 'big', bytes: bytes, value: 0 });
|
|
50
|
+
len += bytes;
|
|
51
|
+
return this;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
this.length = function () {
|
|
55
|
+
return len;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
this.buffer = function () {
|
|
59
|
+
var buf = Buffer.alloc(len);
|
|
60
|
+
var offset = 0;
|
|
61
|
+
words.forEach(function (word) {
|
|
62
|
+
if (word.buffer) {
|
|
63
|
+
word.buffer.copy(buf, offset, 0);
|
|
64
|
+
offset += word.buffer.length;
|
|
65
|
+
} else if (word.bytes === 'float') {
|
|
66
|
+
// s * f * 2^e
|
|
67
|
+
var v = Math.abs(word.value);
|
|
68
|
+
var s = (word.value >= 0) * 1;
|
|
69
|
+
var e = Math.ceil(Math.log(v) / Math.LN2);
|
|
70
|
+
var f = v / (1 << e);
|
|
71
|
+
console.dir([s, e, f]);
|
|
72
|
+
|
|
73
|
+
console.log(word.value);
|
|
74
|
+
|
|
75
|
+
// s:1, e:7, f:23
|
|
76
|
+
// [seeeeeee][efffffff][ffffffff][ffffffff]
|
|
77
|
+
buf[offset++] = (s << 7) & ~~(e / 2);
|
|
78
|
+
buf[offset++] = ((e & 1) << 7) & ~~(f / (1 << 16));
|
|
79
|
+
buf[offset++] = 0;
|
|
80
|
+
buf[offset++] = 0;
|
|
81
|
+
offset += 4;
|
|
82
|
+
} else {
|
|
83
|
+
var big = word.endian === 'big';
|
|
84
|
+
var ix = big ? [(word.bytes - 1) * 8, -8] : [0, 8];
|
|
85
|
+
|
|
86
|
+
for (var i = ix[0]; big ? i >= 0 : i < word.bytes * 8; i += ix[1]) {
|
|
87
|
+
if (i >= 32) {
|
|
88
|
+
buf[offset++] = Math.floor(word.value / Math.pow(2, i)) & 0xff;
|
|
89
|
+
} else {
|
|
90
|
+
buf[offset++] = (word.value >> i) & 0xff;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return buf;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
this.write = function (stream) {
|
|
99
|
+
stream.write(this.buffer());
|
|
100
|
+
};
|
|
101
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@homebridge/dbus-native",
|
|
3
3
|
"author": "Andrey Sidorov <sidorares@yandex.com>",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.1",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dbus",
|
|
7
7
|
"dcop",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"bin/dbus2js.js",
|
|
16
16
|
"lib/*",
|
|
17
17
|
"index.js",
|
|
18
|
-
"package.json"
|
|
18
|
+
"package.json",
|
|
19
|
+
"index.d.ts"
|
|
19
20
|
],
|
|
20
21
|
"directories": {
|
|
21
22
|
"lib": "lib",
|
|
@@ -38,11 +39,10 @@
|
|
|
38
39
|
"dbus2js": "bin/dbus2js.js"
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
41
|
-
"@homebridge/long": "^5.2.1",
|
|
42
|
-
"@homebridge/put": "^0.0.8",
|
|
43
42
|
"event-stream": "^4.0.1",
|
|
44
43
|
"hexy": "^0.3.5",
|
|
45
|
-
"
|
|
44
|
+
"long": "^5.3.2",
|
|
45
|
+
"minimist": "^1.2.8",
|
|
46
46
|
"safe-buffer": "^5.1.2",
|
|
47
47
|
"xml2js": "^0.6.2"
|
|
48
48
|
},
|
|
@@ -52,16 +52,16 @@
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@types/minimist": "^1.2.
|
|
56
|
-
"eslint": "^8.57.
|
|
57
|
-
"eslint-config-prettier": "^
|
|
58
|
-
"eslint-plugin-markdown": "^
|
|
59
|
-
"eslint-plugin-prettier": "^5.1
|
|
60
|
-
"husky": "^9.
|
|
61
|
-
"lint-staged": "^
|
|
62
|
-
"mocha": "^
|
|
63
|
-
"nyc": "^
|
|
64
|
-
"prettier": "^3.
|
|
55
|
+
"@types/minimist": "^1.2.5",
|
|
56
|
+
"eslint": "^8.57.1",
|
|
57
|
+
"eslint-config-prettier": "^10.1.5",
|
|
58
|
+
"eslint-plugin-markdown": "^5.1.0",
|
|
59
|
+
"eslint-plugin-prettier": "^5.4.1",
|
|
60
|
+
"husky": "^9.1.7",
|
|
61
|
+
"lint-staged": "^16.1.0",
|
|
62
|
+
"mocha": "^11.5.0",
|
|
63
|
+
"nyc": "^17.1.0",
|
|
64
|
+
"prettier": "^3.5.3"
|
|
65
65
|
},
|
|
66
66
|
"scripts": {
|
|
67
67
|
"lint": "npm run lint:docs && npm run lint:code",
|