Skip to content

Commit

Permalink
Allow overriding the board and manufacturer name in-firmware
Browse files Browse the repository at this point in the history
  • Loading branch information
puddly committed May 29, 2024
1 parent 9f92e1f commit 0e640e3
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 3 deletions.
28 changes: 25 additions & 3 deletions src/ncp-uart-hw/app.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
)


Expand Down Expand Up @@ -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;
}
Expand Down
8 changes: 8 additions & 0 deletions src/ncp-uart-hw/config/xncp_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -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_ */

0 comments on commit 0e640e3

Please sign in to comment.