2020-08-04 15:55:45

by Michael N. Moran

[permalink] [raw]
Subject: [PATCH BlueZ v3] mesh: Add strings for SIG Model IDs

---
tools/mesh/cfgcli.c | 3 ++-
tools/mesh/remote.c | 5 ++--
tools/mesh/util.c | 64 +++++++++++++++++++++++++++++++++++++++++++++
tools/mesh/util.h | 1 +
4 files changed, 70 insertions(+), 3 deletions(-)

diff --git a/tools/mesh/cfgcli.c b/tools/mesh/cfgcli.c
index e36c8dca5..351f40ad0 100644
--- a/tools/mesh/cfgcli.c
+++ b/tools/mesh/cfgcli.c
@@ -263,7 +263,8 @@ static uint32_t print_mod_id(uint8_t *data, bool vendor, const char *offset)

if (!vendor) {
mod_id = get_le16(data);
- bt_shell_printf("%sModel ID\t%4.4x\n", offset, mod_id);
+ bt_shell_printf("%sModel ID\t%4.4x \"%s\"\n",
+ offset, mod_id, sig_model_string(mod_id));
mod_id = VENDOR_ID_MASK | mod_id;
} else {
mod_id = get_le16(data + 2);
diff --git a/tools/mesh/remote.c b/tools/mesh/remote.c
index c74f0bec1..206885c07 100644
--- a/tools/mesh/remote.c
+++ b/tools/mesh/remote.c
@@ -30,6 +30,7 @@
#include "tools/mesh/keys.h"
#include "tools/mesh/mesh-db.h"
#include "tools/mesh/remote.h"
+#include "tools/mesh/util.h"

#define abs_diff(a, b) ((a) > (b) ? (a) - (b) : (b) - (a))

@@ -293,8 +294,8 @@ static void print_model(void *model, void *user_data)

if (mod_id >= VENDOR_ID_MASK) {
mod_id &= ~VENDOR_ID_MASK;
- bt_shell_printf("\t\t\t" COLOR_GREEN "SIG model: %4.4x\n"
- COLOR_OFF, mod_id);
+ bt_shell_printf("\t\t\t" COLOR_GREEN "SIG model: %4.4x \"%s\"\n"
+ COLOR_OFF, mod_id, sig_model_string(mod_id));
return;
}

diff --git a/tools/mesh/util.c b/tools/mesh/util.c
index 7176cc562..82e4c9ad2 100644
--- a/tools/mesh/util.c
+++ b/tools/mesh/util.c
@@ -138,3 +138,67 @@ void swap_u256_bytes(uint8_t *u256)
u256[i] ^= u256[31 - i];
}
}
+
+const char *sig_model_string(uint16_t sig_model_id)
+{
+ switch (sig_model_id) {
+ case 0x0000: return "Configuration Server";
+ case 0x0001: return "Configuration Client";
+ case 0x0002: return "Health Server";
+ case 0x0003: return "Health Client";
+ case 0x1000: return "Generic OnOff Server";
+ case 0x1001: return "Generic OnOff Client";
+ case 0x1002: return "Generic Level Server";
+ case 0x1003: return "Generic Level Client";
+ case 0x1004: return "Generic Default Transition Time Server";
+ case 0x1005: return "Generic Default Transition Time Client";
+ case 0x1006: return "Generic Power OnOff Server";
+ case 0x1007: return "Generic Power OnOff Setup Server";
+ case 0x1008: return "Generic Power OnOff Client";
+ case 0x1009: return "Generic Power Level Server";
+ case 0x100A: return "Generic Power Level Setup Server";
+ case 0x100B: return "Generic Power Level Client";
+ case 0x100C: return "Generic Battery Server";
+ case 0x100D: return "Generic Battery Client";
+ case 0x100E: return "Generic Location Server";
+ case 0x100F: return "Generic Location Setup Server";
+ case 0x1010: return "Generic Location Client";
+ case 0x1011: return "Generic Admin Property Server";
+ case 0x1012: return "Generic Manufacturer Property Server";
+ case 0x1013: return "Generic User Property Server";
+ case 0x1014: return "Generic Client Property Server";
+ case 0x1015: return "Generic Property Client";
+ case 0x1100: return "Sensor Server";
+ case 0x1101: return "Sensor Setup Server";
+ case 0x1102: return "Sensor Client";
+ case 0x1200: return "Time Server";
+ case 0x1201: return "Time Setup Server";
+ case 0x1202: return "Time Client";
+ case 0x1203: return "Scene Server";
+ case 0x1204: return "Scene Setup Server";
+ case 0x1205: return "Scene Client";
+ case 0x1206: return "Scheduler Server";
+ case 0x1207: return "Scheduler Setup Server";
+ case 0x1208: return "Scheduler Client";
+ case 0x1300: return "Light Lightness Server";
+ case 0x1301: return "Light Lightness Setup Server";
+ case 0x1302: return "Light Lightness Client";
+ case 0x1303: return "Light CTL Server";
+ case 0x1304: return "Light CTL Setup Server";
+ case 0x1305: return "Light CTL Client";
+ case 0x1306: return "Light CTL Temperature Server";
+ case 0x1307: return "Light HSL Server";
+ case 0x1308: return "Light HSL Setup Server";
+ case 0x1309: return "Light HSL Client";
+ case 0x130A: return "Light HSL Hue Server";
+ case 0x130B: return "Light HSL Saturation Server";
+ case 0x130C: return "Light xyL Server";
+ case 0x130D: return "Light xyL Setup Server";
+ case 0x130E: return "Light xyL Client";
+ case 0x130F: return "Light LC Server";
+ case 0x1310: return "Light LC Setup Server";
+ case 0x1311: return "Light LC Client";
+
+ default: return "Unknown";
+ }
+}
diff --git a/tools/mesh/util.h b/tools/mesh/util.h
index cca07cf96..2b9b926b1 100644
--- a/tools/mesh/util.h
+++ b/tools/mesh/util.h
@@ -27,3 +27,4 @@ uint16_t mesh_opcode_set(uint32_t opcode, uint8_t *buf);
bool mesh_opcode_get(const uint8_t *buf, uint16_t sz, uint32_t *opcode, int *n);
const char *mesh_status_str(uint8_t status);
void swap_u256_bytes(uint8_t *u256);
+const char *sig_model_string(uint16_t sig_model_id);
--
2.26.2


