From f4609477c99e5921c1f744d318a3534d3d70530e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=98yvind=20R=C3=B8nningstad?=
 <oyvind.ronningstad@nordicsemi.no>
Date: Fri, 1 Jul 2022 09:54:09 +0200
Subject: [PATCH] patch

---
 .../net/lib/lwm2m/lwm2m_senml_cbor_decode.c   | 29 ++++++-----
 .../net/lib/lwm2m/lwm2m_senml_cbor_decode.h   | 16 +++----
 .../net/lib/lwm2m/lwm2m_senml_cbor_encode.c   | 48 ++++++++++---------
 .../net/lib/lwm2m/lwm2m_senml_cbor_encode.h   | 16 +++----
 subsys/net/lib/lwm2m/lwm2m_senml_cbor_types.h | 25 ++++++++--
 5 files changed, 78 insertions(+), 56 deletions(-)

diff --git a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.c b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.c
index 1a64bd3502..8dfa3bb03a 100644
--- a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.c
+++ b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.c
@@ -1,20 +1,21 @@
+/*
+ * Copyright (c) 2022 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 /*
  * Generated using zcbor version 0.5.1
- * https://github.com/NordicSemiconductor/zcbor
+ * https://github.com/zephyrproject-rtos/zcbor
  * Generated with a --default-max-qty of 99
  */

-#include "lwm2m_senml_cbor_decode.h"
-#include "zcbor_decode.h"

 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
-
-#if DEFAULT_MAX_QTY != 99
-#error "The type file was generated with a different default_max_qty than this file"
-#endif
+#include "zcbor_decode.h"
+#include "lwm2m_senml_cbor_decode.h"

 static bool decode_repeated_record_bn(zcbor_state_t *state, struct record_bn *result);
 static bool decode_repeated_record_n(zcbor_state_t *state, struct record_n *result);
