@canboat/canboatjs 2.12.3 → 3.0.0-beta.10

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/bin/analyzerjs CHANGED
@@ -2,8 +2,7 @@
2
2
 
3
3
  const argv = require('minimist')(process.argv.slice(2), {
4
4
  alias: { h: 'help' },
5
- boolean: ['n'],
6
- boolean: ['r']
5
+ boolean: ['n', 'r', 'camel', 'camel-compat']
7
6
  })
8
7
 
9
8
  if ( argv['help'] ) {
@@ -13,6 +12,8 @@ Options:
13
12
  -c don't check for invalid values
14
13
  -n output null values
15
14
  -r parse $MXPGN as little endian
15
+ --camel output field names in camelCase
16
+ --camel-compat output field names in camelCase and regular
16
17
  -h, --help output usage information`)
17
18
  process.exit(1)
18
19
  }
@@ -21,7 +22,9 @@ const Parser = require('../index').FromPgn
21
22
  var parser = new Parser( {
22
23
  returnNulls: argv['n'] === true,
23
24
  littleEndianMXPGN: argv['r'] === true,
24
- checkForInvalidFields: argv['c'] !== true
25
+ checkForInvalidFields: argv['c'] !== true,
26
+ useCamel: argv['camel'],
27
+ useCamelCompat: argv['camel-compat']
25
28
  })
26
29
 
27
30
  parser.on('error', (pgn, error) => {
package/bin/candumpjs CHANGED
@@ -4,7 +4,7 @@ const canboatjs = require('../index')
4
4
  const Parser = require('../index').FromPgn
5
5
  const { parseCanId } = require('../lib/canId')
6
6
  const socketcan = require('socketcan')
7
-
7
+ const { binToActisense } = require('../lib/utilities')
8
8
  var parser = new canboatjs.FromPgn()
9
9
 
10
10
 
@@ -83,16 +83,3 @@ channel.addListener('onMessage', (msg) => {
83
83
  channel.start()
84
84
 
85
85
 
86
- function binToActisense(pgn, data, length) {
87
- return (
88
- pgn.timestamp +
89
- `,${pgn.prio},${pgn.pgn},${pgn.src},${pgn.dst},${length},` +
90
- new Uint32Array(data)
91
- .reduce(function(acc, i) {
92
- acc.push(i.toString(16));
93
- return acc;
94
- }, [])
95
- .map(x => (x.length === 1 ? "0" + x : x))
96
- .join(",")
97
- );
98
- }
package/bin/cansend ADDED
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env node
2
+
3
+ const canboatjs = require('../index')
4
+ const Parser = require('../index').FromPgn
5
+ const { parseCanId } = require('../lib/canId')
6
+ const { parseActisense } = require('../lib/stringMsg')
7
+
8
+ const { toPgn } = require('../lib/toPgn')
9
+ const { getPlainPGNs, binToActisense } = require('../lib/utilities')
10
+ const { encodeCanId } = require('../lib/canId')
11
+
12
+ const argv = require('minimist')(process.argv.slice(2), {
13
+ boolean: ['test', 'log-output'],
14
+ string: ['src'],
15
+ alias: { h: 'help' }
16
+ })
17
+
18
+ if ( argv['help'] ) {
19
+ console.error(`Usage: ${process.argv[0]} [options] candevice
20
+
21
+ Options:
22
+ --src <src> use src for all messages
23
+ --log-output log messages sent
24
+ --test don't connect or send any data
25
+ -h, --help output usage information`)
26
+ process.exit(1)
27
+ }
28
+
29
+ if ( argv['_'].length === 0 ) {
30
+ console.error('Please specify a device')
31
+ process.exit(1)
32
+ }
33
+
34
+ const canDevice = argv['_'][0]
35
+ const srcArg = argv.src
36
+ const logOut = argv['log-output']
37
+ const test = argv.test
38
+
39
+ let channel
40
+
41
+ if ( !test ) {
42
+ const socketcan = require('socketcan')
43
+ channel = socketcan.createRawChannel(canDevice);
44
+
45
+ channel.addListener('onStopped', (msg) => {
46
+ console.error('socketcan stopped')
47
+ })
48
+
49
+ channel.start()
50
+ }
51
+
52
+ var readline = require('readline')
53
+ var rl = readline.createInterface({
54
+ input: process.stdin,
55
+ output: process.stdout,
56
+ terminal: false
57
+ })
58
+
59
+ var input = []
60
+
61
+ rl.on('line', function (line) {
62
+ if ( line.length === 0 ) {
63
+ return
64
+ }
65
+
66
+ let msg = line[0] === '{' ? JSON.parse(line) : line
67
+
68
+ if ( typeof msg === 'string' ) {
69
+ var split = msg.split(',')
70
+ if ( srcArg !== undefined ) {
71
+ split[3] = srcArg
72
+ }
73
+ msg = split.join(',')
74
+ } else {
75
+ if ( msg.prio === undefined ) {
76
+ msg.prio = 3
77
+ }
78
+ if ( msg.dst === undefined ) {
79
+ msg.dst = 255
80
+ }
81
+ if ( srcArg !== undefined ) {
82
+ msg.src = srcArg
83
+ }
84
+ if ( msg.src === undefined ) {
85
+ msg.src = 100
86
+ }
87
+ }
88
+
89
+ var pgn, canid, buffer
90
+ if ( typeof msg === 'object' ) {
91
+ canid = encodeCanId(msg)
92
+ buffer = toPgn(msg)
93
+ if ( buffer === undefined ) {
94
+ console.error('invalid input: %s', line)
95
+ return
96
+ }
97
+ pgn = msg
98
+ } else {
99
+ pgn = parseActisense(msg)
100
+
101
+ if ( isNaN(pgn.prio) || isNaN(pgn.pgn) || isNaN(pgn.dst) || isNaN(pgn.src) ) {
102
+ console.error('invalid input: ' + line)
103
+ return
104
+ }
105
+
106
+ canid = encodeCanId(pgn)
107
+ buffer = pgn.data
108
+ }
109
+
110
+ pgn.timestamp = new Date().toISOString()
111
+
112
+ if ( buffer.length > 8 || pgn.pgn == 126720 ) {
113
+ var pgns = getPlainPGNs(buffer)
114
+ pgns.forEach(pbuffer => {
115
+ if ( !test ) {
116
+ channel.send({id: canid, ext:true, data: pbuffer})
117
+ }
118
+ if ( logOut ) {
119
+ console.log(binToActisense(pgn, pbuffer, pbuffer.length))
120
+ }
121
+ })
122
+ } else {
123
+ if ( !test ) {
124
+ channel.send({id: canid, ext:true, data: buffer})
125
+ }
126
+ if ( logOut ) {
127
+ console.log(binToActisense(pgn, buffer, buffer.length))
128
+ }
129
+ }
130
+ })