config-editor-base 2.7.3 → 2.7.4

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.
@@ -0,0 +1,3003 @@
1
+ {
2
+ "type": "object",
3
+ "definitions": {
4
+ "can_message": {
5
+ "type": "object",
6
+ "properties": {
7
+ "chn": {
8
+ "title": "Channel",
9
+ "description": "CAN-bus channel",
10
+ "type": "integer",
11
+ "default": 0,
12
+ "oneOf": [
13
+ {
14
+ "type": "integer",
15
+ "title": "CAN-internal",
16
+ "enum": [
17
+ 0
18
+ ]
19
+ },
20
+ {
21
+ "type": "integer",
22
+ "title": "CAN-1",
23
+ "enum": [
24
+ 1
25
+ ]
26
+ },
27
+ {
28
+ "type": "integer",
29
+ "title": "CAN-2",
30
+ "enum": [
31
+ 2
32
+ ]
33
+ }
34
+ ]
35
+ },
36
+ "id_format": {
37
+ "title": "ID-format",
38
+ "description": "ID-format of message.",
39
+ "type": "integer",
40
+ "default": 0,
41
+ "oneOf": [
42
+ {
43
+ "type": "integer",
44
+ "title": "Standard (11-bit)",
45
+ "enum": [
46
+ 0
47
+ ]
48
+ },
49
+ {
50
+ "type": "integer",
51
+ "title": "Extended (29-bit)",
52
+ "enum": [
53
+ 1
54
+ ]
55
+ }
56
+ ]
57
+ },
58
+ "id": {
59
+ "title": "ID (hex)",
60
+ "description": "ID of message in hex. Example: 1FF.",
61
+ "type": "string",
62
+ "default": "0"
63
+ },
64
+ "id_mask": {
65
+ "title": "ID mask (hex)",
66
+ "description": "ID mask in hex. Example: 7FF.",
67
+ "type": "string",
68
+ "default": "7FF"
69
+ }
70
+ },
71
+ "dependencies": {
72
+ "id_format": {
73
+ "oneOf": [
74
+ {
75
+ "properties": {
76
+ "id_format": {
77
+ "enum": [
78
+ 0
79
+ ]
80
+ },
81
+ "id": {
82
+ "pattern": "^([0-7][a-fA-F0-9]{2}|[a-fA-F0-9]{1,2})$",
83
+ "maxLength": 3
84
+ },
85
+ "id_mask": {
86
+ "pattern": "^([0-7][a-fA-F0-9]{2}|[a-fA-F0-9]{1,2})$",
87
+ "maxLength": 3
88
+ }
89
+ }
90
+ },
91
+ {
92
+ "properties": {
93
+ "id_format": {
94
+ "enum": [
95
+ 1
96
+ ]
97
+ },
98
+ "id": {
99
+ "pattern": "^([0-1][a-fA-F0-9]{7}|[a-fA-F0-9]{1,7})$",
100
+ "maxLength": 8
101
+ },
102
+ "id_mask": {
103
+ "pattern": "^([0-1][a-fA-F0-9]{7}|[a-fA-F0-9]{1,7})$",
104
+ "maxLength": 8
105
+ }
106
+ }
107
+ }
108
+ ]
109
+ }
110
+ },
111
+ "additionalProperties": false,
112
+ "required": [
113
+ "chn",
114
+ "id_format",
115
+ "id",
116
+ "id_mask"
117
+ ]
118
+ },
119
+ "can_signal": {
120
+ "type": "object",
121
+ "properties": {
122
+ "type": {
123
+ "title": "Signal type",
124
+ "type": "integer",
125
+ "default": 0,
126
+ "oneOf": [
127
+ {
128
+ "type": "integer",
129
+ "title": "Unsigned",
130
+ "enum": [
131
+ 0
132
+ ]
133
+ }
134
+ ]
135
+ },
136
+ "byteorder": {
137
+ "title": "Signal byteorder",
138
+ "description": "Can be Motorola (big endian) or Intel (little endian)",
139
+ "type": "integer",
140
+ "default": 1,
141
+ "oneOf": [
142
+ {
143
+ "type": "integer",
144
+ "title": "Motorola",
145
+ "enum": [
146
+ 0
147
+ ]
148
+ },
149
+ {
150
+ "type": "integer",
151
+ "title": "Intel",
152
+ "enum": [
153
+ 1
154
+ ]
155
+ }
156
+ ]
157
+ },
158
+ "bitpos": {
159
+ "title": "Signal bit position",
160
+ "type": "integer",
161
+ "default": 0,
162
+ "minimum": 0,
163
+ "maximum": 512
164
+ },
165
+ "length": {
166
+ "title": "Signal bit length",
167
+ "type": "integer",
168
+ "default": 0,
169
+ "minimum": 0,
170
+ "maximum": 64
171
+ },
172
+ "factor": {
173
+ "title": "Signal scaling",
174
+ "type": "number",
175
+ "default": 0
176
+ },
177
+ "offset": {
178
+ "title": "Signal offset",
179
+ "type": "number",
180
+ "default": 0
181
+ }
182
+ },
183
+ "additionalProperties": false,
184
+ "required": [
185
+ "type",
186
+ "byteorder",
187
+ "bitpos",
188
+ "length",
189
+ "factor",
190
+ "offset"
191
+ ]
192
+ },
193
+ "can_control_startstop": {
194
+ "type": "object",
195
+ "properties": {
196
+ "message": {
197
+ "title": "Message",
198
+ "$ref": "#/definitions/can_message"
199
+ },
200
+ "signal": {
201
+ "title": "Signal",
202
+ "$ref": "#/definitions/can_signal"
203
+ },
204
+ "trigger_high": {
205
+ "title": "Trigger high (dec)",
206
+ "type": "number",
207
+ "default": 0
208
+ },
209
+ "trigger_low": {
210
+ "title": "Trigger low (dec)",
211
+ "type": "number",
212
+ "default": 0
213
+ }
214
+ },
215
+ "additionalProperties": false,
216
+ "required": [
217
+ "message",
218
+ "signal",
219
+ "trigger_high",
220
+ "trigger_low"
221
+ ]
222
+ },
223
+ "can_filter_id": {
224
+ "title": "ID filters",
225
+ "type": "array",
226
+ "minItems": 1,
227
+ "items": {
228
+ "type": "object",
229
+ "properties": {
230
+ "name": {
231
+ "title": "Name",
232
+ "description": "Optional filter name.",
233
+ "type": "string",
234
+ "pattern": "^[ -~]*$",
235
+ "maxLength": 16
236
+ },
237
+ "state": {
238
+ "title": "State",
239
+ "description": "Disabled filters are ignored.",
240
+ "type": "integer",
241
+ "default": 1,
242
+ "oneOf": [
243
+ {
244
+ "type": "integer",
245
+ "title": "Disable",
246
+ "enum": [
247
+ 0
248
+ ]
249
+ },
250
+ {
251
+ "type": "integer",
252
+ "title": "Enable",
253
+ "enum": [
254
+ 1
255
+ ]
256
+ }
257
+ ]
258
+ },
259
+ "type": {
260
+ "title": "Type",
261
+ "description": "Action on match, accept or reject message.",
262
+ "type": "integer",
263
+ "default": 0,
264
+ "oneOf": [
265
+ {
266
+ "title": "Acceptance",
267
+ "enum": [
268
+ 0
269
+ ]
270
+ },
271
+ {
272
+ "title": "Rejection",
273
+ "enum": [
274
+ 1
275
+ ]
276
+ }
277
+ ]
278
+ },
279
+ "id_format": {
280
+ "title": "ID-format",
281
+ "description": "Filter ID-format. Filters apply to messages with matching ID-format.",
282
+ "type": "integer",
283
+ "default": 0,
284
+ "oneOf": [
285
+ {
286
+ "title": "Standard (11-bit)",
287
+ "enum": [
288
+ 0
289
+ ]
290
+ },
291
+ {
292
+ "title": "Extended (29-bit)",
293
+ "enum": [
294
+ 1
295
+ ]
296
+ }
297
+ ]
298
+ },
299
+ "method": {
300
+ "title": "Filter method",
301
+ "description": "The filter ID matching mechanism.",
302
+ "type": "integer",
303
+ "default": 0,
304
+ "oneOf": [
305
+ {
306
+ "title": "Range",
307
+ "enum": [
308
+ 0
309
+ ],
310
+ "description": "ID ranges"
311
+ },
312
+ {
313
+ "title": "Mask",
314
+ "enum": [
315
+ 1
316
+ ],
317
+ "description": "ID masking"
318
+ }
319
+ ]
320
+ },
321
+ "f1": {
322
+ "title": "From (range) / ID (mask) (HEX)",
323
+ "description": "If filter method is Range, this field defines the start of range. If filter method is Mask, this field defines the filter ID.",
324
+ "type": "string",
325
+ "pattern": "^[a-fA-F0-9]+$",
326
+ "maxLength": 8,
327
+ "default": "0"
328
+ },
329
+ "f2": {
330
+ "title": "To (range) / mask (mask) (HEX)",
331
+ "description": "If filter method is Range, this field defines the end of range. If filter method is Mask, this field defines the filter mask.",
332
+ "type": "string",
333
+ "pattern": "^[a-fA-F0-9]+$",
334
+ "maxLength": 8,
335
+ "default": "7FF"
336
+ }
337
+ },
338
+ "dependencies": {
339
+ "type": {
340
+ "oneOf": [
341
+ {
342
+ "properties": {
343
+ "type": {
344
+ "enum": [
345
+ 0
346
+ ]
347
+ },
348
+ "prescaler_type": {
349
+ "title": "Prescaling type",
350
+ "description": "Select prescaling type. Prescale by message count, time or data. Select None to disable prescaling.",
351
+ "type": "integer",
352
+ "default": 0,
353
+ "oneOf": [
354
+ {
355
+ "title": "None",
356
+ "enum": [
357
+ 0
358
+ ]
359
+ },
360
+ {
361
+ "title": "Count",
362
+ "enum": [
363
+ 1
364
+ ]
365
+ },
366
+ {
367
+ "title": "Time",
368
+ "enum": [
369
+ 2
370
+ ]
371
+ },
372
+ {
373
+ "title": "Data",
374
+ "enum": [
375
+ 3
376
+ ]
377
+ }
378
+ ]
379
+ }
380
+ },
381
+ "dependencies": {
382
+ "prescaler_type": {
383
+ "oneOf": [
384
+ {
385
+ "properties": {
386
+ "prescaler_type": {
387
+ "enum": [
388
+ 0
389
+ ]
390
+ }
391
+ }
392
+ },
393
+ {
394
+ "properties": {
395
+ "prescaler_type": {
396
+ "enum": [
397
+ 1
398
+ ]
399
+ },
400
+ "prescaler_value": {
401
+ "title": "Count",
402
+ "type": "integer",
403
+ "description": "Count prescaler value. Example: Set to 2 to sample a message with a specific ID every second time.",
404
+ "default": 1,
405
+ "minimum": 1,
406
+ "maximum": 256
407
+ }
408
+ },
409
+ "required": [
410
+ "prescaler_value"
411
+ ]
412
+ },
413
+ {
414
+ "properties": {
415
+ "prescaler_type": {
416
+ "enum": [
417
+ 2
418
+ ]
419
+ },
420
+ "prescaler_value": {
421
+ "title": "Time",
422
+ "description": "Time prescaler value in milliseconds. Example: Set to 1000 to sample a message with a specific ID with a minimum period time of 1 second. Note that messages are not resampled to a specific fixed period time.",
423
+ "type": "integer",
424
+ "default": 1,
425
+ "minimum": 1,
426
+ "maximum": 4194304
427
+ }
428
+ },
429
+ "required": [
430
+ "prescaler_value"
431
+ ]
432
+ },
433
+ {
434
+ "properties": {
435
+ "prescaler_type": {
436
+ "enum": [
437
+ 3
438
+ ]
439
+ },
440
+ "prescaler_value": {
441
+ "title": "Mask",
442
+ "description": "Data prescaler mask value in hex. Each bit corresponds to a data byte (up to 64 bytes). Leave empty to disable the mask (triggers on any data change). Example 1: Set to FF (0b11111111) to sample a message with a specific ID if any of the first 8 data bytes change. Example 2: Set to 03 (0b00000011) to sample if any of the two first data bytes change. Example 3: Set to 9 (0b00001001) to sample if any of the first or fourth data bytes change.",
443
+ "type": "string",
444
+ "default": "FF",
445
+ "pattern": "^[a-fA-F0-9]*$",
446
+ "maxLength": 16
447
+ }
448
+ }
449
+ }
450
+ ]
451
+ }
452
+ },
453
+ "required": [
454
+ "prescaler_type"
455
+ ]
456
+ },
457
+ {
458
+ "properties": {
459
+ "type": {
460
+ "enum": [
461
+ 1
462
+ ]
463
+ }
464
+ }
465
+ }
466
+ ]
467
+ }
468
+ },
469
+ "additionalProperties": false,
470
+ "patternProperties": {
471
+ "prescaler_type": {},
472
+ "prescaler_value": {}
473
+ },
474
+ "required": [
475
+ "state",
476
+ "type",
477
+ "id_format",
478
+ "method",
479
+ "f1",
480
+ "f2"
481
+ ]
482
+ }
483
+ },
484
+ "can_general": {
485
+ "title": "General",
486
+ "description": "CAN-bus general configuration",
487
+ "type": "object",
488
+ "properties": {
489
+ "rx_state": {
490
+ "title": "Reception (rx) initial state",
491
+ "description": "The initial state of CAN-bus reception. Can be changed using the control signal.",
492
+ "type": "integer",
493
+ "default": 1,
494
+ "oneOf": [
495
+ {
496
+ "type": "integer",
497
+ "title": "Disable",
498
+ "enum": [
499
+ 0
500
+ ]
501
+ },
502
+ {
503
+ "type": "integer",
504
+ "title": "Enable",
505
+ "enum": [
506
+ 1
507
+ ]
508
+ }
509
+ ]
510
+ },
511
+ "tx_state": {
512
+ "title": "Transmission (tx) initial state",
513
+ "description": "The initial state of CAN-bus transmissions. Can be changed using the control signal.",
514
+ "type": "integer",
515
+ "default": 1,
516
+ "oneOf": [
517
+ {
518
+ "type": "integer",
519
+ "title": "Disable",
520
+ "enum": [
521
+ 0
522
+ ]
523
+ },
524
+ {
525
+ "type": "integer",
526
+ "title": "Enable",
527
+ "enum": [
528
+ 1
529
+ ]
530
+ }
531
+ ]
532
+ }
533
+ },
534
+ "additionalProperties": false,
535
+ "required": [
536
+ "rx_state",
537
+ "tx_state"
538
+ ]
539
+ },
540
+ "can_control": {
541
+ "title": "Control",
542
+ "description": "Control signal",
543
+ "type": "object",
544
+ "properties": {
545
+ "control_rx_state": {
546
+ "title": "Control reception (rx) state",
547
+ "description": "Control CAN-bus reception state (including logging) ",
548
+ "type": "integer",
549
+ "default": 0,
550
+ "oneOf": [
551
+ {
552
+ "type": "integer",
553
+ "title": "Disable",
554
+ "enum": [
555
+ 0
556
+ ]
557
+ },
558
+ {
559
+ "type": "integer",
560
+ "title": "Enable",
561
+ "enum": [
562
+ 1
563
+ ]
564
+ }
565
+ ]
566
+ },
567
+ "control_tx_state": {
568
+ "title": "Control transmission (tx) state",
569
+ "description": "Control CAN-bus transmission state (including logging) ",
570
+ "type": "integer",
571
+ "default": 0,
572
+ "oneOf": [
573
+ {
574
+ "type": "integer",
575
+ "title": "Disable",
576
+ "enum": [
577
+ 0
578
+ ]
579
+ },
580
+ {
581
+ "type": "integer",
582
+ "title": "Enable",
583
+ "enum": [
584
+ 1
585
+ ]
586
+ }
587
+ ]
588
+ },
589
+ "start": {
590
+ "title": "Start",
591
+ "$ref": "#/definitions/can_control_startstop"
592
+ },
593
+ "stop": {
594
+ "title": "Stop",
595
+ "$ref": "#/definitions/can_control_startstop"
596
+ }
597
+ },
598
+ "required": [
599
+ "control_rx_state",
600
+ "control_tx_state",
601
+ "start",
602
+ "stop"
603
+ ]
604
+ },
605
+ "can": {
606
+ "type": "object",
607
+ "properties": {
608
+ "general": {
609
+ "$ref": "#/definitions/can_general"
610
+ },
611
+ "phy": {
612
+ "title": "Physical (CAN-bus low-level)",
613
+ "description": "CAN-bus low-level configuration",
614
+ "type": "object",
615
+ "properties": {
616
+ "mode": {
617
+ "title": "Mode",
618
+ "description": "Device CAN-bus mode. Configures how the device interacts with the bus. In Normal mode, the device can receive, acknowledge and transmit frames. In Restricted mode, the device can receive and acknowledge, but not transmit frames. In Bus Monitoring mode, the device can receive, but not acknowledge or transmit frames. It is recommended to always use the most restrictive mode possible.",
619
+ "type": "integer",
620
+ "default": 1,
621
+ "oneOf": [
622
+ {
623
+ "type": "integer",
624
+ "title": "Normal (receive, acknowledge and transmit)",
625
+ "enum": [
626
+ 0
627
+ ]
628
+ },
629
+ {
630
+ "type": "integer",
631
+ "title": "Restricted (receive and acknowledge)",
632
+ "enum": [
633
+ 1
634
+ ]
635
+ },
636
+ {
637
+ "type": "integer",
638
+ "title": "Monitoring (receive only)",
639
+ "enum": [
640
+ 2
641
+ ]
642
+ }
643
+ ]
644
+ },
645
+ "retransmission": {
646
+ "title": "Automatic retransmission",
647
+ "description": "Retransmission of frames that have lost arbitration or that have been disturbed by errors during transmission.",
648
+ "type": "integer",
649
+ "default": 1,
650
+ "oneOf": [
651
+ {
652
+ "type": "integer",
653
+ "title": "Disable",
654
+ "enum": [
655
+ 0
656
+ ]
657
+ },
658
+ {
659
+ "type": "integer",
660
+ "title": "Enable",
661
+ "enum": [
662
+ 1
663
+ ]
664
+ }
665
+ ]
666
+ },
667
+ "fd_spec": {
668
+ "title": "CAN-FD specification",
669
+ "description": "Configures the CAN-FD specification used by the device. Shall match the specification used by the CAN-bus network.",
670
+ "type": "integer",
671
+ "default": 0,
672
+ "oneOf": [
673
+ {
674
+ "type": "integer",
675
+ "title": " ISO CAN-FD (11898-1)",
676
+ "enum": [
677
+ 0
678
+ ]
679
+ },
680
+ {
681
+ "type": "integer",
682
+ "title": "non-ISO CAN-FD (Bosch V1.0.)",
683
+ "enum": [
684
+ 1
685
+ ]
686
+ }
687
+ ]
688
+ },
689
+ "bit_rate_cfg_mode": {
690
+ "title": "Bit-rate configuration mode",
691
+ "description": "Configures how the CAN-bus bit-rate is set. Modes Auto-detect and Bit-rate support all standard bit-rates. Non-standard bit-rate configuration can be set using Bit-timing. It is recommended to set the bit-rate manually if it is known.",
692
+ "type": "integer",
693
+ "default": 0,
694
+ "oneOf": [
695
+ {
696
+ "title": "Auto-detect",
697
+ "enum": [
698
+ 0
699
+ ]
700
+ },
701
+ {
702
+ "title": "Bit-rate (simple)",
703
+ "enum": [
704
+ 1
705
+ ]
706
+ },
707
+ {
708
+ "title": "Bit-timing (advanced)",
709
+ "enum": [
710
+ 2
711
+ ]
712
+ }
713
+ ]
714
+ }
715
+ },
716
+ "dependencies": {
717
+ "bit_rate_cfg_mode": {
718
+ "oneOf": [
719
+ {
720
+ "properties": {
721
+ "bit_rate_cfg_mode": {
722
+ "enum": [
723
+ 0
724
+ ]
725
+ }
726
+ }
727
+ },
728
+ {
729
+ "properties": {
730
+ "bit_rate_cfg_mode": {
731
+ "enum": [
732
+ 1
733
+ ]
734
+ },
735
+ "bit_rate_std": {
736
+ "title": "Bit-rate standard",
737
+ "type": "integer",
738
+ "default": 250000,
739
+ "oneOf": [
740
+ {
741
+ "title": "5K",
742
+ "enum": [
743
+ 5000
744
+ ]
745
+ },
746
+ {
747
+ "title": "10K",
748
+ "enum": [
749
+ 10000
750
+ ]
751
+ },
752
+ {
753
+ "title": "20K",
754
+ "enum": [
755
+ 20000
756
+ ]
757
+ },
758
+ {
759
+ "title": "33.333K",
760
+ "enum": [
761
+ 33333
762
+ ]
763
+ },
764
+ {
765
+ "title": "47.619K",
766
+ "enum": [
767
+ 47619
768
+ ]
769
+ },
770
+ {
771
+ "title": "50K",
772
+ "enum": [
773
+ 50000
774
+ ]
775
+ },
776
+ {
777
+ "title": "83.333K",
778
+ "enum": [
779
+ 83333
780
+ ]
781
+ },
782
+ {
783
+ "title": "95.238K",
784
+ "enum": [
785
+ 95238
786
+ ]
787
+ },
788
+ {
789
+ "title": "100K",
790
+ "enum": [
791
+ 100000
792
+ ]
793
+ },
794
+ {
795
+ "title": "125K",
796
+ "enum": [
797
+ 125000
798
+ ]
799
+ },
800
+ {
801
+ "title": "250K",
802
+ "enum": [
803
+ 250000
804
+ ]
805
+ },
806
+ {
807
+ "title": "500K",
808
+ "enum": [
809
+ 500000
810
+ ]
811
+ },
812
+ {
813
+ "title": "800K",
814
+ "enum": [
815
+ 800000
816
+ ]
817
+ },
818
+ {
819
+ "title": "1M",
820
+ "enum": [
821
+ 1000000
822
+ ]
823
+ }
824
+ ]
825
+ },
826
+ "bit_rate_fd": {
827
+ "title": "Bit-rate FD",
828
+ "type": "integer",
829
+ "default": 1000000,
830
+ "oneOf": [
831
+ {
832
+ "title": "1M",
833
+ "enum": [
834
+ 1000000
835
+ ]
836
+ },
837
+ {
838
+ "title": "2M",
839
+ "enum": [
840
+ 2000000
841
+ ]
842
+ },
843
+ {
844
+ "title": "4M",
845
+ "enum": [
846
+ 4000000
847
+ ]
848
+ }
849
+ ]
850
+ }
851
+ },
852
+ "required": [
853
+ "bit_rate_std",
854
+ "bit_rate_fd"
855
+ ]
856
+ },
857
+ {
858
+ "properties": {
859
+ "bit_rate_cfg_mode": {
860
+ "enum": [
861
+ 2
862
+ ]
863
+ },
864
+ "bit_rate_std": {
865
+ "title": "Bit-timing standard",
866
+ "type": "object",
867
+ "properties": {
868
+ "brp": {
869
+ "title": "BRP (Bit Rate Prescaler)",
870
+ "type": "integer",
871
+ "default": 2,
872
+ "minimum": 1
873
+ },
874
+ "seg1": {
875
+ "title": "SEG1 (Time Segment 1 )",
876
+ "type": "integer",
877
+ "default": 63,
878
+ "minimum": 1
879
+ },
880
+ "seg2": {
881
+ "title": "SEG2 (Time Segment 2)",
882
+ "type": "integer",
883
+ "default": 16,
884
+ "minimum": 2
885
+ },
886
+ "sjw": {
887
+ "title": "SJW (Synchronization Jump Width)",
888
+ "type": "integer",
889
+ "default": 4,
890
+ "minimum": 0,
891
+ "maximum": 4
892
+ }
893
+ },
894
+ "additionalProperties": false,
895
+ "required": [
896
+ "brp",
897
+ "seg1",
898
+ "seg2",
899
+ "sjw"
900
+ ]
901
+ },
902
+ "bit_rate_fd": {
903
+ "title": "Bit-timing FD",
904
+ "type": "object",
905
+ "properties": {
906
+ "brp": {
907
+ "title": "BRP (Bit Rate Prescaler)",
908
+ "type": "integer",
909
+ "default": 1,
910
+ "minimum": 1
911
+ },
912
+ "seg1": {
913
+ "title": "SEG1 (Time Segment 1)",
914
+ "type": "integer",
915
+ "default": 31,
916
+ "minimum": 1
917
+ },
918
+ "seg2": {
919
+ "title": "SEG2 (Time Segment 2)",
920
+ "type": "integer",
921
+ "default": 8,
922
+ "minimum": 2
923
+ },
924
+ "sjw": {
925
+ "title": "SJW (Synchronization Jump Width)",
926
+ "type": "integer",
927
+ "default": 4,
928
+ "minimum": 0,
929
+ "maximum": 4
930
+ }
931
+ },
932
+ "additionalProperties": false,
933
+ "required": [
934
+ "brp",
935
+ "seg1",
936
+ "seg2",
937
+ "sjw"
938
+ ]
939
+ }
940
+ },
941
+ "required": [
942
+ "bit_rate_std",
943
+ "bit_rate_fd"
944
+ ]
945
+ }
946
+ ]
947
+ }
948
+ },
949
+ "additionalProperties": false,
950
+ "patternProperties": {
951
+ "bit_rate_std": {},
952
+ "bit_rate_fd": {}
953
+ },
954
+ "required": [
955
+ "mode",
956
+ "retransmission",
957
+ "fd_spec",
958
+ "bit_rate_cfg_mode"
959
+ ]
960
+ },
961
+ "filter": {
962
+ "title": "Receive filters",
963
+ "type": "object",
964
+ "properties": {
965
+ "remote_frames": {
966
+ "title": "Filter remote request frames",
967
+ "description": "Controls if remote request frames are forwarded to the message filters. If `Reject` is selected, remote request frames are discarded before they reach the message filters.",
968
+ "type": "integer",
969
+ "default": 0,
970
+ "oneOf": [
971
+ {
972
+ "type": "integer",
973
+ "title": "Reject",
974
+ "enum": [
975
+ 0
976
+ ]
977
+ },
978
+ {
979
+ "type": "integer",
980
+ "title": "Accept",
981
+ "enum": [
982
+ 1
983
+ ]
984
+ }
985
+ ]
986
+ },
987
+ "id": {
988
+ "description": "Filters are checked sequentially, execution stops with the first matching filter element. Max 128 11-bit filters and 64 29-bit filters.",
989
+ "maxItems": 192,
990
+ "$ref": "#/definitions/can_filter_id"
991
+ }
992
+ },
993
+ "required": [
994
+ "remote_frames",
995
+ "id"
996
+ ]
997
+ },
998
+ "transmit": {
999
+ "title": "Transmit messages",
1000
+ "description": "List of CAN-bus messages transmitted by the device. Requires a CAN-bus physical mode supporting transmissions. Up to 224 messages can be configured (see documentation for more information).",
1001
+ "type": "array",
1002
+ "maxItems": 224,
1003
+ "items": {
1004
+ "type": "object",
1005
+ "properties": {
1006
+ "name": {
1007
+ "title": "Name",
1008
+ "description": "Optional transmit message name.",
1009
+ "type": "string",
1010
+ "pattern": "^[ -~]*$",
1011
+ "maxLength": 16
1012
+ },
1013
+ "state": {
1014
+ "title": "State",
1015
+ "description": "Disabled transmit messages are ignored.",
1016
+ "type": "integer",
1017
+ "default": 1,
1018
+ "oneOf": [
1019
+ {
1020
+ "type": "integer",
1021
+ "title": "Disable",
1022
+ "enum": [
1023
+ 0
1024
+ ]
1025
+ },
1026
+ {
1027
+ "type": "integer",
1028
+ "title": "Enable",
1029
+ "enum": [
1030
+ 1
1031
+ ]
1032
+ }
1033
+ ]
1034
+ },
1035
+ "id_format": {
1036
+ "title": "ID-format",
1037
+ "description": "ID-format of the transmit message.",
1038
+ "type": "integer",
1039
+ "default": 0,
1040
+ "oneOf": [
1041
+ {
1042
+ "type": "integer",
1043
+ "title": "Standard (11-bit)",
1044
+ "enum": [
1045
+ 0
1046
+ ]
1047
+ },
1048
+ {
1049
+ "type": "integer",
1050
+ "title": "Extended (29-bit)",
1051
+ "enum": [
1052
+ 1
1053
+ ]
1054
+ }
1055
+ ]
1056
+ },
1057
+ "frame_format": {
1058
+ "title": "Frame-format",
1059
+ "description": "Frame-format of the transmit message.",
1060
+ "type": "integer",
1061
+ "default": 0,
1062
+ "oneOf": [
1063
+ {
1064
+ "type": "integer",
1065
+ "title": "Standard",
1066
+ "enum": [
1067
+ 0
1068
+ ]
1069
+ },
1070
+ {
1071
+ "type": "integer",
1072
+ "title": "Standard RTR",
1073
+ "enum": [
1074
+ 2
1075
+ ]
1076
+ },
1077
+ {
1078
+ "type": "integer",
1079
+ "title": "FD",
1080
+ "enum": [
1081
+ 1
1082
+ ]
1083
+ }
1084
+ ]
1085
+ },
1086
+ "brs": {
1087
+ "title": "Bit-Rate Switch",
1088
+ "description": "Determines if an FD message is transmitted using a switched bit-rate.",
1089
+ "type": "integer",
1090
+ "default": 0
1091
+ },
1092
+ "log": {
1093
+ "title": "Include in log",
1094
+ "description": "Determines if the transmitted message is included in the log file.",
1095
+ "type": "integer",
1096
+ "default": 0,
1097
+ "oneOf": [
1098
+ {
1099
+ "type": "integer",
1100
+ "title": "Disable",
1101
+ "enum": [
1102
+ 0
1103
+ ]
1104
+ },
1105
+ {
1106
+ "type": "integer",
1107
+ "title": "Enable",
1108
+ "enum": [
1109
+ 1
1110
+ ]
1111
+ }
1112
+ ]
1113
+ },
1114
+ "period": {
1115
+ "title": "Period (10 ms steps)",
1116
+ "description": "Time period of the message transmission. 0: single shot, >0: periodic. Unit is ms.",
1117
+ "type": "integer",
1118
+ "minimum": 0,
1119
+ "maximum": 4294967290,
1120
+ "multipleOf": 10
1121
+ },
1122
+ "delay": {
1123
+ "title": "Delay (10 ms steps)",
1124
+ "description": "Offset message within the period or delay a single shot message. If multiple messages are transmitted by the device, it is recommended to offset each separately to reduce peak load on bus. If period > 0, delay < period. If single-shot, delay can be up to max value. Unit is ms.",
1125
+ "type": "integer",
1126
+ "minimum": 0,
1127
+ "maximum": 4294967290,
1128
+ "multipleOf": 10
1129
+ },
1130
+ "id": {
1131
+ "title": "Message ID (hex)",
1132
+ "description": "ID of message to transmit in hex. Example: 1FF.",
1133
+ "type": "string"
1134
+ },
1135
+ "data": {
1136
+ "title": "Messages Data (hex)",
1137
+ "description": "Data bytes of message to transmit. RTR frames only use the number of bytes do determine the DLC. Example: 01020304 or 0102030405060708. ",
1138
+ "type": "string",
1139
+ "pattern": "^([a-fA-F0-9]{2}){0,64}$",
1140
+ "maxLength": 128
1141
+ }
1142
+ },
1143
+ "dependencies": {
1144
+ "id_format": {
1145
+ "oneOf": [
1146
+ {
1147
+ "properties": {
1148
+ "id_format": {
1149
+ "enum": [
1150
+ 0
1151
+ ]
1152
+ },
1153
+ "id": {
1154
+ "pattern": "^([0-7][a-fA-F0-9]{2}|[a-fA-F0-9]{1,2})$",
1155
+ "maxLength": 3
1156
+ }
1157
+ }
1158
+ },
1159
+ {
1160
+ "properties": {
1161
+ "id_format": {
1162
+ "enum": [
1163
+ 1
1164
+ ]
1165
+ },
1166
+ "id": {
1167
+ "pattern": "^([0-1][a-fA-F0-9]{7}|[a-fA-F0-9]{1,7})$",
1168
+ "maxLength": 8
1169
+ }
1170
+ }
1171
+ }
1172
+ ]
1173
+ },
1174
+ "frame_format": {
1175
+ "oneOf": [
1176
+ {
1177
+ "properties": {
1178
+ "frame_format": {
1179
+ "enum": [
1180
+ 0
1181
+ ]
1182
+ },
1183
+ "brs": {
1184
+ "oneOf": [
1185
+ {
1186
+ "type": "integer",
1187
+ "title": "Disable",
1188
+ "enum": [
1189
+ 0
1190
+ ]
1191
+ }
1192
+ ]
1193
+ },
1194
+ "data": {
1195
+ "pattern": "^([a-fA-F0-9]{2}){0,8}$",
1196
+ "maxLength": 16
1197
+ }
1198
+ }
1199
+ },
1200
+ {
1201
+ "properties": {
1202
+ "frame_format": {
1203
+ "enum": [
1204
+ 2
1205
+ ]
1206
+ },
1207
+ "brs": {
1208
+ "oneOf": [
1209
+ {
1210
+ "type": "integer",
1211
+ "title": "Disable",
1212
+ "enum": [
1213
+ 0
1214
+ ]
1215
+ }
1216
+ ]
1217
+ },
1218
+ "data": {
1219
+ "pattern": "^([a-fA-F0-9]{2}){0,8}$",
1220
+ "maxLength": 16
1221
+ }
1222
+ }
1223
+ },
1224
+ {
1225
+ "properties": {
1226
+ "frame_format": {
1227
+ "enum": [
1228
+ 1
1229
+ ]
1230
+ },
1231
+ "brs": {
1232
+ "oneOf": [
1233
+ {
1234
+ "type": "integer",
1235
+ "title": "Disable",
1236
+ "enum": [
1237
+ 0
1238
+ ]
1239
+ },
1240
+ {
1241
+ "type": "integer",
1242
+ "title": "Enable",
1243
+ "enum": [
1244
+ 1
1245
+ ]
1246
+ }
1247
+ ]
1248
+ },
1249
+ "data": {
1250
+ "pattern": "^([a-fA-F0-9]{2}){0,64}$",
1251
+ "maxLength": 128
1252
+ }
1253
+ }
1254
+ }
1255
+ ]
1256
+ }
1257
+ },
1258
+ "additionalProperties": false,
1259
+ "required": [
1260
+ "state",
1261
+ "id_format",
1262
+ "frame_format",
1263
+ "brs",
1264
+ "log",
1265
+ "period",
1266
+ "delay",
1267
+ "id",
1268
+ "data"
1269
+ ]
1270
+ }
1271
+ },
1272
+ "control": {
1273
+ "$ref": "#/definitions/can_control"
1274
+ }
1275
+ },
1276
+ "additionalProperties": false,
1277
+ "required": [
1278
+ "general",
1279
+ "phy",
1280
+ "filter"
1281
+ ]
1282
+ },
1283
+ "lin": {
1284
+ "type": "object",
1285
+ "properties": {
1286
+ "phy": {
1287
+ "title": "Physical (LIN-bus low-level)",
1288
+ "description": "LIN-bus low-level configuration",
1289
+ "type": "object",
1290
+ "properties": {
1291
+ "mode": {
1292
+ "title": "Mode",
1293
+ "description": "Device LIN-bus mode.",
1294
+ "type": "integer",
1295
+ "default": 0,
1296
+ "oneOf": [
1297
+ {
1298
+ "type": "integer",
1299
+ "title": "Subscriber",
1300
+ "enum": [
1301
+ 0
1302
+ ]
1303
+ },
1304
+ {
1305
+ "type": "integer",
1306
+ "title": "Publisher",
1307
+ "enum": [
1308
+ 1
1309
+ ]
1310
+ }
1311
+ ]
1312
+ },
1313
+ "bit_rate": {
1314
+ "title": "Bit-rate",
1315
+ "type": "integer",
1316
+ "default": 19200,
1317
+ "oneOf": [
1318
+ {
1319
+ "title": "2400",
1320
+ "enum": [
1321
+ 2400
1322
+ ]
1323
+ },
1324
+ {
1325
+ "title": "9600",
1326
+ "enum": [
1327
+ 9600
1328
+ ]
1329
+ },
1330
+ {
1331
+ "title": "10400",
1332
+ "enum": [
1333
+ 10400
1334
+ ]
1335
+ },
1336
+ {
1337
+ "title": "19200",
1338
+ "enum": [
1339
+ 19200
1340
+ ]
1341
+ }
1342
+ ]
1343
+ }
1344
+ },
1345
+ "additionalProperties": false,
1346
+ "required": [
1347
+ "mode",
1348
+ "bit_rate"
1349
+ ]
1350
+ },
1351
+ "frames": {
1352
+ "title": "LIN-bus frames",
1353
+ "description": "Custom description of the frames on the network, if not using automatic length and/or checksum.",
1354
+ "type": "array",
1355
+ "maxItems": 64,
1356
+ "items": {
1357
+ "type": "object",
1358
+ "properties": {
1359
+ "name": {
1360
+ "title": "Name",
1361
+ "description": "Optional frame name.",
1362
+ "type": "string",
1363
+ "pattern": "^[ -~]*$",
1364
+ "maxLength": 16
1365
+ },
1366
+ "id": {
1367
+ "title": "Frame ID (hex)",
1368
+ "description": "ID of frame in hex. Example: 0F.",
1369
+ "type": "string",
1370
+ "pattern": "^([0-7][a-fA-F0-9]|[a-fA-F0-9])$",
1371
+ "maxLength": 2
1372
+ },
1373
+ "length": {
1374
+ "title": "Frame Length (decimal)",
1375
+ "description": "Length of the frame in decimal.",
1376
+ "type": "integer",
1377
+ "minimum": 1,
1378
+ "maximum": 8
1379
+ },
1380
+ "checksum_type": {
1381
+ "title": "Checksum Type",
1382
+ "description": "Type of the checksum used on the LIN-frame.",
1383
+ "type": "integer",
1384
+ "default": 0,
1385
+ "oneOf": [
1386
+ {
1387
+ "title": "Enhanced",
1388
+ "enum": [
1389
+ 0
1390
+ ]
1391
+ },
1392
+ {
1393
+ "title": "Classic",
1394
+ "enum": [
1395
+ 1
1396
+ ]
1397
+ }
1398
+ ]
1399
+ }
1400
+ },
1401
+ "additionalProperties": false,
1402
+ "required": [
1403
+ "id",
1404
+ "length",
1405
+ "checksum_type"
1406
+ ]
1407
+ }
1408
+ },
1409
+ "transmit": {
1410
+ "title": "LIN-bus transmit list",
1411
+ "description": "List of frames to transmit when in master mode.",
1412
+ "type": "array",
1413
+ "maxItems": 64,
1414
+ "uniqueItems": true,
1415
+ "items": {
1416
+ "type": "object",
1417
+ "properties": {
1418
+ "name": {
1419
+ "title": "Name",
1420
+ "description": "Optional transmit rule name.",
1421
+ "type": "string",
1422
+ "pattern": "^[ -~]*$",
1423
+ "maxLength": 16
1424
+ },
1425
+ "state": {
1426
+ "title": "State",
1427
+ "description": "Disabled transmit rules are ignored.",
1428
+ "type": "integer",
1429
+ "default": 1,
1430
+ "oneOf": [
1431
+ {
1432
+ "title": "Disable",
1433
+ "enum": [
1434
+ 0
1435
+ ]
1436
+ },
1437
+ {
1438
+ "title": "Enable",
1439
+ "enum": [
1440
+ 1
1441
+ ]
1442
+ }
1443
+ ]
1444
+ },
1445
+ "id": {
1446
+ "title": "Frame ID (hex)",
1447
+ "type": "string",
1448
+ "pattern": "^([0-7][a-fA-F0-9]|[a-fA-F0-9])$",
1449
+ "maxLength": 2
1450
+ },
1451
+ "data": {
1452
+ "title": "Data (hex)",
1453
+ "type": "string",
1454
+ "pattern": "^([a-fA-F0-9]{2})*$",
1455
+ "maxLength": 16
1456
+ }
1457
+ },
1458
+ "additionalProperties": false,
1459
+ "patternProperties": {
1460
+ "period": {},
1461
+ "delay": {}
1462
+ },
1463
+ "required": [
1464
+ "state",
1465
+ "id"
1466
+ ]
1467
+ }
1468
+ }
1469
+ },
1470
+ "dependencies": {
1471
+ "phy": {
1472
+ "oneOf": [
1473
+ {
1474
+ "properties": {
1475
+ "phy": {
1476
+ "properties": {
1477
+ "mode": {
1478
+ "enum": [
1479
+ 0
1480
+ ]
1481
+ }
1482
+ }
1483
+ },
1484
+ "transmit": {
1485
+ "items": {
1486
+ "properties": {
1487
+ "id": {
1488
+ "description": "Unique ID of frame in hex (an ID may only occur once in the list). Example: 0F."
1489
+ },
1490
+ "data": {
1491
+ "description": "Data to transmit on request",
1492
+ "minLength": 2
1493
+ }
1494
+ },
1495
+ "required": [
1496
+ "data"
1497
+ ]
1498
+ }
1499
+ }
1500
+ }
1501
+ },
1502
+ {
1503
+ "properties": {
1504
+ "phy": {
1505
+ "properties": {
1506
+ "mode": {
1507
+ "enum": [
1508
+ 1
1509
+ ]
1510
+ }
1511
+ }
1512
+ },
1513
+ "transmit": {
1514
+ "items": {
1515
+ "properties": {
1516
+ "id": {
1517
+ "description": "ID of frame in hex. Example: 0F."
1518
+ },
1519
+ "data": {
1520
+ "description": "If more than zero data bytes, then the transmit is a PUBLISH frame. If zero data bytes, then the transmit is a SUBSCRIBE frame expecting a subscriber node to provide data. ",
1521
+ "minLength": 0
1522
+ },
1523
+ "period": {
1524
+ "title": "Period (10 ms steps)",
1525
+ "description": "Time period of the message transmission. 0: single shot, >0: periodic. Unit is ms.",
1526
+ "type": "integer",
1527
+ "minimum": 0,
1528
+ "maximum": 4294967290,
1529
+ "multipleOf": 10
1530
+ },
1531
+ "delay": {
1532
+ "title": "Delay (10 ms steps)",
1533
+ "description": "Offset message within the period or delay a single shot message. If multiple messages are transmitted by the device, it is recommended to offset each separately to reduce peak load on bus. If period > 0, delay < period. If single-shot, delay can be up to max value. Unit is ms.",
1534
+ "type": "integer",
1535
+ "minimum": 0,
1536
+ "maximum": 4294967290,
1537
+ "multipleOf": 10
1538
+ }
1539
+ },
1540
+ "required": [
1541
+ "period",
1542
+ "delay"
1543
+ ]
1544
+ }
1545
+ }
1546
+ }
1547
+ }
1548
+ ]
1549
+ }
1550
+ },
1551
+ "additionalProperties": false,
1552
+ "required": [
1553
+ "phy"
1554
+ ]
1555
+ },
1556
+ "rtc_tolerance": {
1557
+ "title": "Time synchronization tolerance",
1558
+ "description": "If the time difference exceeds the tolerance, the internal time is abruptly updated. The unit is seconds.",
1559
+ "type": "integer",
1560
+ "minimum": 1,
1561
+ "maximum": 3600,
1562
+ "default": 30
1563
+ }
1564
+ },
1565
+ "properties": {
1566
+ "general": {
1567
+ "title": "General",
1568
+ "type": "object",
1569
+ "properties": {
1570
+ "device": {
1571
+ "title": "Device",
1572
+ "type": "object",
1573
+ "properties": {
1574
+ "meta": {
1575
+ "title": "Meta data",
1576
+ "description": "Optional meta data string. Displayed in device file and log file headers. Example: Site1; Truck4; ConfigRev12",
1577
+ "type": "string",
1578
+ "minLength": 0,
1579
+ "maxLength": 30,
1580
+ "pattern": "^[a-zA-Z0-9; ]*$"
1581
+ }
1582
+ },
1583
+ "additionalProperties": false
1584
+ },
1585
+ "security": {
1586
+ "title": "Security",
1587
+ "type": "object",
1588
+ "properties": {
1589
+ "kpub": {
1590
+ "title": "Server public key",
1591
+ "description": "Server / user ECC public key in base64 format. Shall match the encryption used for all protected fields.",
1592
+ "type": "string",
1593
+ "minLength": 0,
1594
+ "maxLength": 100,
1595
+ "pattern": "^[a-zA-Z0-9+/=]*$"
1596
+ }
1597
+ },
1598
+ "additionalProperties": false
1599
+ },
1600
+ "debug": {
1601
+ "title": "Debug",
1602
+ "description": "Debug functionality for use during installation and troubleshooting.",
1603
+ "type": "object",
1604
+ "properties": {
1605
+ "syslog": {
1606
+ "title": "System log",
1607
+ "description": "System events logged to the SD-card. The log levels are listed in order of increasing amount of information logged. Should only be enabled if needed during installation or troubleshooting.",
1608
+ "type": "integer",
1609
+ "default": 1,
1610
+ "oneOf": [
1611
+ {
1612
+ "type": "integer",
1613
+ "title": "Disable (0)",
1614
+ "enum": [
1615
+ 0
1616
+ ]
1617
+ },
1618
+ {
1619
+ "type": "integer",
1620
+ "title": "Error (1)",
1621
+ "enum": [
1622
+ 1
1623
+ ]
1624
+ },
1625
+ {
1626
+ "type": "integer",
1627
+ "title": "Error + Warning (2)",
1628
+ "enum": [
1629
+ 2
1630
+ ]
1631
+ },
1632
+ {
1633
+ "type": "integer",
1634
+ "title": "Error + Warning + Info (3)",
1635
+ "enum": [
1636
+ 3
1637
+ ]
1638
+ }
1639
+ ]
1640
+ },
1641
+ "restart_timer": {
1642
+ "title": "Restart timer",
1643
+ "description": "Number of runtime hours after which the device automatically restarts (set 0 to disable). Example: Set to 24 to restart after one day of runtime.",
1644
+ "type": "integer",
1645
+ "default": 120,
1646
+ "minimum": 0,
1647
+ "maximum": 168
1648
+ }
1649
+ },
1650
+ "additionalProperties": false
1651
+ }
1652
+ },
1653
+ "additionalProperties": false,
1654
+ "required": [
1655
+ "device",
1656
+ "security",
1657
+ "debug"
1658
+ ]
1659
+ },
1660
+ "log": {
1661
+ "title": "Logging",
1662
+ "description": "Configuration of logging.",
1663
+ "type": "object",
1664
+ "properties": {
1665
+ "file": {
1666
+ "title": "File",
1667
+ "type": "object",
1668
+ "properties": {
1669
+ "split_size": {
1670
+ "title": "File split size (1 to 512 MB)",
1671
+ "description": "Log file split size in MB. When the file split size is reached a new file is created and the logging continues. Closed log files can be pushed to a server if network is available. Small split sizes may reduce performance.",
1672
+ "type": "integer",
1673
+ "default": 50,
1674
+ "minimum": 1,
1675
+ "maximum": 512
1676
+ },
1677
+ "split_time_period": {
1678
+ "title": "File split time period (0 to 86400 seconds, 0 = disable)",
1679
+ "description": "Log file split time period in seconds relative to midnight (00:00:00). When a split time is reached a new file is created and the logging continues. Closed log files can be pushed to a server if network is available. Small split time periods may reduce performance.",
1680
+ "type": "integer",
1681
+ "default": 0,
1682
+ "minimum": 0,
1683
+ "maximum": 86400,
1684
+ "multipleOf": 10
1685
+ },
1686
+ "split_time_offset": {
1687
+ "title": "File split time offset (0 to 86400 seconds)",
1688
+ "description": "Log file split time offset in seconds. This value offsets the split_time_period relative to midnight (00:00:00). The set value shall be less than the split_time_period value.",
1689
+ "type": "integer",
1690
+ "default": 0,
1691
+ "minimum": 0,
1692
+ "maximum": 86400,
1693
+ "multipleOf": 10
1694
+ },
1695
+ "cyclic": {
1696
+ "title": "Cyclic logging",
1697
+ "description": "With cycling logging mode enabled the oldest log file is deleted when the memory card becomes full, allowing the logging to continue.",
1698
+ "type": "integer",
1699
+ "default": 1,
1700
+ "oneOf": [
1701
+ {
1702
+ "type": "integer",
1703
+ "title": "Disable",
1704
+ "enum": [
1705
+ 0
1706
+ ]
1707
+ },
1708
+ {
1709
+ "type": "integer",
1710
+ "title": "Enable",
1711
+ "enum": [
1712
+ 1
1713
+ ]
1714
+ }
1715
+ ]
1716
+ }
1717
+ },
1718
+ "additionalProperties": false,
1719
+ "required": [
1720
+ "split_size",
1721
+ "split_time_period",
1722
+ "split_time_offset",
1723
+ "cyclic"
1724
+ ]
1725
+ },
1726
+ "compression": {
1727
+ "title": "Compression",
1728
+ "type": "object",
1729
+ "properties": {
1730
+ "level": {
1731
+ "title": "Level",
1732
+ "description": "Window size used during optional compression. Larger window sizes yield potentially better compression rates, but may reduce logging performance. Compressed log files need to be decompressed prior to processing.",
1733
+ "type": "integer",
1734
+ "default": 0,
1735
+ "oneOf": [
1736
+ {
1737
+ "type": "integer",
1738
+ "title": "Disable",
1739
+ "enum": [
1740
+ 0
1741
+ ]
1742
+ },
1743
+ {
1744
+ "type": "integer",
1745
+ "title": "256 bytes window",
1746
+ "enum": [
1747
+ 256
1748
+ ]
1749
+ },
1750
+ {
1751
+ "type": "integer",
1752
+ "title": "512 bytes window",
1753
+ "enum": [
1754
+ 512
1755
+ ]
1756
+ },
1757
+ {
1758
+ "type": "integer",
1759
+ "title": "1024 bytes window",
1760
+ "enum": [
1761
+ 1024
1762
+ ]
1763
+ }
1764
+ ]
1765
+ }
1766
+ }
1767
+ },
1768
+ "encryption": {
1769
+ "title": "Encryption",
1770
+ "type": "object",
1771
+ "properties": {
1772
+ "state": {
1773
+ "title": "State",
1774
+ "description": "Optional log file encryption. Encrypted log files need to be decrypted prior to processing. Decryption requires your encryption password in plain form - if this is lost, the encrypted data cannot be recovered.",
1775
+ "type": "integer",
1776
+ "default": 0,
1777
+ "oneOf": [
1778
+ {
1779
+ "type": "integer",
1780
+ "title": "Disable",
1781
+ "enum": [
1782
+ 0
1783
+ ]
1784
+ },
1785
+ {
1786
+ "type": "integer",
1787
+ "title": "Enable",
1788
+ "enum": [
1789
+ 1
1790
+ ]
1791
+ }
1792
+ ]
1793
+ }
1794
+ },
1795
+ "dependencies": {
1796
+ "state": {
1797
+ "oneOf": [
1798
+ {
1799
+ "properties": {
1800
+ "state": {
1801
+ "enum": [
1802
+ 0
1803
+ ]
1804
+ }
1805
+ }
1806
+ },
1807
+ {
1808
+ "properties": {
1809
+ "state": {
1810
+ "enum": [
1811
+ 1
1812
+ ]
1813
+ },
1814
+ "keyformat": {
1815
+ "title": "Key format",
1816
+ "description": "The format of the encryption password used for encrypting logged data on the device.",
1817
+ "type": "integer",
1818
+ "default": 0,
1819
+ "oneOf": [
1820
+ {
1821
+ "type": "integer",
1822
+ "title": "Plain",
1823
+ "enum": [
1824
+ 0
1825
+ ]
1826
+ },
1827
+ {
1828
+ "type": "integer",
1829
+ "title": "Encrypted",
1830
+ "enum": [
1831
+ 1
1832
+ ]
1833
+ }
1834
+ ]
1835
+ },
1836
+ "pwd": {
1837
+ "title": "Encryption password",
1838
+ "type": "string",
1839
+ "default": ""
1840
+ }
1841
+ },
1842
+ "dependencies": {
1843
+ "keyformat": {
1844
+ "oneOf": [
1845
+ {
1846
+ "properties": {
1847
+ "keyformat": {
1848
+ "enum": [
1849
+ 0
1850
+ ]
1851
+ },
1852
+ "pwd": {
1853
+ "description": "Encryption password in plain form (min 1, max 64). Example: 2e9asdKJazCatsssdS323@ABCh22. IMPORTANT: Ensure that you securely store the plain form encryption password for decryption purposes.",
1854
+ "pattern": "^[ -~]*$",
1855
+ "minLength": 1,
1856
+ "maxLength": 64
1857
+ }
1858
+ }
1859
+ },
1860
+ {
1861
+ "properties": {
1862
+ "keyformat": {
1863
+ "enum": [
1864
+ 1
1865
+ ]
1866
+ },
1867
+ "pwd": {
1868
+ "description": "Encryption password in encrypted form (min 24, max 108). Example: B1DlMrNh22tq/kNerK/T+eSyCWSJqiqyUoovQ7C6gqRaIng6F+E=. IMPORTANT: Ensure that you encrypt the encryption password and that you include the server public key. Further, ensure that you securely store the plain form encryption password for decryption purposes.",
1869
+ "pattern": "^[a-zA-Z0-9+/=]*$",
1870
+ "minLength": 24,
1871
+ "maxLength": 108
1872
+ }
1873
+ }
1874
+ }
1875
+ ]
1876
+ }
1877
+ },
1878
+ "required": [
1879
+ "keyformat",
1880
+ "pwd"
1881
+ ]
1882
+ }
1883
+ ]
1884
+ }
1885
+ }
1886
+ },
1887
+ "error_frames": {
1888
+ "title": "Error Frames",
1889
+ "type": "object",
1890
+ "properties": {
1891
+ "state": {
1892
+ "title": "State",
1893
+ "description": "Specify whether to record error frames. Enabling this can negatively impact performance, as a potentially large number of additional frames may be recorded.",
1894
+ "type": "integer",
1895
+ "default": 0,
1896
+ "oneOf": [
1897
+ {
1898
+ "type": "integer",
1899
+ "title": "Disable",
1900
+ "enum": [
1901
+ 0
1902
+ ]
1903
+ },
1904
+ {
1905
+ "type": "integer",
1906
+ "title": "Enable",
1907
+ "enum": [
1908
+ 1
1909
+ ]
1910
+ }
1911
+ ]
1912
+ }
1913
+ },
1914
+ "required": [
1915
+ "state"
1916
+ ]
1917
+ }
1918
+ },
1919
+ "additionalProperties": false,
1920
+ "patternProperties": {
1921
+ "keyformat": {},
1922
+ "pwd": {}
1923
+ },
1924
+ "required": [
1925
+ "file",
1926
+ "compression",
1927
+ "encryption",
1928
+ "error_frames"
1929
+ ]
1930
+ },
1931
+ "rtc": {
1932
+ "title": "Real-Time Clock (RTC)",
1933
+ "description": "Configuration of the device real-time-clock.",
1934
+ "type": "object",
1935
+ "properties": {
1936
+ "sync": {
1937
+ "title": "Time synchronization method",
1938
+ "description": "Internal real-time-clock synchronization method. The real-time-clock is maintained when the device is off.",
1939
+ "type": "integer",
1940
+ "default": 2,
1941
+ "oneOf": [
1942
+ {
1943
+ "title": "Retain current time",
1944
+ "description": "The current internal time is not changed.",
1945
+ "type": "integer",
1946
+ "enum": [
1947
+ 0
1948
+ ]
1949
+ },
1950
+ {
1951
+ "title": "Manual update",
1952
+ "description": "The internal time is updated with the manually set UTC time when the device powers on. The manual time is set using the manual_date_time field",
1953
+ "type": "integer",
1954
+ "enum": [
1955
+ 1
1956
+ ]
1957
+ },
1958
+ {
1959
+ "title": "CAN-bus",
1960
+ "description": "The internal time synchronized to the time provided by the payload of a CAN-bus message",
1961
+ "type": "integer",
1962
+ "enum": [
1963
+ 3
1964
+ ]
1965
+ },
1966
+ {
1967
+ "title": "Network",
1968
+ "description": "The internal time is synchronized with the time provided by the network when available.",
1969
+ "type": "integer",
1970
+ "enum": [
1971
+ 2
1972
+ ]
1973
+ }
1974
+ ]
1975
+ },
1976
+ "timezone": {
1977
+ "title": "Time zone (UTC-12 to UTC+14)",
1978
+ "description": "Adjustment in full hours to the UTC time. NOTE: Timezone only used in MF4 log file headers.",
1979
+ "type": "integer",
1980
+ "default": 0,
1981
+ "minimum": -12,
1982
+ "maximum": 14
1983
+ },
1984
+ "adjustment": {
1985
+ "title": "Adjustment (-129600 to 129600 seconds)",
1986
+ "description": "Adjustment in seconds to the UTC time. Can be used for fine tuning the internal time. ",
1987
+ "type": "integer",
1988
+ "default": 0,
1989
+ "minimum": -129600,
1990
+ "maximum": 129600
1991
+ }
1992
+ },
1993
+ "dependencies": {
1994
+ "sync": {
1995
+ "oneOf": [
1996
+ {
1997
+ "properties": {
1998
+ "sync": {
1999
+ "enum": [
2000
+ 0
2001
+ ]
2002
+ }
2003
+ }
2004
+ },
2005
+ {
2006
+ "properties": {
2007
+ "sync": {
2008
+ "enum": [
2009
+ 1
2010
+ ]
2011
+ },
2012
+ "manual_date_time": {
2013
+ "title": "Time (UTC)",
2014
+ "description": "Manually set UTC date and time value.",
2015
+ "type": "string",
2016
+ "format": "date-time"
2017
+ }
2018
+ },
2019
+ "required": [
2020
+ "manual_date_time"
2021
+ ]
2022
+ },
2023
+ {
2024
+ "properties": {
2025
+ "sync": {
2026
+ "enum": [
2027
+ 3
2028
+ ]
2029
+ },
2030
+ "tolerance": {
2031
+ "$ref": "#/definitions/rtc_tolerance"
2032
+ },
2033
+ "message": {
2034
+ "title": "Message",
2035
+ "$ref": "#/definitions/can_message"
2036
+ },
2037
+ "valid_signal": {
2038
+ "title": "Time valid signal",
2039
+ "$ref": "#/definitions/can_signal"
2040
+ },
2041
+ "time_signal": {
2042
+ "title": "Time value signal",
2043
+ "$ref": "#/definitions/can_signal"
2044
+ }
2045
+ },
2046
+ "required": [
2047
+ "message",
2048
+ "valid_signal",
2049
+ "time_signal"
2050
+ ]
2051
+ },
2052
+ {
2053
+ "properties": {
2054
+ "sync": {
2055
+ "enum": [
2056
+ 2
2057
+ ]
2058
+ },
2059
+ "tolerance": {
2060
+ "$ref": "#/definitions/rtc_tolerance"
2061
+ },
2062
+ "ntp_server": {
2063
+ "title": "Time server",
2064
+ "description": "NTP server name used for time synchronization. If the first character is an asterisk (*) then the server name is treated as a server pool. Examples: *.pool.ntp.org, *.us.pool.ntp.org, time.nist.gov",
2065
+ "type": "string",
2066
+ "default": "*.pool.ntp.org",
2067
+ "maxLength": 32,
2068
+ "pattern": "^\\*?[a-z0-9\\.-]*$"
2069
+ }
2070
+ },
2071
+ "required": [
2072
+ "ntp_server",
2073
+ "tolerance"
2074
+ ]
2075
+ }
2076
+ ]
2077
+ }
2078
+ },
2079
+ "additionalProperties": false,
2080
+ "patternProperties": {
2081
+ "manual_date_time": {},
2082
+ "message": {},
2083
+ "valid_signal": {},
2084
+ "time_signal": {},
2085
+ "tolerance": {},
2086
+ "ntp_server": {}
2087
+ },
2088
+ "required": [
2089
+ "sync",
2090
+ "timezone",
2091
+ "adjustment"
2092
+ ]
2093
+ },
2094
+ "secondaryport": {
2095
+ "title": "Secondary Port",
2096
+ "description": "Configuration of the controlable power output (5V) on the channel-2 (CH2) connector.",
2097
+ "type": "object",
2098
+ "properties": {
2099
+ "power_schedule": {
2100
+ "title": "Power schedule",
2101
+ "description": "The daily power schedule is defined by a number of power-on from/to intervals. Define no power-on intervals to keep always off. Define one interval with from/to both set to 00:00 to keep always on. Time format is HH:MM (1 minute resolution). Uses UTC time.",
2102
+ "type": "array",
2103
+ "default": [],
2104
+ "maxItems": 5,
2105
+ "items": {
2106
+ "type": "object",
2107
+ "properties": {
2108
+ "from": {
2109
+ "title": "From",
2110
+ "description": "Power-on FROM time in format HH:MM. Shall be before power-on TO time. E.g. at midnight 00:00",
2111
+ "type": "string",
2112
+ "default": "00:00",
2113
+ "pattern": "^([0-1][0-9]|2[0-4]):([0-5][0-9])$"
2114
+ },
2115
+ "to": {
2116
+ "title": "To",
2117
+ "description": "Power-on TO time in format HH:MM. Shall be after power-on FROM time. E.g. at midday 12:00.",
2118
+ "type": "string",
2119
+ "default": "00:00",
2120
+ "pattern": "^([0-1][0-9]|2[0-4]):([0-5][0-9])$"
2121
+ }
2122
+ },
2123
+ "additionalProperties": false,
2124
+ "required": [
2125
+ "from",
2126
+ "to"
2127
+ ]
2128
+ }
2129
+ }
2130
+ },
2131
+ "additionalProperties": false,
2132
+ "required": [
2133
+ "power_schedule"
2134
+ ]
2135
+ },
2136
+ "can_internal": {
2137
+ "title": "CAN Channel internal",
2138
+ "description": "CAN-internal is a virtual channel used for signals generated by the device itself.",
2139
+ "type": "object",
2140
+ "properties": {
2141
+ "general": {
2142
+ "title": "General",
2143
+ "$ref": "#/definitions/can_general"
2144
+ },
2145
+ "filter": {
2146
+ "title": "Receive filters",
2147
+ "type": "object",
2148
+ "properties": {
2149
+ "id": {
2150
+ "description": "Filters are checked sequentially, execution stops with the first matching filter element. Max 20 filters in total.",
2151
+ "maxItems": 20,
2152
+ "$ref": "#/definitions/can_filter_id"
2153
+ }
2154
+ },
2155
+ "required": [
2156
+ "id"
2157
+ ]
2158
+ },
2159
+ "control": {
2160
+ "$ref": "#/definitions/can_control"
2161
+ }
2162
+ },
2163
+ "additionalProperties": false,
2164
+ "required": [
2165
+ "filter"
2166
+ ]
2167
+ },
2168
+ "can_1": {
2169
+ "title": "CAN-1 (physical)",
2170
+ "description": "CAN-1 is a physical interface on channel-1 (CH1)",
2171
+ "$ref": "#/definitions/can"
2172
+ },
2173
+ "can_2": {
2174
+ "title": "CAN-2 (physical)",
2175
+ "description": "CAN-2 is a physical interface on channel-2 (CH2)",
2176
+ "$ref": "#/definitions/can"
2177
+ },
2178
+ "lin_1": {
2179
+ "title": "LIN-1",
2180
+ "description": "LIN-1 is a physical interface on channel-1 (CH1)",
2181
+ "$ref": "#/definitions/lin"
2182
+ },
2183
+ "lin_2": {
2184
+ "title": "LIN-2",
2185
+ "description": "LIN-2 is a physical interface on channel-2 (CH2)",
2186
+ "$ref": "#/definitions/lin"
2187
+ },
2188
+ "routing": {
2189
+ "title": "Routing",
2190
+ "description": "Configuration of message routing. Up to 32 routing rules can be defined. Messages received on CAN-internal, CAN-1, CAN-2, LIN-1, and LIN-2 can be routed to CAN-1 and/or CAN-2.",
2191
+ "type": "array",
2192
+ "minItems": 0,
2193
+ "maxItems": 32,
2194
+ "items": {
2195
+ "type": "object",
2196
+ "properties": {
2197
+ "name": {
2198
+ "title": "Name",
2199
+ "description": "Optional routing rule name.",
2200
+ "type": "string",
2201
+ "pattern": "^[ -~]*$",
2202
+ "maxLength": 16
2203
+ },
2204
+ "state": {
2205
+ "title": "State",
2206
+ "description": "Disabled routing rules are ignored.",
2207
+ "type": "integer",
2208
+ "default": 1,
2209
+ "oneOf": [
2210
+ {
2211
+ "type": "integer",
2212
+ "title": "Disable",
2213
+ "enum": [
2214
+ 0
2215
+ ]
2216
+ },
2217
+ {
2218
+ "type": "integer",
2219
+ "title": "Enable",
2220
+ "enum": [
2221
+ 1
2222
+ ]
2223
+ }
2224
+ ]
2225
+ },
2226
+ "log": {
2227
+ "title": "Log",
2228
+ "description": "Determines if the output (transmit) message is included in the log file.",
2229
+ "type": "integer",
2230
+ "default": 0,
2231
+ "oneOf": [
2232
+ {
2233
+ "type": "integer",
2234
+ "title": "Disable",
2235
+ "enum": [
2236
+ 0
2237
+ ]
2238
+ },
2239
+ {
2240
+ "type": "integer",
2241
+ "title": "Enable",
2242
+ "enum": [
2243
+ 1
2244
+ ]
2245
+ }
2246
+ ]
2247
+ },
2248
+ "chn_src": {
2249
+ "title": "Source channel",
2250
+ "description": "Source message channel.",
2251
+ "type": "integer",
2252
+ "default": 0,
2253
+ "oneOf": [
2254
+ {
2255
+ "type": "integer",
2256
+ "title": "CAN-internal",
2257
+ "enum": [
2258
+ 0
2259
+ ]
2260
+ },
2261
+ {
2262
+ "type": "integer",
2263
+ "title": "CAN-1",
2264
+ "enum": [
2265
+ 1
2266
+ ]
2267
+ },
2268
+ {
2269
+ "type": "integer",
2270
+ "title": "CAN-2",
2271
+ "enum": [
2272
+ 2
2273
+ ]
2274
+ },
2275
+ {
2276
+ "type": "integer",
2277
+ "title": "LIN-1",
2278
+ "enum": [
2279
+ 3
2280
+ ]
2281
+ },
2282
+ {
2283
+ "type": "integer",
2284
+ "title": "LIN-2",
2285
+ "enum": [
2286
+ 4
2287
+ ]
2288
+ }
2289
+ ]
2290
+ },
2291
+ "id_format_src": {
2292
+ "title": "Source ID-format",
2293
+ "description": "Source message ID-format of source message. If source bus is LIN, then this field is ignored.",
2294
+ "type": "integer",
2295
+ "default": 0,
2296
+ "oneOf": [
2297
+ {
2298
+ "type": "integer",
2299
+ "title": "Standard (11-bit)",
2300
+ "enum": [
2301
+ 0
2302
+ ]
2303
+ },
2304
+ {
2305
+ "type": "integer",
2306
+ "title": "Extended (29-bit)",
2307
+ "enum": [
2308
+ 1
2309
+ ]
2310
+ }
2311
+ ]
2312
+ },
2313
+ "id_src": {
2314
+ "title": "Source ID (hex)",
2315
+ "description": "Source message ID-value. Example: 1FF.",
2316
+ "type": "string",
2317
+ "default": "0"
2318
+ },
2319
+ "chn_dst": {
2320
+ "title": "Destination channel",
2321
+ "description": "Destination message channel.",
2322
+ "type": "integer",
2323
+ "default": 1,
2324
+ "oneOf": [
2325
+ {
2326
+ "type": "integer",
2327
+ "title": "CAN-1",
2328
+ "enum": [
2329
+ 1
2330
+ ]
2331
+ },
2332
+ {
2333
+ "type": "integer",
2334
+ "title": "CAN-2",
2335
+ "enum": [
2336
+ 2
2337
+ ]
2338
+ }
2339
+ ]
2340
+ },
2341
+ "id_format_dst": {
2342
+ "title": "Destination ID-format",
2343
+ "description": "Destination message ID-format.",
2344
+ "type": "integer",
2345
+ "default": 0,
2346
+ "oneOf": [
2347
+ {
2348
+ "type": "integer",
2349
+ "title": "Standard (11-bit)",
2350
+ "enum": [
2351
+ 0
2352
+ ]
2353
+ },
2354
+ {
2355
+ "type": "integer",
2356
+ "title": "Extended (29-bit)",
2357
+ "enum": [
2358
+ 1
2359
+ ]
2360
+ }
2361
+ ]
2362
+ },
2363
+ "id_dst": {
2364
+ "title": "Destination ID (hex)",
2365
+ "description": "Destination message ID-value. Example: 1FF.",
2366
+ "type": "string",
2367
+ "default": "0"
2368
+ }
2369
+ },
2370
+ "dependencies": {
2371
+ "id_format_src": {
2372
+ "oneOf": [
2373
+ {
2374
+ "properties": {
2375
+ "id_format_src": {
2376
+ "enum": [
2377
+ 0
2378
+ ]
2379
+ },
2380
+ "id_src": {
2381
+ "pattern": "^([0-7][a-fA-F0-9]{2}|[a-fA-F0-9]{1,2})$",
2382
+ "maxLength": 3
2383
+ }
2384
+ }
2385
+ },
2386
+ {
2387
+ "properties": {
2388
+ "id_format_src": {
2389
+ "enum": [
2390
+ 1
2391
+ ]
2392
+ },
2393
+ "id_src": {
2394
+ "pattern": "^([0-1][a-fA-F0-9]{7}|[a-fA-F0-9]{1,7})$",
2395
+ "maxLength": 8
2396
+ }
2397
+ }
2398
+ }
2399
+ ]
2400
+ },
2401
+ "id_format_dst": {
2402
+ "oneOf": [
2403
+ {
2404
+ "properties": {
2405
+ "id_format_dst": {
2406
+ "enum": [
2407
+ 0
2408
+ ]
2409
+ },
2410
+ "id_dst": {
2411
+ "pattern": "^([0-7][a-fA-F0-9]{2}|[a-fA-F0-9]{1,2})$",
2412
+ "maxLength": 3
2413
+ }
2414
+ }
2415
+ },
2416
+ {
2417
+ "properties": {
2418
+ "id_format_dst": {
2419
+ "enum": [
2420
+ 1
2421
+ ]
2422
+ },
2423
+ "id_dst": {
2424
+ "pattern": "^([0-1][a-fA-F0-9]{7}|[a-fA-F0-9]{1,7})$",
2425
+ "maxLength": 8
2426
+ }
2427
+ }
2428
+ }
2429
+ ]
2430
+ }
2431
+ },
2432
+ "additionalProperties": false,
2433
+ "required": [
2434
+ "state",
2435
+ "log",
2436
+ "chn_src",
2437
+ "id_format_src",
2438
+ "id_src",
2439
+ "chn_dst",
2440
+ "id_format_dst",
2441
+ "id_dst"
2442
+ ]
2443
+ }
2444
+ },
2445
+ "connect": {
2446
+ "title": "Connectivity",
2447
+ "description": "Configuration of the WiFi based network.",
2448
+ "type": "object",
2449
+ "properties": {
2450
+ "wifi": {
2451
+ "title": "WiFi",
2452
+ "type": "object",
2453
+ "properties": {
2454
+ "mode": {
2455
+ "title": "Mode",
2456
+ "description": "In station mode, the device can use either active or passive scanning to find APs. Using active scan, the radio transmits a probe request and listens for responses. Using passive scan, the radio listens on each channel for beacons sent periodically by APs.",
2457
+ "type": "integer",
2458
+ "default": 0,
2459
+ "oneOf": [
2460
+ {
2461
+ "type": "integer",
2462
+ "title": "Station mode (active scanning)",
2463
+ "enum": [
2464
+ 0
2465
+ ]
2466
+ },
2467
+ {
2468
+ "type": "integer",
2469
+ "title": "Station mode (passive scanning)",
2470
+ "enum": [
2471
+ 1
2472
+ ]
2473
+ }
2474
+ ]
2475
+ },
2476
+ "keyformat": {
2477
+ "title": "Key format",
2478
+ "description": "The format of the password(s). Can be used to hide the sensitive credentials stored on the device.",
2479
+ "type": "integer",
2480
+ "default": 0,
2481
+ "oneOf": [
2482
+ {
2483
+ "type": "integer",
2484
+ "title": "Plain",
2485
+ "enum": [
2486
+ 0
2487
+ ]
2488
+ },
2489
+ {
2490
+ "type": "integer",
2491
+ "title": "Encrypted",
2492
+ "enum": [
2493
+ 1
2494
+ ]
2495
+ }
2496
+ ]
2497
+ },
2498
+ "accesspoint": {
2499
+ "title": "Access points",
2500
+ "description": "List of access points. Connects to the first available AP in list.",
2501
+ "type": "array",
2502
+ "maxItems": 4,
2503
+ "items": {
2504
+ "type": "object",
2505
+ "properties": {
2506
+ "ssid": {
2507
+ "title": "SSID",
2508
+ "description": "Access point SSID (name of access point)",
2509
+ "type": "string",
2510
+ "pattern": "^(?!\\s).+(?<!\\s)$",
2511
+ "minLength": 0,
2512
+ "maxLength": 32
2513
+ },
2514
+ "pwd": {
2515
+ "title": "Password",
2516
+ "type": "string",
2517
+ "pattern": "^(?!\\s).*(?<!\\s)$",
2518
+ "default": "",
2519
+ "maxLength": 64
2520
+ },
2521
+ "minrssi": {
2522
+ "title": "Minimum RSSI (received signal strength indicator), 0-100%",
2523
+ "description": "Sets a minimum required access point signal strength. The device will not connect to the access point if the measured signal strength is below the value of this field.",
2524
+ "type": "integer",
2525
+ "default": 0,
2526
+ "minimum": 0,
2527
+ "maximum": 100
2528
+ }
2529
+ },
2530
+ "additionalProperties": false,
2531
+ "required": [
2532
+ "ssid",
2533
+ "minrssi"
2534
+ ]
2535
+ }
2536
+ }
2537
+ },
2538
+ "dependencies": {
2539
+ "keyformat": {
2540
+ "oneOf": [
2541
+ {
2542
+ "properties": {
2543
+ "keyformat": {
2544
+ "enum": [
2545
+ 0
2546
+ ]
2547
+ },
2548
+ "accesspoint": {
2549
+ "items": {
2550
+ "type": "object",
2551
+ "properties": {
2552
+ "pwd": {
2553
+ "title": "Password",
2554
+ "description": "Access point password in plain form (max 64). Leave empty to connect to an open AP. Example: 31aAabC81@99.",
2555
+ "pattern": "^[ -~]*$",
2556
+ "minLength": 0
2557
+ }
2558
+ }
2559
+ }
2560
+ }
2561
+ }
2562
+ },
2563
+ {
2564
+ "properties": {
2565
+ "keyformat": {
2566
+ "enum": [
2567
+ 1
2568
+ ]
2569
+ },
2570
+ "accesspoint": {
2571
+ "items": {
2572
+ "type": "object",
2573
+ "properties": {
2574
+ "pwd": {
2575
+ "title": "Encrypted password",
2576
+ "description": "Access point password in encrypted form (min 24, max 64). Example: rl8/EAy3qTChCsMIIeZPR6rvGEanRJCnL2xbzqo=. IMPORTANT: Ensure that you encrypt all access point passwords and that you include the server public key",
2577
+ "pattern": "^[a-zA-Z0-9+/=]*$",
2578
+ "minLength": 24
2579
+ }
2580
+ }
2581
+ }
2582
+ }
2583
+ }
2584
+ }
2585
+ ]
2586
+ }
2587
+ },
2588
+ "additionalProperties": false,
2589
+ "required": [
2590
+ "mode",
2591
+ "keyformat"
2592
+ ]
2593
+ },
2594
+ "protocol": {
2595
+ "title": "Network protocol",
2596
+ "description": "The network protocol used to communicate with the device.",
2597
+ "type": "integer",
2598
+ "default": 0,
2599
+ "additionalProperties": false,
2600
+ "required": [
2601
+ "protocol"
2602
+ ],
2603
+ "oneOf": [
2604
+ {
2605
+ "type": "integer",
2606
+ "title": "S3",
2607
+ "enum": [
2608
+ 0
2609
+ ]
2610
+ },
2611
+ {
2612
+ "type": "integer",
2613
+ "title": "Web server",
2614
+ "enum": [
2615
+ 1
2616
+ ]
2617
+ }
2618
+ ]
2619
+ }
2620
+ },
2621
+ "dependencies": {
2622
+ "protocol": {
2623
+ "oneOf": [
2624
+ {
2625
+ "properties": {
2626
+ "protocol": {
2627
+ "enum": [
2628
+ 0
2629
+ ]
2630
+ },
2631
+ "s3": {
2632
+ "title": "S3 server settings",
2633
+ "type": "object",
2634
+ "properties": {
2635
+ "sync": {
2636
+ "title": "Synchronization",
2637
+ "description": "This section configures how and when the device communicates with the S3 server.",
2638
+ "type": "object",
2639
+ "properties": {
2640
+ "ota": {
2641
+ "title": "Firmware, config and certificate",
2642
+ "description": "Configures how often the device looks for firmware-, config- and certificate-over-the-air updates. Small values may reduce performance. Time period may sometimes become longer if device is busy. Set to 0 to disable.",
2643
+ "type": "integer",
2644
+ "default": 600,
2645
+ "minimum": 0,
2646
+ "maximum": 86400,
2647
+ "multipleOf": 5
2648
+ },
2649
+ "heartbeat": {
2650
+ "title": "Heartbeat",
2651
+ "description": "Configures how often the device transmits the heartbeat signal. Small values may reduce performance. Time period may sometimes become longer if device is busy. Set to 0 to disable.",
2652
+ "type": "integer",
2653
+ "default": 300,
2654
+ "minimum": 0,
2655
+ "maximum": 86400,
2656
+ "multipleOf": 5
2657
+ },
2658
+ "logfiles": {
2659
+ "title": "Log files",
2660
+ "description": "Configures if the device pushes closed log files to the server. The log files are deleted from the device when successfully uploaded.",
2661
+ "type": "integer",
2662
+ "default": 1,
2663
+ "oneOf": [
2664
+ {
2665
+ "type": "integer",
2666
+ "title": "Disable",
2667
+ "enum": [
2668
+ 0
2669
+ ]
2670
+ },
2671
+ {
2672
+ "type": "integer",
2673
+ "title": "Enable",
2674
+ "enum": [
2675
+ 1
2676
+ ]
2677
+ }
2678
+ ]
2679
+ }
2680
+ },
2681
+ "additionalProperties": false,
2682
+ "required": [
2683
+ "ota",
2684
+ "heartbeat",
2685
+ "logfiles"
2686
+ ]
2687
+ },
2688
+ "server": {
2689
+ "title": "Server",
2690
+ "description": "This section contains the server connection parameters.",
2691
+ "type": "object",
2692
+ "properties": {
2693
+ "endpoint": {
2694
+ "title": "Endpoint",
2695
+ "description": "S3 server endpoint. Prefix with http:// to connect using standard http. Prefix with https:// to connect using SSL/TLS - requires support by the server and that the server certificate is loaded onto the device. Examples: http://192.168.0.1, https://s3.mydomain.com, https://s3.amazonaws.com, http://s3-us-east-2.amazonaws.com.",
2696
+ "type": "string",
2697
+ "pattern": "^https*://[a-zA-Z0-9_/\\.-]+$",
2698
+ "maxLength": 128
2699
+ },
2700
+ "port": {
2701
+ "title": "Port",
2702
+ "description": "S3 server port. Examples: 80 (http), 443 (https), 9000 (custom).",
2703
+ "type": "integer",
2704
+ "minimum": 0,
2705
+ "maximum": 65535
2706
+ },
2707
+ "bucket": {
2708
+ "title": "Bucket name",
2709
+ "description": "S3 server bucket name. Examples: logbucket, fleetbucket, testbucket.",
2710
+ "type": "string",
2711
+ "pattern": "^[a-z0-9]{1}[a-z0-9\\.\\-]{0,62}[a-z0-9]{1}$",
2712
+ "maxLength": 64
2713
+ },
2714
+ "region": {
2715
+ "title": "Region",
2716
+ "description": "S3 server region. Example: us-east-1.",
2717
+ "type": "string",
2718
+ "pattern": "^[a-z0-9-]*$",
2719
+ "minLength": 0,
2720
+ "maxLength": 32
2721
+ },
2722
+ "request_style": {
2723
+ "title": "Request style",
2724
+ "description": "Virtual-hosted-style or path-style S3 requests. Virtual hosted-style format: \"http://[BUCKET-NAME].[DOMAIN]/[OBJECT-NAME]\". Path-style format: \"http://[DOMAIN]/[BUCKET-NAME]/[OBJECT-NAME]\"",
2725
+ "type": "integer",
2726
+ "default": 0,
2727
+ "oneOf": [
2728
+ {
2729
+ "type": "integer",
2730
+ "title": "Path-style",
2731
+ "enum": [
2732
+ 0
2733
+ ]
2734
+ },
2735
+ {
2736
+ "type": "integer",
2737
+ "title": "Virtual hosted-style",
2738
+ "enum": [
2739
+ 1
2740
+ ]
2741
+ }
2742
+ ]
2743
+ },
2744
+ "accesskey": {
2745
+ "title": "AccessKey",
2746
+ "description": "S3 server access key ID. Example: PRDDKN8R6PAAOGTEI53E",
2747
+ "type": "string",
2748
+ "pattern": "^[a-zA-Z0-9_-]+$",
2749
+ "minLength": 3,
2750
+ "maxLength": 128
2751
+ },
2752
+ "keyformat": {
2753
+ "title": "SecretKey format",
2754
+ "description": "The format of the secret key. Can be used to hide the secret key stored on the device.",
2755
+ "type": "integer",
2756
+ "default": 0,
2757
+ "oneOf": [
2758
+ {
2759
+ "type": "integer",
2760
+ "title": "Plain",
2761
+ "enum": [
2762
+ 0
2763
+ ]
2764
+ },
2765
+ {
2766
+ "type": "integer",
2767
+ "title": "Encrypted",
2768
+ "enum": [
2769
+ 1
2770
+ ]
2771
+ }
2772
+ ]
2773
+ },
2774
+ "secretkey": {
2775
+ "title": "SecretKey",
2776
+ "type": "string"
2777
+ },
2778
+ "signed_payload": {
2779
+ "title": "Signed payload",
2780
+ "description": "Include payload checksum in signature. Reduces device upload performance.",
2781
+ "type": "integer",
2782
+ "default": 0,
2783
+ "oneOf": [
2784
+ {
2785
+ "type": "integer",
2786
+ "title": "Off",
2787
+ "enum": [
2788
+ 0
2789
+ ]
2790
+ },
2791
+ {
2792
+ "type": "integer",
2793
+ "title": "On",
2794
+ "enum": [
2795
+ 1
2796
+ ]
2797
+ }
2798
+ ]
2799
+ }
2800
+ },
2801
+ "dependencies": {
2802
+ "endpoint": [
2803
+ "port",
2804
+ "bucket",
2805
+ "region",
2806
+ "request_style",
2807
+ "accesskey",
2808
+ "keyformat",
2809
+ "secretkey",
2810
+ "signed_payload"
2811
+ ],
2812
+ "keyformat": {
2813
+ "oneOf": [
2814
+ {
2815
+ "properties": {
2816
+ "keyformat": {
2817
+ "enum": [
2818
+ 0
2819
+ ]
2820
+ },
2821
+ "secretkey": {
2822
+ "description": "S3 server secret key in plain form (max 128). Example: IAkwE9vvEh9ke4RH",
2823
+ "pattern": "^[ -~]*$",
2824
+ "minLength": 1,
2825
+ "maxLength": 128
2826
+ }
2827
+ }
2828
+ },
2829
+ {
2830
+ "properties": {
2831
+ "keyformat": {
2832
+ "enum": [
2833
+ 1
2834
+ ]
2835
+ },
2836
+ "secretkey": {
2837
+ "description": "S3 server secret key in encrypted form (min 24, max 150). Example: AKGaqGJWxEhTfJX6oeR/OIdu5Swm9HQY. IMPORTANT: Ensure that you correctly encrypt the secretKey and that you include the server public key",
2838
+ "pattern": "^[a-zA-Z0-9+/=]*$",
2839
+ "minLength": 24,
2840
+ "maxLength": 150
2841
+ }
2842
+ }
2843
+ }
2844
+ ]
2845
+ }
2846
+ },
2847
+ "additionalProperties": false
2848
+ }
2849
+ },
2850
+ "additionalProperties": false
2851
+ }
2852
+ }
2853
+ },
2854
+ {
2855
+ "properties": {
2856
+ "protocol": {
2857
+ "enum": [
2858
+ 1
2859
+ ]
2860
+ },
2861
+ "webserver": {
2862
+ "title": "Web server settings",
2863
+ "type": "object",
2864
+ "properties": {
2865
+ "permission": {
2866
+ "title": "Access permission",
2867
+ "description": "Web server access permission level",
2868
+ "type": "integer",
2869
+ "default": 0,
2870
+ "additionalProperties": false,
2871
+ "oneOf": [
2872
+ {
2873
+ "type": "integer",
2874
+ "title": "Read only",
2875
+ "enum": [
2876
+ 0
2877
+ ]
2878
+ },
2879
+ {
2880
+ "type": "integer",
2881
+ "title": "Read, write and execute",
2882
+ "enum": [
2883
+ 1
2884
+ ]
2885
+ }
2886
+ ]
2887
+ },
2888
+ "security": {
2889
+ "title": "Security",
2890
+ "description": "Controls if the web server is protected by basic authentication or not.",
2891
+ "type": "integer",
2892
+ "default": 0,
2893
+ "additionalProperties": false,
2894
+ "oneOf": [
2895
+ {
2896
+ "type": "integer",
2897
+ "title": "None",
2898
+ "enum": [
2899
+ 0
2900
+ ]
2901
+ },
2902
+ {
2903
+ "type": "integer",
2904
+ "title": "Basic",
2905
+ "enum": [
2906
+ 1
2907
+ ]
2908
+ },
2909
+ {
2910
+ "type": "integer",
2911
+ "title": "Basic with encrypted password",
2912
+ "enum": [
2913
+ 2
2914
+ ]
2915
+ }
2916
+ ]
2917
+ }
2918
+ },
2919
+ "dependencies": {
2920
+ "security": {
2921
+ "oneOf": [
2922
+ {
2923
+ "properties": {
2924
+ "security": {
2925
+ "enum": [
2926
+ 0
2927
+ ]
2928
+ }
2929
+ }
2930
+ },
2931
+ {
2932
+ "properties": {
2933
+ "security": {
2934
+ "enum": [
2935
+ 1
2936
+ ]
2937
+ },
2938
+ "password": {
2939
+ "title": "Password",
2940
+ "type": "string",
2941
+ "description": "Password",
2942
+ "minLength": 1,
2943
+ "maxLength": 64
2944
+ }
2945
+ }
2946
+ },
2947
+ {
2948
+ "properties": {
2949
+ "security": {
2950
+ "enum": [
2951
+ 2
2952
+ ]
2953
+ },
2954
+ "password": {
2955
+ "title": "Encrypted password",
2956
+ "type": "string",
2957
+ "description": "Password in encrypted form (min 24, max 64)",
2958
+ "minLength": 24,
2959
+ "maxLength": 64
2960
+ }
2961
+ }
2962
+ }
2963
+ ]
2964
+ }
2965
+ },
2966
+ "additionalProperties": false,
2967
+ "patternProperties": {
2968
+ "password": {}
2969
+ },
2970
+ "required": [
2971
+ "permission",
2972
+ "security"
2973
+ ]
2974
+ }
2975
+ }
2976
+ }
2977
+ ]
2978
+ }
2979
+ },
2980
+ "additionalProperties": false,
2981
+ "patternProperties": {
2982
+ "s3": {},
2983
+ "webserver": {}
2984
+ },
2985
+ "required": [
2986
+ "wifi"
2987
+ ]
2988
+ }
2989
+ },
2990
+ "additionalProperties": false,
2991
+ "required": [
2992
+ "general",
2993
+ "log",
2994
+ "rtc",
2995
+ "secondaryport",
2996
+ "can_internal",
2997
+ "can_1",
2998
+ "can_2",
2999
+ "lin_1",
3000
+ "lin_2",
3001
+ "connect"
3002
+ ]
3003
+ }