@@ -60,8 +61,8 @@ static bool decode_repeated_record_union(zcbor_state_t *state, struct record_uni
 	bool tmp_result = (((zcbor_union_start_code(state) &&
 			     (int_res = (((((zcbor_uint32_expect_union(state, (2)))) &&
 					   (zcbor_int64_decode(state, (&(*result)._union_vi))) &&
-					   ((((*result)._union_vi >= -9223372036854775807LL) &&
-					     ((*result)._union_vi <= 9223372036854775807LL)) ||
+					   ((((*result)._union_vi >= INT64_MIN) &&
+					     ((*result)._union_vi <= INT64_MAX)) ||
 					    (zcbor_error(state, ZCBOR_ERR_WRONG_RANGE), false))) &&
 					  (((*result)._record_union_choice = _union_vi) || 1)) ||
 					 ((((zcbor_uint32_expect_union(state, (2)))) &&
@@ -96,8 +97,8 @@ static bool decode_value(zcbor_state_t *state, struct value_ *result)
 			       (((zcbor_bstr_decode(state, (&(*result)._value_bstr)))) &&
 				(((*result)._value_choice = _value_bstr) || 1)) ||
 			       (((zcbor_int64_decode(state, (&(*result)._value_int))) &&
-				 ((((*result)._value_int >= -9223372036854775807LL) &&
-				   ((*result)._value_int <= 9223372036854775807LL)) ||
+				 ((((*result)._value_int >= INT64_MIN) &&
+				   ((*result)._value_int <= INT64_MAX)) ||
 				  (zcbor_error(state, ZCBOR_ERR_WRONG_RANGE), false))) &&
 				(((*result)._value_choice = _value_int) || 1)) ||
 			       (((zcbor_float_decode(state, (&(*result)._value_float)))) &&
@@ -153,7 +154,8 @@ static bool decode_record(zcbor_state_t *state, struct record *result)
 		     zcbor_present_decode(&((*result)._record_union_present),
 					  (zcbor_decoder_t *)decode_repeated_record_union, state,
 					  (&(*result)._record_union)) &&
-		     zcbor_multi_decode(0, 3, &(*result)._record__key_value_pair_count,
+		     zcbor_multi_decode(0, ARRAY_SIZE(result->_record__key_value_pair),
+					&(*result)._record__key_value_pair_count,
 					(zcbor_decoder_t *)decode_repeated_record__key_value_pair,
 					state, (&(*result)._record__key_value_pair),
 					sizeof(struct record__key_value_pair))) ||
@@ -172,7 +174,8 @@ static bool decode_lwm2m_senml(zcbor_state_t *state, struct lwm2m_senml *result)

 	bool tmp_result = ((
 		(zcbor_list_start_decode(state) &&
-		 ((zcbor_multi_decode(1, 99, &(*result)._lwm2m_senml__record_count,
+		 ((zcbor_multi_decode(1, ARRAY_SIZE(result->_lwm2m_senml__record),
+				      &(*result)._lwm2m_senml__record_count,
 				      (zcbor_decoder_t *)decode_record, state,
 				      (&(*result)._lwm2m_senml__record), sizeof(struct record))) ||
 		  (zcbor_list_map_end_force_decode(state), false)) &&
diff --git a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.h b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.h
index 1bc78642d3..ddff913391 100644
--- a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.h
+++ b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_decode.h
@@ -1,23 +1,23 @@
+/*
+ * Copyright (c) 2022 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 /*
  * Generated using zcbor version 0.5.1
- * https://github.com/NordicSemiconductor/zcbor
+ * https://github.com/zephyrproject-rtos/zcbor
  * Generated with a --default-max-qty of 99
  */

 #ifndef LWM2M_SENML_CBOR_DECODE_H__
 #define LWM2M_SENML_CBOR_DECODE_H__

-#include "lwm2m_senml_cbor_types.h"
-#include "zcbor_decode.h"
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
-
-#if DEFAULT_MAX_QTY != 99
-#error "The type file was generated with a different default_max_qty than this file"
-#endif
+#include "zcbor_decode.h"
+#include "lwm2m_senml_cbor_types.h"

 int cbor_decode_lwm2m_senml(const uint8_t *payload, size_t payload_len, struct lwm2m_senml *result,
 			    size_t *payload_len_out);
diff --git a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.c b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.c
index 07dc20e3a9..11007bd92f 100644
--- a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.c
+++ b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.c
@@ -1,20 +1,21 @@
+/*
+ * Copyright (c) 2022 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 /*
  * Generated using zcbor version 0.5.1
- * https://github.com/NordicSemiconductor/zcbor
+ * https://github.com/zephyrproject-rtos/zcbor
  * Generated with a --default-max-qty of 99
  */

-#include "lwm2m_senml_cbor_encode.h"
-#include "zcbor_encode.h"
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
-
-#if DEFAULT_MAX_QTY != 99
-#error "The type file was generated with a different default_max_qty than this file"
-#endif
+#include "zcbor_encode.h"
+#include "lwm2m_senml_cbor_encode.h"
+#include "lwm2m_senml_cbor_types.h"

 static bool encode_repeated_record_bn(zcbor_state_t *state, const struct record_bn *input);
 static bool encode_repeated_record_n(zcbor_state_t *state, const struct record_n *input);
@@ -59,8 +60,8 @@ static bool encode_repeated_record_union(zcbor_state_t *state, const struct reco
 	bool tmp_result = (((
 		((*input)._record_union_choice == _union_vi)
 			? (((zcbor_uint32_put(state, (2)))) &&
-			   ((((*input)._union_vi >= -9223372036854775807LL) &&
-			     ((*input)._union_vi <= 9223372036854775807LL)) ||
+			   ((((*input)._union_vi >= INT64_MIN) &&
+			     ((*input)._union_vi <= INT64_MAX)) ||
 			    (zcbor_error(state, ZCBOR_ERR_WRONG_RANGE), false)) &&
 			   (zcbor_int64_encode(state, (&(*input)._union_vi))))
 			: (((*input)._record_union_choice == _union_vf)
@@ -78,8 +79,8 @@ static bool encode_repeated_record_union(zcbor_state_t *state, const struct reco
 								    ? (((zcbor_uint32_put(state,
 											  (8)))) &&
 								       (zcbor_bstr_encode(
-									       state,
-									       (&(*input)._union_vd))))
+									state,
+									(&(*input)._union_vd))))
 								    : false)))))));

 	if (!tmp_result)
@@ -99,9 +100,9 @@ static bool encode_value(zcbor_state_t *state, const struct value_ *input)
 				   ? ((zcbor_bstr_encode(state, (&(*input)._value_bstr))))
 				   : (((*input)._value_choice == _value_int)
 					      ? (((((*input)._value_int >=
-						    -9223372036854775807LL) &&
+						    INT64_MIN) &&
 						   ((*input)._value_int <=
-						    9223372036854775807LL)) ||
+						    INT64_MAX)) ||
 						  (zcbor_error(state, ZCBOR_ERR_WRONG_RANGE),
 						   false)) &&
 						 (zcbor_int64_encode(state,
@@ -112,8 +113,8 @@ static bool encode_value(zcbor_state_t *state, const struct value_ *input)
 								   (&(*input)._value_float))))
 							 : (((*input)._value_choice == _value_bool)
 								    ? ((zcbor_bool_encode(
-									      state,
-									      (&(*input)._value_bool))))
+									state,
+									(&(*input)._value_bool))))
 								    : false)))))));

 	if (!tmp_result)
@@ -152,7 +153,9 @@ static bool encode_record(zcbor_state_t *state, const struct record *input)
 {
 	zcbor_print("%s\r\n", __func__);

-	bool tmp_result = (((zcbor_map_start_encode(state, 6) &&
+	int max_keys = ARRAY_SIZE(input->_record__key_value_pair);
+
+	bool tmp_result = (((zcbor_map_start_encode(state, max_keys + 3) &&
 			     ((zcbor_present_encode(&((*input)._record_bn_present),
 						    (zcbor_encoder_t *)encode_repeated_record_bn,
 						    state, (&(*input)._record_bn)) &&
@@ -163,12 +166,12 @@ static bool encode_record(zcbor_state_t *state, const struct record *input)
 						    (zcbor_encoder_t *)encode_repeated_record_union,
 						    state, (&(*input)._record_union)) &&
 			       zcbor_multi_encode_minmax(
-				       0, 3, &(*input)._record__key_value_pair_count,
+				       0, max_keys, &(*input)._record__key_value_pair_count,
 				       (zcbor_encoder_t *)encode_repeated_record__key_value_pair,
 				       state, (&(*input)._record__key_value_pair),
 				       sizeof(struct record__key_value_pair))) ||
 			      (zcbor_list_map_end_force_encode(state), false)) &&
-			     zcbor_map_end_encode(state, 6))));
+			     zcbor_map_end_encode(state, max_keys + 3))));

 	if (!tmp_result)
 		zcbor_trace();
@@ -179,14 +182,15 @@ static bool encode_record(zcbor_state_t *state, const struct record *input)
 static bool encode_lwm2m_senml(zcbor_state_t *state, const struct lwm2m_senml *input)
 {
 	zcbor_print("%s\r\n", __func__);
+	size_t max_records = ARRAY_SIZE(input->_lwm2m_senml__record);

-	bool tmp_result = (((zcbor_list_start_encode(state, 99) &&
+	bool tmp_result = (((zcbor_list_start_encode(state, max_records) &&
 			     ((zcbor_multi_encode_minmax(
-				      1, 99, &(*input)._lwm2m_senml__record_count,
+				      1, max_records, &(*input)._lwm2m_senml__record_count,
 				      (zcbor_encoder_t *)encode_record, state,
 				      (&(*input)._lwm2m_senml__record), sizeof(struct record))) ||
 			      (zcbor_list_map_end_force_encode(state), false)) &&
-			     zcbor_list_end_encode(state, 99))));
+			     zcbor_list_end_encode(state, max_records))));

 	if (!tmp_result)
 		zcbor_trace();
diff --git a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.h b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.h
index 431bc18760..563b82a917 100644
--- a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.h
+++ b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_encode.h
@@ -1,23 +1,23 @@
+/*
+ * Copyright (c) 2022 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 /*
  * Generated using zcbor version 0.5.1
- * https://github.com/NordicSemiconductor/zcbor
+ * https://github.com/zephyrproject-rtos/zcbor
  * Generated with a --default-max-qty of 99
  */

 #ifndef LWM2M_SENML_CBOR_ENCODE_H__
 #define LWM2M_SENML_CBOR_ENCODE_H__

-#include "lwm2m_senml_cbor_types.h"
-#include "zcbor_encode.h"
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
-
-#if DEFAULT_MAX_QTY != 99
-#error "The type file was generated with a different default_max_qty than this file"
-#endif
+#include "zcbor_encode.h"
+#include "lwm2m_senml_cbor_types.h"

 int cbor_encode_lwm2m_senml(uint8_t *payload, size_t payload_len, const struct lwm2m_senml *input,
 			    size_t *payload_len_out);
diff --git a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_types.h b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_types.h
index f02b7df151..d8e7d3405a 100644
--- a/subsys/net/lib/lwm2m/lwm2m_senml_cbor_types.h
+++ b/subsys/net/lib/lwm2m/lwm2m_senml_cbor_types.h
@@ -1,18 +1,33 @@
+/*
+ * Copyright (c) 2022 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 /*
  * Generated using zcbor version 0.5.1
- * https://github.com/NordicSemiconductor/zcbor
+ * https://github.com/zephyrproject-rtos/zcbor
  * Generated with a --default-max-qty of 99
  */

 #ifndef LWM2M_SENML_CBOR_TYPES_H__
 #define LWM2M_SENML_CBOR_TYPES_H__

-#include "zcbor_encode.h"
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
+#include "zcbor_common.h"
+
+
+enum lwm2m_senml_cbor_key {
+	lwm2m_senml_cbor_key_bn = -2,
+	lwm2m_senml_cbor_key_n  = 0,
+	lwm2m_senml_cbor_key_vi = 2,
+	lwm2m_senml_cbor_key_vf = 2,
+	lwm2m_senml_cbor_key_vs = 3,
+	lwm2m_senml_cbor_key_vb = 4,
+	lwm2m_senml_cbor_key_vd = 8,
+};

 /** Which value for --default-max-qty this file was created with.
  *
@@ -21,7 +36,7 @@
  *
  *  See `zcbor --help` for more information about --default-max-qty
  */
-#define DEFAULT_MAX_QTY 99
+#define DEFAULT_MAX_QTY CONFIG_LWM2M_RW_SENML_CBOR_RECORDS

 struct record_bn {
 	struct zcbor_string _record_bn;
@@ -96,7 +111,7 @@ struct record {
 };

 struct lwm2m_senml {
-	struct record _lwm2m_senml__record[99];
+	struct record _lwm2m_senml__record[DEFAULT_MAX_QTY];
 	uint_fast32_t _lwm2m_senml__record_count;
 };

--
2.37.0

