@hello.nrfcloud.com/proto-map 12.0.0 → 12.1.0

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/README.md CHANGED
@@ -38,8 +38,6 @@ in a meaningful way to users without the need for custom implementation.
38
38
  - All objects must define one `Time` property.
39
39
  - Objects must be `Multiple` instance.
40
40
  - Objects must be `Optional`.
41
- - Resources must be `Single` instance. `Multiple` could be useful in some cases,
42
- e.g. IP addresses, but until it is really needed, we do not support it.
43
41
  - Resources should only be marked as mandatory in case they must be published
44
42
  together (e.g. latitude and longitude). This allows devices to only update the
45
43
  values that have changed.
@@ -59,6 +59,7 @@ var createResource = function(Resource) {
59
59
  ts.factory.createPropertyAssignment('Name', ts.factory.createStringLiteral(Resource.Name)),
60
60
  ts.factory.createPropertyAssignment('Mandatory', ts.factory.createIdentifier(Resource.Mandatory === 'Mandatory' ? 'true' : 'false')),
61
61
  ts.factory.createPropertyAssignment('Type', ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ResourceType'), Resource.Type)),
62
+ ts.factory.createPropertyAssignment('Multiple', ts.factory.createIdentifier(Resource.MultipleInstances === 'Multiple' ? 'true' : 'false')),
62
63
  ts.factory.createPropertyAssignment('Description', ts.factory.createStringLiteral(Resource.Description))
63
64
  ];
64
65
  if (Resource.RangeEnumeration.length > 0) {
@@ -5,6 +5,7 @@ import { LwM2MObjectID } from '../lwm2m/LwM2MObjectID.js';
5
5
  import { ResourceType } from '../lwm2m/LWM2MObjectInfo.js';
6
6
  void describe('generateLwM2MDefinitions()', function() {
7
7
  void it('should have generated definitions from the XML files', function() {
8
+ var _definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_;
8
9
  assert.deepEqual(definitions[LwM2MObjectID.Geolocation_14201], {
9
10
  ObjectID: 14201,
10
11
  ObjectVersion: '1.0',
@@ -16,6 +17,7 @@ void describe('generateLwM2MDefinitions()', function() {
16
17
  Name: 'Latitude',
17
18
  Mandatory: true,
18
19
  Type: ResourceType.Float,
20
+ Multiple: false,
19
21
  Description: 'The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].',
20
22
  Units: '°',
21
23
  RangeEnumeration: {
@@ -28,6 +30,7 @@ void describe('generateLwM2MDefinitions()', function() {
28
30
  Name: 'Longitude',
29
31
  Mandatory: true,
30
32
  Type: ResourceType.Float,
33
+ Multiple: false,
31
34
  Description: 'The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].',
32
35
  Units: '°',
33
36
  RangeEnumeration: {
@@ -40,6 +43,7 @@ void describe('generateLwM2MDefinitions()', function() {
40
43
  Name: 'Altitude',
41
44
  Mandatory: false,
42
45
  Type: ResourceType.Float,
46
+ Multiple: false,
43
47
  Description: 'The decimal notation of altitude in meters above sea level.',
44
48
  Units: 'm'
45
49
  },
@@ -48,6 +52,7 @@ void describe('generateLwM2MDefinitions()', function() {
48
52
  Name: 'Radius',
49
53
  Mandatory: false,
50
54
  Type: ResourceType.Float,
55
+ Multiple: false,
51
56
  Description: 'The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.',
52
57
  Units: 'm'
53
58
  },
@@ -56,6 +61,7 @@ void describe('generateLwM2MDefinitions()', function() {
56
61
  Name: 'Speed',
57
62
  Mandatory: false,
58
63
  Type: ResourceType.Float,
64
+ Multiple: false,
59
65
  Description: 'Speed is the time rate of change in position.',
60
66
  Units: 'm/s'
61
67
  },
@@ -64,6 +70,7 @@ void describe('generateLwM2MDefinitions()', function() {
64
70
  Name: 'Heading',
65
71
  Mandatory: false,
66
72
  Type: ResourceType.Float,
73
+ Multiple: false,
67
74
  Description: 'The angle of movement in degrees.',
68
75
  Units: '°',
69
76
  RangeEnumeration: {
@@ -76,6 +83,7 @@ void describe('generateLwM2MDefinitions()', function() {
76
83
  Name: 'Source',
77
84
  Mandatory: true,
78
85
  Type: ResourceType.String,
86
+ Multiple: false,
79
87
  Description: 'The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI.'
80
88
  },
81
89
  99: {
@@ -83,9 +91,12 @@ void describe('generateLwM2MDefinitions()', function() {
83
91
  Name: 'Timestamp',
84
92
  Mandatory: true,
85
93
  Type: ResourceType.Time,
94
+ Multiple: false,
86
95
  Description: 'The timestamp of when the location measurement was performed.'
87
96
  }
88
97
  }
89
98
  });
99
+ // Support for multiple instance resources
100
+ assert.deepEqual((_definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_ = definitions[LwM2MObjectID.NRFCloudServiceInfo_14401].Resources[0]) === null || _definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_ === void 0 ? void 0 : _definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_.Multiple, true);
90
101
  });
91
102
  });
@@ -25,7 +25,13 @@ export var generateType = function(param) {
25
25
  ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier('Resources'), undefined, ts.factory.createTypeLiteralNode(byImportance(Array.isArray(Resources.Item) ? Resources.Item : [
26
26
  Resources.Item
27
27
  ]).map(function(resource) {
28
- var res = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("".concat(resource.$.ID)), resource.Mandatory === 'Mandatory' ? undefined : ts.factory.createToken(ts.SyntaxKind.QuestionToken), typeScriptResourceType(resource.Type));
28
+ var valueType = typeScriptResourceType(resource.Type);
29
+ if (resource.MultipleInstances === 'Multiple') {
30
+ valueType = ts.factory.createTypeReferenceNode('Array', [
31
+ valueType
32
+ ]);
33
+ }
34
+ var res = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("".concat(resource.$.ID)), resource.Mandatory === 'Mandatory' ? undefined : ts.factory.createToken(ts.SyntaxKind.QuestionToken), valueType);
29
35
  var docs = [
30
36
  "".concat(resource.Name).concat(resource.Units.length > 0 ? " (".concat(resource.Units, ")") : ''),
31
37
  "",
@@ -55,7 +55,10 @@ export var LWM2MObjectDefinition = Type.Object({
55
55
  Type.Literal('W'),
56
56
  Type.Literal('RW')
57
57
  ]),
58
- MultipleInstances: Type.Literal('Single'),
58
+ MultipleInstances: Type.Union([
59
+ Type.Literal('Single'),
60
+ Type.Literal('Multiple')
61
+ ]),
59
62
  Mandatory: Type.Union([
60
63
  Type.Literal('Optional'),
61
64
  Type.Literal('Mandatory')
@@ -52,6 +52,11 @@
52
52
  *
53
53
  * Describes application configuration
54
54
  */ LwM2MObjectID[LwM2MObjectID["ApplicationConfiguration_14301"] = 14301] = "ApplicationConfiguration_14301";
55
+ /**
56
+ * nRF Cloud Service Info (14401)
57
+ *
58
+ * Describes the services supported by the device.
59
+ */ LwM2MObjectID[LwM2MObjectID["NRFCloudServiceInfo_14401"] = 14401] = "NRFCloudServiceInfo_14401";
55
60
  })(LwM2MObjectID || (LwM2MObjectID = {}));
56
61
  /**
57
62
  * The LwM2M Object IDs defined in this repo.
@@ -65,5 +70,6 @@
65
70
  14220,
66
71
  14230,
67
72
  14240,
68
- 14301
73
+ 14301,
74
+ 14401
69
75
  ];
@@ -27,6 +27,7 @@ var _obj;
27
27
  Name: "Latitude",
28
28
  Mandatory: true,
29
29
  Type: ResourceType.Float,
30
+ Multiple: false,
30
31
  Description: "The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].",
31
32
  RangeEnumeration: {
32
33
  min: -90,
@@ -46,6 +47,7 @@ var _obj;
46
47
  Name: "Longitude",
47
48
  Mandatory: true,
48
49
  Type: ResourceType.Float,
50
+ Multiple: false,
49
51
  Description: "The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].",
50
52
  RangeEnumeration: {
51
53
  min: -180,
@@ -62,6 +64,7 @@ var _obj;
62
64
  Name: "Altitude",
63
65
  Mandatory: false,
64
66
  Type: ResourceType.Float,
67
+ Multiple: false,
65
68
  Description: "The decimal notation of altitude in meters above sea level.",
66
69
  Units: "m"
67
70
  },
@@ -74,6 +77,7 @@ var _obj;
74
77
  Name: "Radius",
75
78
  Mandatory: false,
76
79
  Type: ResourceType.Float,
80
+ Multiple: false,
77
81
  Description: "The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.",
78
82
  Units: "m"
79
83
  },
@@ -86,6 +90,7 @@ var _obj;
86
90
  Name: "Speed",
87
91
  Mandatory: false,
88
92
  Type: ResourceType.Float,
93
+ Multiple: false,
89
94
  Description: "Speed is the time rate of change in position.",
90
95
  Units: "m/s"
91
96
  },
@@ -101,6 +106,7 @@ var _obj;
101
106
  Name: "Heading",
102
107
  Mandatory: false,
103
108
  Type: ResourceType.Float,
109
+ Multiple: false,
104
110
  Description: "The angle of movement in degrees.",
105
111
  RangeEnumeration: {
106
112
  min: 0,
@@ -117,6 +123,7 @@ var _obj;
117
123
  Name: "Source",
118
124
  Mandatory: true,
119
125
  Type: ResourceType.String,
126
+ Multiple: false,
120
127
  Description: "The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI."
121
128
  },
122
129
  /**
@@ -128,6 +135,7 @@ var _obj;
128
135
  Name: "Timestamp",
129
136
  Mandatory: true,
130
137
  Type: ResourceType.Time,
138
+ Multiple: false,
131
139
  Description: "The timestamp of when the location measurement was performed."
132
140
  }
133
141
  }
@@ -146,6 +154,7 @@ var _obj;
146
154
  Name: "State of charge",
147
155
  Mandatory: false,
148
156
  Type: ResourceType.Integer,
157
+ Multiple: false,
149
158
  Description: "State of charge in percent. Examples: 23, 1, 100.",
150
159
  RangeEnumeration: {
151
160
  min: 0,
@@ -162,6 +171,7 @@ var _obj;
162
171
  Name: "Voltage",
163
172
  Mandatory: false,
164
173
  Type: ResourceType.Float,
174
+ Multiple: false,
165
175
  Description: "Battery voltage in Volt. Examples: 2.754, 3.3.",
166
176
  Units: "V"
167
177
  },
@@ -174,6 +184,7 @@ var _obj;
174
184
  Name: "Charge current",
175
185
  Mandatory: false,
176
186
  Type: ResourceType.Float,
187
+ Multiple: false,
177
188
  Description: "Charge current in mA. Examples: 429, -244.",
178
189
  Units: "mA"
179
190
  },
@@ -186,6 +197,7 @@ var _obj;
186
197
  Name: "Battery temperature",
187
198
  Mandatory: false,
188
199
  Type: ResourceType.Float,
200
+ Multiple: false,
189
201
  Description: "Battery temperature in Celsius. Examples: 21.7, 23.123.",
190
202
  Units: "C"
191
203
  },
@@ -198,6 +210,7 @@ var _obj;
198
210
  Name: "Time to full",
199
211
  Mandatory: false,
200
212
  Type: ResourceType.Integer,
213
+ Multiple: false,
201
214
  Description: "Time to full in seconds. Examples: 4652.",
202
215
  Units: "s"
203
216
  },
@@ -210,6 +223,7 @@ var _obj;
210
223
  Name: "Time to empty",
211
224
  Mandatory: false,
212
225
  Type: ResourceType.Integer,
226
+ Multiple: false,
213
227
  Description: "Time to empty in seconds. Examples: 4652.",
214
228
  Units: "s"
215
229
  },
@@ -222,6 +236,7 @@ var _obj;
222
236
  Name: "Timestamp",
223
237
  Mandatory: true,
224
238
  Type: ResourceType.Time,
239
+ Multiple: false,
225
240
  Description: "The timestamp of when the measurement was performed."
226
241
  }
227
242
  }
@@ -240,6 +255,7 @@ var _obj;
240
255
  Name: "Network mode",
241
256
  Mandatory: false,
242
257
  Type: ResourceType.String,
258
+ Multiple: false,
243
259
  Description: "Examples: LTE-M, NB-IoT."
244
260
  },
245
261
  /**
@@ -251,6 +267,7 @@ var _obj;
251
267
  Name: "Band",
252
268
  Mandatory: false,
253
269
  Type: ResourceType.Integer,
270
+ Multiple: false,
254
271
  Description: "E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143"
255
272
  },
256
273
  /**
@@ -262,6 +279,7 @@ var _obj;
262
279
  Name: "RSRP",
263
280
  Mandatory: false,
264
281
  Type: ResourceType.Integer,
282
+ Multiple: false,
265
283
  Description: "Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.",
266
284
  Units: "dBm"
267
285
  },
@@ -274,6 +292,7 @@ var _obj;
274
292
  Name: "Area",
275
293
  Mandatory: false,
276
294
  Type: ResourceType.Integer,
295
+ Multiple: false,
277
296
  Description: "Area code. Examples: 12"
278
297
  },
279
298
  /**
@@ -285,6 +304,7 @@ var _obj;
285
304
  Name: "Cell",
286
305
  Mandatory: false,
287
306
  Type: ResourceType.Integer,
307
+ Multiple: false,
288
308
  Description: "The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719"
289
309
  },
290
310
  /**
@@ -296,6 +316,7 @@ var _obj;
296
316
  Name: "Mobile country code and mobile network code",
297
317
  Mandatory: false,
298
318
  Type: ResourceType.Integer,
319
+ Multiple: false,
299
320
  Description: "Examples: 24202, 310410"
300
321
  },
301
322
  /**
@@ -307,6 +328,7 @@ var _obj;
307
328
  Name: "IP address",
308
329
  Mandatory: false,
309
330
  Type: ResourceType.String,
331
+ Multiple: false,
310
332
  Description: "Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334"
311
333
  },
312
334
  /**
@@ -318,6 +340,7 @@ var _obj;
318
340
  Name: "Energy Estimate",
319
341
  Mandatory: false,
320
342
  Type: ResourceType.Integer,
343
+ Multiple: false,
321
344
  Description: "The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7"
322
345
  },
323
346
  /**
@@ -329,6 +352,7 @@ var _obj;
329
352
  Name: "Timestamp",
330
353
  Mandatory: true,
331
354
  Type: ResourceType.Time,
355
+ Multiple: false,
332
356
  Description: "The timestamp of when the measurement was performed."
333
357
  }
334
358
  }
@@ -347,6 +371,7 @@ var _obj;
347
371
  Name: "IMEI",
348
372
  Mandatory: true,
349
373
  Type: ResourceType.String,
374
+ Multiple: false,
350
375
  Description: "Board IMEI. Examples: 352656106111232."
351
376
  },
352
377
  /**
@@ -358,6 +383,7 @@ var _obj;
358
383
  Name: "SIM ICCID",
359
384
  Mandatory: false,
360
385
  Type: ResourceType.String,
386
+ Multiple: false,
361
387
  Description: "Examples: 89450421180216216095."
362
388
  },
363
389
  /**
@@ -369,6 +395,7 @@ var _obj;
369
395
  Name: "Modem firmware version",
370
396
  Mandatory: true,
371
397
  Type: ResourceType.String,
398
+ Multiple: false,
372
399
  Description: "Examples: mfw_nrf9160_1.0.0."
373
400
  },
374
401
  /**
@@ -380,6 +407,7 @@ var _obj;
380
407
  Name: "Application firmware version",
381
408
  Mandatory: true,
382
409
  Type: ResourceType.String,
410
+ Multiple: false,
383
411
  Description: "Examples: v1.0.0-rc1-327-g6fc8c16b239f."
384
412
  },
385
413
  /**
@@ -391,6 +419,7 @@ var _obj;
391
419
  Name: "Board version",
392
420
  Mandatory: true,
393
421
  Type: ResourceType.String,
422
+ Multiple: false,
394
423
  Description: "Examples: thingy91_nrf9160."
395
424
  },
396
425
  /**
@@ -402,6 +431,7 @@ var _obj;
402
431
  Name: "Battery model",
403
432
  Mandatory: false,
404
433
  Type: ResourceType.String,
434
+ Multiple: false,
405
435
  Description: "Examples: LP302535, LP502540, LP803035."
406
436
  },
407
437
  /**
@@ -413,6 +443,7 @@ var _obj;
413
443
  Name: "Timestamp",
414
444
  Mandatory: true,
415
445
  Type: ResourceType.Time,
446
+ Multiple: false,
416
447
  Description: "The timestamp of when the measurement was performed."
417
448
  }
418
449
  }
@@ -431,6 +462,7 @@ var _obj;
431
462
  Name: "Temperature",
432
463
  Mandatory: false,
433
464
  Type: ResourceType.Float,
465
+ Multiple: false,
434
466
  Description: "Environmental temperature in Celsius. Examples: 23.5, -10.2.",
435
467
  Units: "\u00B0C"
436
468
  },
@@ -446,6 +478,7 @@ var _obj;
446
478
  Name: "Humidity",
447
479
  Mandatory: false,
448
480
  Type: ResourceType.Float,
481
+ Multiple: false,
449
482
  Description: "Environmental humidity in percent. Examples: 44.2, 72.",
450
483
  RangeEnumeration: {
451
484
  min: 0,
@@ -462,6 +495,7 @@ var _obj;
462
495
  Name: "Atmospheric pressure",
463
496
  Mandatory: false,
464
497
  Type: ResourceType.Float,
498
+ Multiple: false,
465
499
  Description: "Atmospheric pressure in hectopascal. Examples: 1003.6, 977.",
466
500
  Units: "hPa"
467
501
  },
@@ -474,6 +508,7 @@ var _obj;
474
508
  Name: "Air Quality Index",
475
509
  Mandatory: false,
476
510
  Type: ResourceType.Integer,
511
+ Multiple: false,
477
512
  Description: "The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf"
478
513
  },
479
514
  /**
@@ -485,6 +520,7 @@ var _obj;
485
520
  Name: "Timestamp",
486
521
  Mandatory: true,
487
522
  Type: ResourceType.Time,
523
+ Multiple: false,
488
524
  Description: "The timestamp of when the measurement was performed."
489
525
  }
490
526
  }
@@ -503,6 +539,7 @@ var _obj;
503
539
  Name: "Gain",
504
540
  Mandatory: true,
505
541
  Type: ResourceType.Float,
542
+ Multiple: false,
506
543
  Description: "The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.",
507
544
  Units: "mA"
508
545
  },
@@ -515,6 +552,7 @@ var _obj;
515
552
  Name: "Voltage",
516
553
  Mandatory: false,
517
554
  Type: ResourceType.Float,
555
+ Multiple: false,
518
556
  Description: "Battery voltage in Volt. Examples: 2.754, 3.3.",
519
557
  Units: "V"
520
558
  },
@@ -527,6 +565,7 @@ var _obj;
527
565
  Name: "Timestamp",
528
566
  Mandatory: true,
529
567
  Type: ResourceType.Time,
568
+ Multiple: false,
530
569
  Description: "The timestamp of when the measurement was performed."
531
570
  }
532
571
  }
@@ -545,6 +584,7 @@ var _obj;
545
584
  Name: "Timestamp",
546
585
  Mandatory: true,
547
586
  Type: ResourceType.Time,
587
+ Multiple: false,
548
588
  Description: "The timestamp of when the button was pressed."
549
589
  }
550
590
  }
@@ -563,6 +603,7 @@ var _obj;
563
603
  Name: "Sea Water Level",
564
604
  Mandatory: true,
565
605
  Type: ResourceType.Float,
606
+ Multiple: false,
566
607
  Description: "The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.",
567
608
  Units: "cm"
568
609
  },
@@ -575,6 +616,7 @@ var _obj;
575
616
  Name: "Station code",
576
617
  Mandatory: true,
577
618
  Type: ResourceType.String,
619
+ Multiple: false,
578
620
  Description: "The code of the observation station. Examples: TRD, SVG."
579
621
  },
580
622
  /**
@@ -586,6 +628,7 @@ var _obj;
586
628
  Name: "Timestamp",
587
629
  Mandatory: true,
588
630
  Type: ResourceType.Time,
631
+ Multiple: false,
589
632
  Description: "The timestamp of when the observation was made."
590
633
  }
591
634
  }
@@ -604,6 +647,7 @@ var _obj;
604
647
  Name: "Red",
605
648
  Mandatory: true,
606
649
  Type: ResourceType.Integer,
650
+ Multiple: false,
607
651
  Description: "The red brightness level of the LED.",
608
652
  RangeEnumeration: {
609
653
  min: 0,
@@ -622,6 +666,7 @@ var _obj;
622
666
  Name: "Green",
623
667
  Mandatory: true,
624
668
  Type: ResourceType.Integer,
669
+ Multiple: false,
625
670
  Description: "The green brightness level of the LED.",
626
671
  RangeEnumeration: {
627
672
  min: 0,
@@ -640,6 +685,7 @@ var _obj;
640
685
  Name: "Blue",
641
686
  Mandatory: true,
642
687
  Type: ResourceType.Integer,
688
+ Multiple: false,
643
689
  Description: "The blue brightness level of the LED.",
644
690
  RangeEnumeration: {
645
691
  min: 0,
@@ -655,6 +701,7 @@ var _obj;
655
701
  Name: "Timestamp",
656
702
  Mandatory: true,
657
703
  Type: ResourceType.Time,
704
+ Multiple: false,
658
705
  Description: "The timestamp of when the LED was changed."
659
706
  }
660
707
  }
@@ -673,6 +720,7 @@ var _obj;
673
720
  Name: "Update interval",
674
721
  Mandatory: true,
675
722
  Type: ResourceType.Integer,
723
+ Multiple: false,
676
724
  Description: "The update interval in seconds. Examples: 10, 3600.",
677
725
  RangeEnumeration: {
678
726
  min: 0,
@@ -688,6 +736,7 @@ var _obj;
688
736
  Name: "GNSS enabled",
689
737
  Mandatory: true,
690
738
  Type: ResourceType.Boolean,
739
+ Multiple: false,
691
740
  Description: "Whether to enabled the device's GNSS receiver."
692
741
  },
693
742
  /**
@@ -699,7 +748,39 @@ var _obj;
699
748
  Name: "Timestamp",
700
749
  Mandatory: true,
701
750
  Type: ResourceType.Time,
751
+ Multiple: false,
702
752
  Description: "The timestamp of when the configuration was updated."
703
753
  }
704
754
  }
755
+ }), /**
756
+ * nRF Cloud Service Info (14401)
757
+ *
758
+ * Describes the services supported by the device.
759
+ */ _define_property(_obj, LwM2MObjectID.NRFCloudServiceInfo_14401, {
760
+ ObjectID: LwM2MObjectID.NRFCloudServiceInfo_14401,
761
+ ObjectVersion: "1.0",
762
+ Name: "nRF Cloud Service Info",
763
+ Description: "Describes the services supported by the device.",
764
+ Resources: {
765
+ 0: {
766
+ ResourceID: 0,
767
+ Name: "FOTA",
768
+ Mandatory: false,
769
+ Type: ResourceType.String,
770
+ Multiple: true,
771
+ Description: "The types of firmwares the device supports. Examples: \"APP\", \"MODEM\"."
772
+ },
773
+ /**
774
+ * Timestamp (Time)
775
+ *
776
+ * The timestamp of when the service info was updated.
777
+ */ 99: {
778
+ ResourceID: 99,
779
+ Name: "Timestamp",
780
+ Mandatory: true,
781
+ Type: ResourceType.Time,
782
+ Multiple: false,
783
+ Description: "The timestamp of when the service info was updated."
784
+ }
785
+ }
705
786
  }), _obj);
@@ -0,0 +1,5 @@
1
+ /**
2
+ * nRF Cloud Service Info (14401)
3
+ *
4
+ * Describes the services supported by the device.
5
+ */ export { };
@@ -0,0 +1,12 @@
1
+ import { TimeResource, StringResource, OptionalResource, validateInstance } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate nRF Cloud Service Info (14401)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14401.xml.
7
+ */ export var validate14401 = function(o) {
8
+ return validateInstance(LwM2MObjectID.NRFCloudServiceInfo_14401, "1.0", {
9
+ 99: TimeResource,
10
+ 0: OptionalResource(StringResource)
11
+ })(o);
12
+ };
@@ -8,3 +8,4 @@ export { validate14220 } from "./object/validate14220.js";
8
8
  export { validate14230 } from "./object/validate14230.js";
9
9
  export { validate14240 } from "./object/validate14240.js";
10
10
  export { validate14301 } from "./object/validate14301.js";
11
+ export { validate14401 } from "./object/validate14401.js";
@@ -41,5 +41,9 @@ import { LwM2MObjectID } from "./LwM2MObjectID.js";
41
41
  [
42
42
  LwM2MObjectID.ApplicationConfiguration_14301,
43
43
  99
44
+ ],
45
+ [
46
+ LwM2MObjectID.NRFCloudServiceInfo_14401,
47
+ 99
44
48
  ]
45
49
  ]);
@@ -9,6 +9,7 @@ import { validate14220 } from "./object/validate14220.js";
9
9
  import { validate14230 } from "./object/validate14230.js";
10
10
  import { validate14240 } from "./object/validate14240.js";
11
11
  import { validate14301 } from "./object/validate14301.js";
12
+ import { validate14401 } from "./object/validate14401.js";
12
13
  /**
13
14
  * Contains the validators for all registered LwM2M objects.
14
15
  */ export var validators = new Map();
@@ -22,3 +23,4 @@ validators.set(LwM2MObjectID.ButtonPress_14220, validate14220);
22
23
  validators.set(LwM2MObjectID.SeaWaterLevel_14230, validate14230);
23
24
  validators.set(LwM2MObjectID.RGBLED_14240, validate14240);
24
25
  validators.set(LwM2MObjectID.ApplicationConfiguration_14301, validate14301);
26
+ validators.set(LwM2MObjectID.NRFCloudServiceInfo_14401, validate14401);
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://openmobilealliance.org/tech/profiles/LWM2M-v1_1.xsd">
3
+ <Object ObjectType="MODefinition">
4
+ <Name>nRF Cloud Service Info</Name>
5
+ <Description1><![CDATA[Describes the services supported by the device.]]></Description1>
6
+ <ObjectID>14401</ObjectID>
7
+ <ObjectURN>urn:oma:lwm2m:x:14401</ObjectURN>
8
+ <MultipleInstances>Multiple</MultipleInstances>
9
+ <Mandatory>Optional</Mandatory>
10
+ <Resources>
11
+ <Item ID="0">
12
+ <Name>FOTA</Name>
13
+ <Operations>RW</Operations>
14
+ <MultipleInstances>Multiple</MultipleInstances>
15
+ <Mandatory>Optional</Mandatory>
16
+ <Type>String</Type>
17
+ <RangeEnumeration/>
18
+ <Units/>
19
+ <Description><![CDATA[The types of firmwares the device supports. Examples: "APP", "MODEM".]]></Description>
20
+ </Item>
21
+ <Item ID="99">
22
+ <Name>Timestamp</Name>
23
+ <Operations>R</Operations>
24
+ <MultipleInstances>Single</MultipleInstances>
25
+ <Mandatory>Mandatory</Mandatory>
26
+ <Type>Time</Type>
27
+ <RangeEnumeration/>
28
+ <Units/>
29
+ <Description><![CDATA[The timestamp of when the service info was updated.]]></Description>
30
+ </Item>
31
+ </Resources>
32
+ <Description2/>
33
+ </Object>
34
+ </LWM2M>
@@ -49,7 +49,10 @@ export const LWM2MObjectDefinition = Type.Object(
49
49
  Type.Literal('W'),
50
50
  Type.Literal('RW'),
51
51
  ]),
52
- MultipleInstances: Type.Literal('Single'),
52
+ MultipleInstances: Type.Union([
53
+ Type.Literal('Single'),
54
+ Type.Literal('Multiple'),
55
+ ]),
53
56
  Mandatory: Type.Union([
54
57
  Type.Literal('Optional'),
55
58
  Type.Literal('Mandatory'),
@@ -19,6 +19,7 @@ export type LwM2MResourceInfo = {
19
19
  Description: string // e.g. 'The decimal notation of latitude, e.g. -43.5723 [World Geodetic System 1984].'
20
20
  RangeEnumeration?: Range
21
21
  Units?: string // e.g. 'lat'
22
+ Multiple: boolean
22
23
  }
23
24
 
24
25
  export type Range = {
@@ -61,7 +61,13 @@ export enum LwM2MObjectID {
61
61
  *
62
62
  * Describes application configuration
63
63
  */
64
- ApplicationConfiguration_14301 = 14301
64
+ ApplicationConfiguration_14301 = 14301,
65
+ /**
66
+ * nRF Cloud Service Info (14401)
67
+ *
68
+ * Describes the services supported by the device.
69
+ */
70
+ NRFCloudServiceInfo_14401 = 14401
65
71
  }
66
72
  /**
67
73
  * The LwM2M Object IDs defined in this repo.
@@ -86,4 +92,6 @@ export const LwM2MObjectIDs = [
86
92
  // RGB LED (14240)
87
93
  LwM2MObjectID.RGBLED_14240,
88
94
  // Application Configuration (14301)
89
- LwM2MObjectID.ApplicationConfiguration_14301];
95
+ LwM2MObjectID.ApplicationConfiguration_14301,
96
+ // nRF Cloud Service Info (14401)
97
+ LwM2MObjectID.NRFCloudServiceInfo_14401];
@@ -1,6 +1,13 @@
1
1
  import type { LwM2MObjectID } from './LwM2MObjectID.js'
2
2
 
3
- export type LwM2MResourceValue = string | number | boolean
3
+ export type LwM2MResourceValue =
4
+ | string
5
+ | number
6
+ | boolean
7
+ | Array<string>
8
+ | Array<number>
9
+ | Array<boolean>
10
+
4
11
  type GenericLwM2MObjectInstance = {
5
12
  ObjectID: LwM2MObjectID
6
13
  /**
@@ -4,7 +4,7 @@ export type Resource = {
4
4
  }
5
5
  Name: string // e.g. 'Latitude'
6
6
  Operations: 'R'
7
- MultipleInstances: 'Single'
7
+ MultipleInstances: 'Single' | 'Multiple'
8
8
  Mandatory: 'Optional' | 'Mandatory'
9
9
  Type: 'String' | 'Integer' | 'Float' | 'Boolean' | 'Opaque' | 'Time'
10
10
  RangeEnumeration: string // e.g. -10..10
@@ -16,7 +16,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
16
16
  * Minimum: -90
17
17
  * Maximum: 90
18
18
  */
19
- 0: { ResourceID: 0, Name: "Latitude", Mandatory: true, Type: ResourceType.Float, Description: "The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].", RangeEnumeration: { min: -90, max: 90 }, Units: "\u00B0" }, /**
19
+ 0: { ResourceID: 0, Name: "Latitude", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].", RangeEnumeration: { min: -90, max: 90 }, Units: "\u00B0" }, /**
20
20
  * Longitude (Float)
21
21
  *
22
22
  * The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].
@@ -24,22 +24,22 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
24
24
  * Minimum: -180
25
25
  * Maximum: 180
26
26
  */
27
- 1: { ResourceID: 1, Name: "Longitude", Mandatory: true, Type: ResourceType.Float, Description: "The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].", RangeEnumeration: { min: -180, max: 180 }, Units: "\u00B0" }, /**
27
+ 1: { ResourceID: 1, Name: "Longitude", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].", RangeEnumeration: { min: -180, max: 180 }, Units: "\u00B0" }, /**
28
28
  * Altitude (Float)
29
29
  *
30
30
  * The decimal notation of altitude in meters above sea level.
31
31
  */
32
- 2: { ResourceID: 2, Name: "Altitude", Mandatory: false, Type: ResourceType.Float, Description: "The decimal notation of altitude in meters above sea level.", Units: "m" }, /**
32
+ 2: { ResourceID: 2, Name: "Altitude", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "The decimal notation of altitude in meters above sea level.", Units: "m" }, /**
33
33
  * Radius (Float)
34
34
  *
35
35
  * The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.
36
36
  */
37
- 3: { ResourceID: 3, Name: "Radius", Mandatory: false, Type: ResourceType.Float, Description: "The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.", Units: "m" }, /**
37
+ 3: { ResourceID: 3, Name: "Radius", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.", Units: "m" }, /**
38
38
  * Speed (Float)
39
39
  *
40
40
  * Speed is the time rate of change in position.
41
41
  */
42
- 4: { ResourceID: 4, Name: "Speed", Mandatory: false, Type: ResourceType.Float, Description: "Speed is the time rate of change in position.", Units: "m/s" }, /**
42
+ 4: { ResourceID: 4, Name: "Speed", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Speed is the time rate of change in position.", Units: "m/s" }, /**
43
43
  * Heading (Float)
44
44
  *
45
45
  * The angle of movement in degrees.
@@ -47,17 +47,17 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
47
47
  * Minimum: 0
48
48
  * Maximum: 360
49
49
  */
50
- 5: { ResourceID: 5, Name: "Heading", Mandatory: false, Type: ResourceType.Float, Description: "The angle of movement in degrees.", RangeEnumeration: { min: 0, max: 360 }, Units: "\u00B0" }, /**
50
+ 5: { ResourceID: 5, Name: "Heading", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "The angle of movement in degrees.", RangeEnumeration: { min: 0, max: 360 }, Units: "\u00B0" }, /**
51
51
  * Source (String)
52
52
  *
53
53
  * The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI.
54
54
  */
55
- 6: { ResourceID: 6, Name: "Source", Mandatory: true, Type: ResourceType.String, Description: "The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI." }, /**
55
+ 6: { ResourceID: 6, Name: "Source", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI." }, /**
56
56
  * Timestamp (Time)
57
57
  *
58
58
  * The timestamp of when the location measurement was performed.
59
59
  */
60
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the location measurement was performed." } } }, /**
60
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the location measurement was performed." } } }, /**
61
61
  * Battery and Power (14202)
62
62
  *
63
63
  * Information about the battery and power status of the device.
@@ -70,37 +70,37 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
70
70
  * Minimum: 0
71
71
  * Maximum: 100
72
72
  */
73
- 0: { ResourceID: 0, Name: "State of charge", Mandatory: false, Type: ResourceType.Integer, Description: "State of charge in percent. Examples: 23, 1, 100.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
73
+ 0: { ResourceID: 0, Name: "State of charge", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "State of charge in percent. Examples: 23, 1, 100.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
74
74
  * Voltage (Float)
75
75
  *
76
76
  * Battery voltage in Volt. Examples: 2.754, 3.3.
77
77
  */
78
- 1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
78
+ 1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
79
79
  * Charge current (Float)
80
80
  *
81
81
  * Charge current in mA. Examples: 429, -244.
82
82
  */
83
- 2: { ResourceID: 2, Name: "Charge current", Mandatory: false, Type: ResourceType.Float, Description: "Charge current in mA. Examples: 429, -244.", Units: "mA" }, /**
83
+ 2: { ResourceID: 2, Name: "Charge current", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Charge current in mA. Examples: 429, -244.", Units: "mA" }, /**
84
84
  * Battery temperature (Float)
85
85
  *
86
86
  * Battery temperature in Celsius. Examples: 21.7, 23.123.
87
87
  */
88
- 3: { ResourceID: 3, Name: "Battery temperature", Mandatory: false, Type: ResourceType.Float, Description: "Battery temperature in Celsius. Examples: 21.7, 23.123.", Units: "C" }, /**
88
+ 3: { ResourceID: 3, Name: "Battery temperature", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Battery temperature in Celsius. Examples: 21.7, 23.123.", Units: "C" }, /**
89
89
  * Time to full (Integer)
90
90
  *
91
91
  * Time to full in seconds. Examples: 4652.
92
92
  */
93
- 4: { ResourceID: 4, Name: "Time to full", Mandatory: false, Type: ResourceType.Integer, Description: "Time to full in seconds. Examples: 4652.", Units: "s" }, /**
93
+ 4: { ResourceID: 4, Name: "Time to full", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Time to full in seconds. Examples: 4652.", Units: "s" }, /**
94
94
  * Time to empty (Integer)
95
95
  *
96
96
  * Time to empty in seconds. Examples: 4652.
97
97
  */
98
- 5: { ResourceID: 5, Name: "Time to empty", Mandatory: false, Type: ResourceType.Integer, Description: "Time to empty in seconds. Examples: 4652.", Units: "s" }, /**
98
+ 5: { ResourceID: 5, Name: "Time to empty", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Time to empty in seconds. Examples: 4652.", Units: "s" }, /**
99
99
  * Timestamp (Time)
100
100
  *
101
101
  * The timestamp of when the measurement was performed.
102
102
  */
103
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
103
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
104
104
  * Connection information (14203)
105
105
  *
106
106
  * Details about the device's connection.
@@ -110,47 +110,47 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
110
110
  *
111
111
  * Examples: LTE-M, NB-IoT.
112
112
  */
113
- 0: { ResourceID: 0, Name: "Network mode", Mandatory: false, Type: ResourceType.String, Description: "Examples: LTE-M, NB-IoT." }, /**
113
+ 0: { ResourceID: 0, Name: "Network mode", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: LTE-M, NB-IoT." }, /**
114
114
  * Band (Integer)
115
115
  *
116
116
  * E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143
117
117
  */
118
- 1: { ResourceID: 1, Name: "Band", Mandatory: false, Type: ResourceType.Integer, Description: "E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143" }, /**
118
+ 1: { ResourceID: 1, Name: "Band", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143" }, /**
119
119
  * RSRP (Integer)
120
120
  *
121
121
  * Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.
122
122
  */
123
- 2: { ResourceID: 2, Name: "RSRP", Mandatory: false, Type: ResourceType.Integer, Description: "Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.", Units: "dBm" }, /**
123
+ 2: { ResourceID: 2, Name: "RSRP", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.", Units: "dBm" }, /**
124
124
  * Area (Integer)
125
125
  *
126
126
  * Area code. Examples: 12
127
127
  */
128
- 3: { ResourceID: 3, Name: "Area", Mandatory: false, Type: ResourceType.Integer, Description: "Area code. Examples: 12" }, /**
128
+ 3: { ResourceID: 3, Name: "Area", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Area code. Examples: 12" }, /**
129
129
  * Cell (Integer)
130
130
  *
131
131
  * The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719
132
132
  */
133
- 4: { ResourceID: 4, Name: "Cell", Mandatory: false, Type: ResourceType.Integer, Description: "The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719" }, /**
133
+ 4: { ResourceID: 4, Name: "Cell", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719" }, /**
134
134
  * Mobile country code and mobile network code (Integer)
135
135
  *
136
136
  * Examples: 24202, 310410
137
137
  */
138
- 5: { ResourceID: 5, Name: "Mobile country code and mobile network code", Mandatory: false, Type: ResourceType.Integer, Description: "Examples: 24202, 310410" }, /**
138
+ 5: { ResourceID: 5, Name: "Mobile country code and mobile network code", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Examples: 24202, 310410" }, /**
139
139
  * IP address (String)
140
140
  *
141
141
  * Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334
142
142
  */
143
- 6: { ResourceID: 6, Name: "IP address", Mandatory: false, Type: ResourceType.String, Description: "Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334" }, /**
143
+ 6: { ResourceID: 6, Name: "IP address", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334" }, /**
144
144
  * Energy Estimate (Integer)
145
145
  *
146
146
  * The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7
147
147
  */
148
- 11: { ResourceID: 11, Name: "Energy Estimate", Mandatory: false, Type: ResourceType.Integer, Description: "The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7" }, /**
148
+ 11: { ResourceID: 11, Name: "Energy Estimate", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7" }, /**
149
149
  * Timestamp (Time)
150
150
  *
151
151
  * The timestamp of when the measurement was performed.
152
152
  */
153
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
153
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
154
154
  * Device information (14204)
155
155
  *
156
156
  * Details about the device's connection.
@@ -160,37 +160,37 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
160
160
  *
161
161
  * Board IMEI. Examples: 352656106111232.
162
162
  */
163
- 0: { ResourceID: 0, Name: "IMEI", Mandatory: true, Type: ResourceType.String, Description: "Board IMEI. Examples: 352656106111232." }, /**
163
+ 0: { ResourceID: 0, Name: "IMEI", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Board IMEI. Examples: 352656106111232." }, /**
164
164
  * SIM ICCID (String)
165
165
  *
166
166
  * Examples: 89450421180216216095.
167
167
  */
168
- 1: { ResourceID: 1, Name: "SIM ICCID", Mandatory: false, Type: ResourceType.String, Description: "Examples: 89450421180216216095." }, /**
168
+ 1: { ResourceID: 1, Name: "SIM ICCID", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: 89450421180216216095." }, /**
169
169
  * Modem firmware version (String)
170
170
  *
171
171
  * Examples: mfw_nrf9160_1.0.0.
172
172
  */
173
- 2: { ResourceID: 2, Name: "Modem firmware version", Mandatory: true, Type: ResourceType.String, Description: "Examples: mfw_nrf9160_1.0.0." }, /**
173
+ 2: { ResourceID: 2, Name: "Modem firmware version", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Examples: mfw_nrf9160_1.0.0." }, /**
174
174
  * Application firmware version (String)
175
175
  *
176
176
  * Examples: v1.0.0-rc1-327-g6fc8c16b239f.
177
177
  */
178
- 3: { ResourceID: 3, Name: "Application firmware version", Mandatory: true, Type: ResourceType.String, Description: "Examples: v1.0.0-rc1-327-g6fc8c16b239f." }, /**
178
+ 3: { ResourceID: 3, Name: "Application firmware version", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Examples: v1.0.0-rc1-327-g6fc8c16b239f." }, /**
179
179
  * Board version (String)
180
180
  *
181
181
  * Examples: thingy91_nrf9160.
182
182
  */
183
- 4: { ResourceID: 4, Name: "Board version", Mandatory: true, Type: ResourceType.String, Description: "Examples: thingy91_nrf9160." }, /**
183
+ 4: { ResourceID: 4, Name: "Board version", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Examples: thingy91_nrf9160." }, /**
184
184
  * Battery model (String)
185
185
  *
186
186
  * Examples: LP302535, LP502540, LP803035.
187
187
  */
188
- 5: { ResourceID: 5, Name: "Battery model", Mandatory: false, Type: ResourceType.String, Description: "Examples: LP302535, LP502540, LP803035." }, /**
188
+ 5: { ResourceID: 5, Name: "Battery model", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: LP302535, LP502540, LP803035." }, /**
189
189
  * Timestamp (Time)
190
190
  *
191
191
  * The timestamp of when the measurement was performed.
192
192
  */
193
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
193
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
194
194
  * Environment (14205)
195
195
  *
196
196
  * Environment information.
@@ -200,7 +200,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
200
200
  *
201
201
  * Environmental temperature in Celsius. Examples: 23.5, -10.2.
202
202
  */
203
- 0: { ResourceID: 0, Name: "Temperature", Mandatory: false, Type: ResourceType.Float, Description: "Environmental temperature in Celsius. Examples: 23.5, -10.2.", Units: "\u00B0C" }, /**
203
+ 0: { ResourceID: 0, Name: "Temperature", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Environmental temperature in Celsius. Examples: 23.5, -10.2.", Units: "\u00B0C" }, /**
204
204
  * Humidity (Float)
205
205
  *
206
206
  * Environmental humidity in percent. Examples: 44.2, 72.
@@ -208,22 +208,22 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
208
208
  * Minimum: 0
209
209
  * Maximum: 100
210
210
  */
211
- 1: { ResourceID: 1, Name: "Humidity", Mandatory: false, Type: ResourceType.Float, Description: "Environmental humidity in percent. Examples: 44.2, 72.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
211
+ 1: { ResourceID: 1, Name: "Humidity", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Environmental humidity in percent. Examples: 44.2, 72.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
212
212
  * Atmospheric pressure (Float)
213
213
  *
214
214
  * Atmospheric pressure in hectopascal. Examples: 1003.6, 977.
215
215
  */
216
- 2: { ResourceID: 2, Name: "Atmospheric pressure", Mandatory: false, Type: ResourceType.Float, Description: "Atmospheric pressure in hectopascal. Examples: 1003.6, 977.", Units: "hPa" }, /**
216
+ 2: { ResourceID: 2, Name: "Atmospheric pressure", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Atmospheric pressure in hectopascal. Examples: 1003.6, 977.", Units: "hPa" }, /**
217
217
  * Air Quality Index (Integer)
218
218
  *
219
219
  * The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf
220
220
  */
221
- 10: { ResourceID: 10, Name: "Air Quality Index", Mandatory: false, Type: ResourceType.Integer, Description: "The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf" }, /**
221
+ 10: { ResourceID: 10, Name: "Air Quality Index", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf" }, /**
222
222
  * Timestamp (Time)
223
223
  *
224
224
  * The timestamp of when the measurement was performed.
225
225
  */
226
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
226
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
227
227
  * Solar charge (14210)
228
228
  *
229
229
  * Measurements from the solar shield.
@@ -233,17 +233,17 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
233
233
  *
234
234
  * The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.
235
235
  */
236
- 0: { ResourceID: 0, Name: "Gain", Mandatory: true, Type: ResourceType.Float, Description: "The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.", Units: "mA" }, /**
236
+ 0: { ResourceID: 0, Name: "Gain", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.", Units: "mA" }, /**
237
237
  * Voltage (Float)
238
238
  *
239
239
  * Battery voltage in Volt. Examples: 2.754, 3.3.
240
240
  */
241
- 1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
241
+ 1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
242
242
  * Timestamp (Time)
243
243
  *
244
244
  * The timestamp of when the measurement was performed.
245
245
  */
246
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
246
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
247
247
  * Button press (14220)
248
248
  *
249
249
  * Describes a button press event. The ObjectInstanceID is used to describe which button has been pressed.
@@ -253,7 +253,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
253
253
  *
254
254
  * The timestamp of when the button was pressed.
255
255
  */
256
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the button was pressed." } } }, /**
256
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the button was pressed." } } }, /**
257
257
  * Sea Water Level (14230)
258
258
  *
259
259
  * Describes observed sea water level.
@@ -263,17 +263,17 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
263
263
  *
264
264
  * The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.
265
265
  */
266
- 0: { ResourceID: 0, Name: "Sea Water Level", Mandatory: true, Type: ResourceType.Float, Description: "The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.", Units: "cm" }, /**
266
+ 0: { ResourceID: 0, Name: "Sea Water Level", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.", Units: "cm" }, /**
267
267
  * Station code (String)
268
268
  *
269
269
  * The code of the observation station. Examples: TRD, SVG.
270
270
  */
271
- 1: { ResourceID: 1, Name: "Station code", Mandatory: true, Type: ResourceType.String, Description: "The code of the observation station. Examples: TRD, SVG." }, /**
271
+ 1: { ResourceID: 1, Name: "Station code", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "The code of the observation station. Examples: TRD, SVG." }, /**
272
272
  * Timestamp (Time)
273
273
  *
274
274
  * The timestamp of when the observation was made.
275
275
  */
276
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the observation was made." } } }, /**
276
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the observation was made." } } }, /**
277
277
  * RGB LED (14240)
278
278
  *
279
279
  * Describes an RGB LED. Use different instances to address different LEDs.
@@ -286,7 +286,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
286
286
  * Minimum: 0
287
287
  * Maximum: 255
288
288
  */
289
- 0: { ResourceID: 0, Name: "Red", Mandatory: true, Type: ResourceType.Integer, Description: "The red brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
289
+ 0: { ResourceID: 0, Name: "Red", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The red brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
290
290
  * Green (Integer)
291
291
  *
292
292
  * The green brightness level of the LED.
@@ -294,7 +294,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
294
294
  * Minimum: 0
295
295
  * Maximum: 255
296
296
  */
297
- 1: { ResourceID: 1, Name: "Green", Mandatory: true, Type: ResourceType.Integer, Description: "The green brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
297
+ 1: { ResourceID: 1, Name: "Green", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The green brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
298
298
  * Blue (Integer)
299
299
  *
300
300
  * The blue brightness level of the LED.
@@ -302,12 +302,12 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
302
302
  * Minimum: 0
303
303
  * Maximum: 255
304
304
  */
305
- 2: { ResourceID: 2, Name: "Blue", Mandatory: true, Type: ResourceType.Integer, Description: "The blue brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
305
+ 2: { ResourceID: 2, Name: "Blue", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The blue brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
306
306
  * Timestamp (Time)
307
307
  *
308
308
  * The timestamp of when the LED was changed.
309
309
  */
310
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the LED was changed." } } }, /**
310
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the LED was changed." } } }, /**
311
311
  * Application Configuration (14301)
312
312
  *
313
313
  * Describes application configuration
@@ -320,14 +320,29 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
320
320
  * Minimum: 0
321
321
  * Maximum: 31622400
322
322
  */
323
- 0: { ResourceID: 0, Name: "Update interval", Mandatory: true, Type: ResourceType.Integer, Description: "The update interval in seconds. Examples: 10, 3600.", RangeEnumeration: { min: 0, max: 31622400 } }, /**
323
+ 0: { ResourceID: 0, Name: "Update interval", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The update interval in seconds. Examples: 10, 3600.", RangeEnumeration: { min: 0, max: 31622400 } }, /**
324
324
  * GNSS enabled (Boolean)
325
325
  *
326
326
  * Whether to enabled the device's GNSS receiver.
327
327
  */
328
- 1: { ResourceID: 1, Name: "GNSS enabled", Mandatory: true, Type: ResourceType.Boolean, Description: "Whether to enabled the device's GNSS receiver." }, /**
328
+ 1: { ResourceID: 1, Name: "GNSS enabled", Mandatory: true, Type: ResourceType.Boolean, Multiple: false, Description: "Whether to enabled the device's GNSS receiver." }, /**
329
329
  * Timestamp (Time)
330
330
  *
331
331
  * The timestamp of when the configuration was updated.
332
332
  */
333
- 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the configuration was updated." } } } };
333
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the configuration was updated." } } }, /**
334
+ * nRF Cloud Service Info (14401)
335
+ *
336
+ * Describes the services supported by the device.
337
+ */
338
+ [LwM2MObjectID.NRFCloudServiceInfo_14401]: { ObjectID: LwM2MObjectID.NRFCloudServiceInfo_14401, ObjectVersion: "1.0", Name: "nRF Cloud Service Info", Description: "Describes the services supported by the device.", Resources: { /**
339
+ * FOTA (String)
340
+ *
341
+ * The types of firmwares the device supports. Examples: "APP", "MODEM".
342
+ */
343
+ 0: { ResourceID: 0, Name: "FOTA", Mandatory: false, Type: ResourceType.String, Multiple: true, Description: "The types of firmwares the device supports. Examples: \"APP\", \"MODEM\"." }, /**
344
+ * Timestamp (Time)
345
+ *
346
+ * The timestamp of when the service info was updated.
347
+ */
348
+ 99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the service info was updated." } } } };
@@ -0,0 +1,25 @@
1
+ import type { LwM2MObject } from "../LwM2MObject.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * nRF Cloud Service Info (14401)
5
+ *
6
+ * Describes the services supported by the device.
7
+ */
8
+ export type NRFCloudServiceInfo_14401 = LwM2MObject<{
9
+ ObjectID: LwM2MObjectID.NRFCloudServiceInfo_14401;
10
+ ObjectVersion: "1.0";
11
+ Resources: {
12
+ /**
13
+ * Timestamp
14
+ *
15
+ * The timestamp of when the service info was updated.
16
+ */
17
+ 99: number;
18
+ /**
19
+ * FOTA
20
+ *
21
+ * The types of firmwares the device supports. Examples: "APP", "MODEM".
22
+ */
23
+ 0?: Array<string>;
24
+ };
25
+ }>;
@@ -0,0 +1,14 @@
1
+ import type { LwM2MObjectInstance } from "../LwM2MObjectInstance.js";
2
+ import { TimeResource, StringResource, OptionalResource, validateInstance } from "../validation.js";
3
+ import type { NRFCloudServiceInfo_14401 } from "../objects.js";
4
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
5
+ /**
6
+ * Validate nRF Cloud Service Info (14401)
7
+ *
8
+ * Ensures the given object is an LwM2M object according to the schema 14401.xml.
9
+ */
10
+ export const validate14401 = (o: unknown): {
11
+ error: Error;
12
+ } | {
13
+ object: LwM2MObjectInstance<NRFCloudServiceInfo_14401>;
14
+ } => validateInstance<NRFCloudServiceInfo_14401>(LwM2MObjectID.NRFCloudServiceInfo_14401, "1.0", { 99: TimeResource, 0: OptionalResource(StringResource) })(o);
package/lwm2m/objects.ts CHANGED
@@ -17,4 +17,6 @@ export { validate14230 } from "./object/validate14230.js";
17
17
  export type { RGBLED_14240 } from "./object/14240.js";
18
18
  export { validate14240 } from "./object/validate14240.js";
19
19
  export type { ApplicationConfiguration_14301 } from "./object/14301.js";
20
- export { validate14301 } from "./object/validate14301.js";
20
+ export { validate14301 } from "./object/validate14301.js";
21
+ export type { NRFCloudServiceInfo_14401 } from "./object/14401.js";
22
+ export { validate14401 } from "./object/validate14401.js";
@@ -2,4 +2,4 @@ import { LwM2MObjectID } from "./LwM2MObjectID.js";
2
2
  /**
3
3
  * Contains the ID of the resource that defines the timestamp for each LwM2M object definition
4
4
  */
5
- export const timestampResources: Readonly<Map<LwM2MObjectID, number>> = new Map<LwM2MObjectID, number>([[LwM2MObjectID.Geolocation_14201, 99], [LwM2MObjectID.BatteryAndPower_14202, 99], [LwM2MObjectID.ConnectionInformation_14203, 99], [LwM2MObjectID.DeviceInformation_14204, 99], [LwM2MObjectID.Environment_14205, 99], [LwM2MObjectID.SolarCharge_14210, 99], [LwM2MObjectID.ButtonPress_14220, 99], [LwM2MObjectID.SeaWaterLevel_14230, 99], [LwM2MObjectID.RGBLED_14240, 99], [LwM2MObjectID.ApplicationConfiguration_14301, 99]]);
5
+ export const timestampResources: Readonly<Map<LwM2MObjectID, number>> = new Map<LwM2MObjectID, number>([[LwM2MObjectID.Geolocation_14201, 99], [LwM2MObjectID.BatteryAndPower_14202, 99], [LwM2MObjectID.ConnectionInformation_14203, 99], [LwM2MObjectID.DeviceInformation_14204, 99], [LwM2MObjectID.Environment_14205, 99], [LwM2MObjectID.SolarCharge_14210, 99], [LwM2MObjectID.ButtonPress_14220, 99], [LwM2MObjectID.SeaWaterLevel_14230, 99], [LwM2MObjectID.RGBLED_14240, 99], [LwM2MObjectID.ApplicationConfiguration_14301, 99], [LwM2MObjectID.NRFCloudServiceInfo_14401, 99]]);
@@ -10,6 +10,7 @@ import { validate14220 } from "./object/validate14220.js";
10
10
  import { validate14230 } from "./object/validate14230.js";
11
11
  import { validate14240 } from "./object/validate14240.js";
12
12
  import { validate14301 } from "./object/validate14301.js";
13
+ import { validate14401 } from "./object/validate14401.js";
13
14
  /**
14
15
  * Contains the validators for all registered LwM2M objects.
15
16
  */
@@ -27,4 +28,5 @@ validators.set(LwM2MObjectID.SolarCharge_14210, validate14210)
27
28
  validators.set(LwM2MObjectID.ButtonPress_14220, validate14220)
28
29
  validators.set(LwM2MObjectID.SeaWaterLevel_14230, validate14230)
29
30
  validators.set(LwM2MObjectID.RGBLED_14240, validate14240)
30
- validators.set(LwM2MObjectID.ApplicationConfiguration_14301, validate14301)
31
+ validators.set(LwM2MObjectID.ApplicationConfiguration_14301, validate14301)
32
+ validators.set(LwM2MObjectID.NRFCloudServiceInfo_14401, validate14401)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hello.nrfcloud.com/proto-map",
3
- "version": "12.0.0",
3
+ "version": "12.1.0",
4
4
  "description": "Documents the communication protocol between devices, the hello.nrfcloud.com/map backend and web application",
5
5
  "type": "module",
6
6
  "exports": {
@@ -36,11 +36,11 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "@bifravst/eslint-config-typescript": "6.1.2",
39
- "@bifravst/prettier-config": "1.0.1",
39
+ "@bifravst/prettier-config": "1.0.2",
40
40
  "@commitlint/config-conventional": "19.2.2",
41
41
  "@swc/cli": "0.3.12",
42
- "@swc/core": "1.5.24",
43
- "@types/node": "20.14.1",
42
+ "@swc/core": "1.5.25",
43
+ "@types/node": "20.14.2",
44
44
  "@types/xml2js": "0.4.14",
45
45
  "chalk": "5.3.0",
46
46
  "globstar": "1.0.0",
@@ -50,7 +50,7 @@
50
50
  "remark": "15.0.1",
51
51
  "remark-frontmatter": "5.0.0",
52
52
  "tsmatchers": "5.0.2",
53
- "tsx": "4.11.2",
53
+ "tsx": "4.13.2",
54
54
  "xml2js": "0.6.2",
55
55
  "yaml": "2.4.3"
56
56
  },