2020-08-04 16:21:10

by Gix, Brian

[permalink] [raw]
Subject: Re: [PATCH BlueZ v3] mesh: Add strings for SIG Model IDs


Applied with following whitespace style guide fixes:

80 charactor violations at:
tools/mesh/cfgcli.c:267
tools/mesh/remote.c:298

incorrect TAB in sig_model_string() prototype
tools/mesh/util.c:142
tools/mesh/util.h:30

On Tue, 2020-08-04 at 11:54 -0400, Michael N. Moran wrote:
> ---
> tools/mesh/cfgcli.c | 3 ++-
> tools/mesh/remote.c | 5 ++--
> tools/mesh/util.c | 64 +++++++++++++++++++++++++++++++++++++++++++++
> tools/mesh/util.h | 1 +
> 4 files changed, 70 insertions(+), 3 deletions(-)
>
> diff --git a/tools/mesh/cfgcli.c b/tools/mesh/cfgcli.c
> index e36c8dca5..351f40ad0 100644
> --- a/tools/mesh/cfgcli.c
> +++ b/tools/mesh/cfgcli.c
> @@ -263,7 +263,8 @@ static uint32_t print_mod_id(uint8_t *data, bool vendor, const char *offset)
>
> if (!vendor) {
> mod_id = get_le16(data);
> - bt_shell_printf("%sModel ID\t%4.4x\n", offset, mod_id);
> + bt_shell_printf("%sModel ID\t%4.4x \"%s\"\n",
> + offset, mod_id, sig_model_string(mod_id));
> mod_id = VENDOR_ID_MASK | mod_id;
> } else {
> mod_id = get_le16(data + 2);
> diff --git a/tools/mesh/remote.c b/tools/mesh/remote.c
> index c74f0bec1..206885c07 100644
> --- a/tools/mesh/remote.c
> +++ b/tools/mesh/remote.c
> @@ -30,6 +30,7 @@
> #include "tools/mesh/keys.h"
> #include "tools/mesh/mesh-db.h"
> #include "tools/mesh/remote.h"
> +#include "tools/mesh/util.h"
>
> #define abs_diff(a, b) ((a) > (b) ? (a) - (b) : (b) - (a))
>
> @@ -293,8 +294,8 @@ static void print_model(void *model, void *user_data)
>
> if (mod_id >= VENDOR_ID_MASK) {
> mod_id &= ~VENDOR_ID_MASK;
> - bt_shell_printf("\t\t\t" COLOR_GREEN "SIG model: %4.4x\n"
> - COLOR_OFF, mod_id);
> + bt_shell_printf("\t\t\t" COLOR_GREEN "SIG model: %4.4x \"%s\"\n"
> + COLOR_OFF, mod_id, sig_model_string(mod_id));
> return;
> }
>
> diff --git a/tools/mesh/util.c b/tools/mesh/util.c
> index 7176cc562..82e4c9ad2 100644
> --- a/tools/mesh/util.c
> +++ b/tools/mesh/util.c
> @@ -138,3 +138,67 @@ void swap_u256_bytes(uint8_t *u256)
> u256[i] ^= u256[31 - i];
> }
> }
> +
> +const char *sig_model_string(uint16_t sig_model_id)
> +{
> + switch (sig_model_id) {
> + case 0x0000: return "Configuration Server";
> + case 0x0001: return "Configuration Client";
> + case 0x0002: return "Health Server";
> + case 0x0003: return "Health Client";
> + case 0x1000: return "Generic OnOff Server";
> + case 0x1001: return "Generic OnOff Client";
> + case 0x1002: return "Generic Level Server";
> + case 0x1003: return "Generic Level Client";
> + case 0x1004: return "Generic Default Transition Time Server";
> + case 0x1005: return "Generic Default Transition Time Client";
> + case 0x1006: return "Generic Power OnOff Server";
> + case 0x1007: return "Generic Power OnOff Setup Server";
> + case 0x1008: return "Generic Power OnOff Client";
> + case 0x1009: return "Generic Power Level Server";
> + case 0x100A: return "Generic Power Level Setup Server";
> + case 0x100B: return "Generic Power Level Client";
> + case 0x100C: return "Generic Battery Server";
> + case 0x100D: return "Generic Battery Client";
> + case 0x100E: return "Generic Location Server";
> + case 0x100F: return "Generic Location Setup Server";
> + case 0x1010: return "Generic Location Client";
> + case 0x1011: return "Generic Admin Property Server";
> + case 0x1012: return "Generic Manufacturer Property Server";
> + case 0x1013: return "Generic User Property Server";
> + case 0x1014: return "Generic Client Property Server";
> + case 0x1015: return "Generic Property Client";
> + case 0x1100: return "Sensor Server";
> + case 0x1101: return "Sensor Setup Server";
> + case 0x1102: return "Sensor Client";
> + case 0x1200: return "Time Server";
> + case 0x1201: return "Time Setup Server";
> + case 0x1202: return "Time Client";
> + case 0x1203: return "Scene Server";
> + case 0x1204: return "Scene Setup Server";
> + case 0x1205: return "Scene Client";
> + case 0x1206: return "Scheduler Server";
> + case 0x1207: return "Scheduler Setup Server";
> + case 0x1208: return "Scheduler Client";
> + case 0x1300: return "Light Lightness Server";
> + case 0x1301: return "Light Lightness Setup Server";
> + case 0x1302: return "Light Lightness Client";
> + case 0x1303: return "Light CTL Server";
> + case 0x1304: return "Light CTL Setup Server";
> + case 0x1305: return "Light CTL Client";
> + case 0x1306: return "Light CTL Temperature Server";
> + case 0x1307: return "Light HSL Server";
> + case 0x1308: return "Light HSL Setup Server";
> + case 0x1309: return "Light HSL Client";
> + case 0x130A: return "Light HSL Hue Server";
> + case 0x130B: return "Light HSL Saturation Server";
> + case 0x130C: return "Light xyL Server";
> + case 0x130D: return "Light xyL Setup Server";
> + case 0x130E: return "Light xyL Client";
> + case 0x130F: return "Light LC Server";
> + case 0x1310: return "Light LC Setup Server";
> + case 0x1311: return "Light LC Client";
> +
> + default: return "Unknown";
> + }
> +}
> diff --git a/tools/mesh/util.h b/tools/mesh/util.h
> index cca07cf96..2b9b926b1 100644
> --- a/tools/mesh/util.h
> +++ b/tools/mesh/util.h
> @@ -27,3 +27,4 @@ uint16_t mesh_opcode_set(uint32_t opcode, uint8_t *buf);
> bool mesh_opcode_get(const uint8_t *buf, uint16_t sz, uint32_t *opcode, int *n);
> const char *mesh_status_str(uint8_t status);
> void swap_u256_bytes(uint8_t *u256);
> +const char *sig_model_string(uint16_t sig_model_id);