From 0e640e362b1653a1bdc55d2fb0306047f2ee6d63 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Wed, 29 May 2024 12:48:22 -0400 Subject: [PATCH] Allow overriding the board and manufacturer name in-firmware --- src/ncp-uart-hw/app.c | 28 +++++++++++++++++++++++++--- src/ncp-uart-hw/config/xncp_config.h | 8 ++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/ncp-uart-hw/app.c b/src/ncp-uart-hw/app.c index d6478653..7655de18 100644 --- a/src/ncp-uart-hw/app.c +++ b/src/ncp-uart-hw/app.c @@ -29,15 +29,19 @@ typedef enum { XNCP_CMD_GET_SUPPORTED_FEATURES = 0x0000, - XNCP_CMD_SET_SOURCE_ROUTE = 0x0001 + XNCP_CMD_SET_SOURCE_ROUTE = 0x0001, + XNCP_CMD_GET_BOARD_NAME_OVERRIDE = 0x0002, + XNCP_CMD_GET_MANUF_NAME_OVERRIDE = 0x0003 } CUSTOM_EZSP_CMD; -#define FEATURE_MEMBER_OF_ALL_GROUPS (0b00000000000000000000000000000001) -#define FEATURE_MANUAL_SOURCE_ROUTE (0b00000000000000000000000000000010) +#define FEATURE_MEMBER_OF_ALL_GROUPS (0b00000000000000000000000000000001) +#define FEATURE_MANUAL_SOURCE_ROUTE (0b00000000000000000000000000000010) +#define FEATURE_BOARD_MANUF_OVERRIDE (0b00000000000000000000000000000100) #define SUPPORTED_FEATURES ( \ FEATURE_MEMBER_OF_ALL_GROUPS \ | FEATURE_MANUAL_SOURCE_ROUTE \ + | FEATURE_BOARD_MANUF_OVERRIDE \ ) @@ -196,6 +200,24 @@ EmberStatus emberAfPluginXncpIncomingCustomFrameCallback(uint8_t messageLength, break; + case XNCP_CMD_GET_BOARD_NAME_OVERRIDE: + if (!XNCP_BOARD_MANUF_OVERRIDE_ENABLED) { + break; + } + + *replyPayloadLength += strlen(XNCP_BOARD_NAME_OVERRIDE); + memcpy(replyPayload, XNCP_BOARD_NAME_OVERRIDE, *replyPayloadLength); + break; + + case XNCP_CMD_GET_MANUF_NAME_OVERRIDE: + if (!XNCP_BOARD_MANUF_OVERRIDE_ENABLED) { + break; + } + + *replyPayloadLength += strlen(XNCP_MANUF_NAME_OVERRIDE); + memcpy(replyPayload, XNCP_MANUF_NAME_OVERRIDE, *replyPayloadLength); + break; + default: return EMBER_BAD_ARGUMENT; } diff --git a/src/ncp-uart-hw/config/xncp_config.h b/src/ncp-uart-hw/config/xncp_config.h index 8a4ca9f6..02c506ad 100644 --- a/src/ncp-uart-hw/config/xncp_config.h +++ b/src/ncp-uart-hw/config/xncp_config.h @@ -6,4 +6,12 @@ // destinations can be concurrently contacted with source routing enabled. #define XNCP_MANUAL_SOURCE_ROUTE_TABLE_SIZE (20) + +// Some manufacturers do not write a board or manufacturer name to the NCP. +// Rather than writing the manufacturing tokens within the application, you can instead +// supply overrides that will be preferred to the manufacturing token values. +#define XNCP_BOARD_MANUF_OVERRIDE_ENABLED (false) +#define XNCP_BOARD_NAME_OVERRIDE ("") +#define XNCP_MANUF_NAME_OVERRIDE ("") + #endif /* CONFIG_XNCP_CONFIG_H_ */