Skip to content

Commit db6249b

Browse files
Use enums for family/board in DeviceInfoResponse
Updated both nRF and ESP32 firmware to use enum values for family and board fields instead of strings. This provides better type safety and prevents invalid values from being sent. Changes: - Regenerated proto files from updated MouthpadRelay.proto - Added board name to enum mapping in ncs/app/src/main.c - Added board name to enum mapping in esp/main/relay_protocol.c - Both implementations log the mapped enum value for debugging
1 parent 35e202c commit db6249b

7 files changed

Lines changed: 121 additions & 28 deletions

File tree

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.1.0
1+
0.1.1

esp/main/mouthpad-proto/src/C/MouthpadRelay.pb.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,7 @@ PB_BIND(mouthware_message_RelayToAppMessage, mouthware_message_RelayToAppMessage
5252

5353

5454

55+
56+
57+
58+

esp/main/mouthpad-proto/src/C/MouthpadRelay.pb.h

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,27 @@ typedef enum _mouthware_message_RelayBleConnectionStatus {
2424
mouthware_message_RelayBleConnectionStatus_RELAY_CONNECTION_STATUS_CONNECTING = 4
2525
} mouthware_message_RelayBleConnectionStatus;
2626

27+
typedef enum _mouthware_message_DeviceFamily {
28+
mouthware_message_DeviceFamily_DEVICE_FAMILY_UNSPECIFIED = 0,
29+
mouthware_message_DeviceFamily_DEVICE_FAMILY_NRF = 1,
30+
mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP = 2
31+
} mouthware_message_DeviceFamily;
32+
33+
typedef enum _mouthware_message_DeviceBoard {
34+
mouthware_message_DeviceBoard_DEVICE_BOARD_UNSPECIFIED = 0,
35+
/* nRF52840 boards */
36+
mouthware_message_DeviceBoard_DEVICE_BOARD_SEEED_XIAO_NRF52840 = 1,
37+
mouthware_message_DeviceBoard_DEVICE_BOARD_NORDIC_NRF52840DONGLE = 2,
38+
mouthware_message_DeviceBoard_DEVICE_BOARD_APRBROTHER_NRF52840 = 3,
39+
mouthware_message_DeviceBoard_DEVICE_BOARD_RAYTAC_MDBT50Q_RX = 4,
40+
mouthware_message_DeviceBoard_DEVICE_BOARD_RAYTAC_MDBT50Q_CX_40 = 5,
41+
mouthware_message_DeviceBoard_DEVICE_BOARD_MAKERDIARY_NRF52840_MDK = 6,
42+
mouthware_message_DeviceBoard_DEVICE_BOARD_ADAFRUIT_FEATHER_NRF52840 = 7,
43+
/* ESP32-S3 boards */
44+
mouthware_message_DeviceBoard_DEVICE_BOARD_SEEED_XIAO_ESP32S3 = 100,
45+
mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3 = 101
46+
} mouthware_message_DeviceBoard;
47+
2748
typedef enum _mouthware_message_PassThroughToMouthpadErrorCode {
2849
mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_UNSPECIFIED = 0,
2950
mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_TIMEOUT = 1,
@@ -86,8 +107,8 @@ typedef struct _mouthware_message_DeviceInfoResponse {
86107
pb_callback_t address; /* BLE MAC address */
87108
uint32_t vid; /* USB Vendor ID from PnP ID characteristic */
88109
uint32_t pid; /* USB Product ID from PnP ID characteristic */
89-
pb_callback_t family; /* Device family: "esp" or "nrf" */
90-
pb_callback_t board; /* Target board: e.g., "xiao_ble", "nrf52840dongle_nrf52840" */
110+
mouthware_message_DeviceFamily family; /* Device family */
111+
mouthware_message_DeviceBoard board; /* Target board */
91112
} mouthware_message_DeviceInfoResponse;
92113

93114
typedef struct _mouthware_message_ClearBondsResponse {
@@ -140,6 +161,14 @@ extern "C" {
140161
#define _mouthware_message_RelayBleConnectionStatus_MAX mouthware_message_RelayBleConnectionStatus_RELAY_CONNECTION_STATUS_CONNECTING
141162
#define _mouthware_message_RelayBleConnectionStatus_ARRAYSIZE ((mouthware_message_RelayBleConnectionStatus)(mouthware_message_RelayBleConnectionStatus_RELAY_CONNECTION_STATUS_CONNECTING+1))
142163

164+
#define _mouthware_message_DeviceFamily_MIN mouthware_message_DeviceFamily_DEVICE_FAMILY_UNSPECIFIED
165+
#define _mouthware_message_DeviceFamily_MAX mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP
166+
#define _mouthware_message_DeviceFamily_ARRAYSIZE ((mouthware_message_DeviceFamily)(mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP+1))
167+
168+
#define _mouthware_message_DeviceBoard_MIN mouthware_message_DeviceBoard_DEVICE_BOARD_UNSPECIFIED
169+
#define _mouthware_message_DeviceBoard_MAX mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3
170+
#define _mouthware_message_DeviceBoard_ARRAYSIZE ((mouthware_message_DeviceBoard)(mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3+1))
171+
143172
#define _mouthware_message_PassThroughToMouthpadErrorCode_MIN mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_UNSPECIFIED
144173
#define _mouthware_message_PassThroughToMouthpadErrorCode_MAX mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_INVALID_MESSAGE
145174
#define _mouthware_message_PassThroughToMouthpadErrorCode_ARRAYSIZE ((mouthware_message_PassThroughToMouthpadErrorCode)(mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_INVALID_MESSAGE+1))
@@ -153,6 +182,8 @@ extern "C" {
153182

154183
#define mouthware_message_BleConnectionStatusResponse_connection_status_ENUMTYPE mouthware_message_RelayBleConnectionStatus
155184

185+
#define mouthware_message_DeviceInfoResponse_family_ENUMTYPE mouthware_message_DeviceFamily
186+
#define mouthware_message_DeviceInfoResponse_board_ENUMTYPE mouthware_message_DeviceBoard
156187

157188

158189

@@ -169,7 +200,7 @@ extern "C" {
169200
#define mouthware_message_PassThroughToMouthpad_init_default {{0, {0}}}
170201
#define mouthware_message_AppToRelayMessage_init_default {_mouthware_message_AppToRelayMessageDestination_MIN, 0, {mouthware_message_BleConnectionStatusRead_init_default}}
171202
#define mouthware_message_BleConnectionStatusResponse_init_default {_mouthware_message_RelayBleConnectionStatus_MIN, 0, 0}
172-
#define mouthware_message_DeviceInfoResponse_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}}
203+
#define mouthware_message_DeviceInfoResponse_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, _mouthware_message_DeviceFamily_MIN, _mouthware_message_DeviceBoard_MIN}
173204
#define mouthware_message_ClearBondsResponse_init_default {0}
174205
#define mouthware_message_DfuResponse_init_default {0}
175206
#define mouthware_message_PassThroughToMouthpadResponse_init_default {_mouthware_message_PassThroughToMouthpadErrorCode_MIN}
@@ -182,7 +213,7 @@ extern "C" {
182213
#define mouthware_message_PassThroughToMouthpad_init_zero {{0, {0}}}
183214
#define mouthware_message_AppToRelayMessage_init_zero {_mouthware_message_AppToRelayMessageDestination_MIN, 0, {mouthware_message_BleConnectionStatusRead_init_zero}}
184215
#define mouthware_message_BleConnectionStatusResponse_init_zero {_mouthware_message_RelayBleConnectionStatus_MIN, 0, 0}
185-
#define mouthware_message_DeviceInfoResponse_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}}
216+
#define mouthware_message_DeviceInfoResponse_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, _mouthware_message_DeviceFamily_MIN, _mouthware_message_DeviceBoard_MIN}
186217
#define mouthware_message_ClearBondsResponse_init_zero {0}
187218
#define mouthware_message_DfuResponse_init_zero {0}
188219
#define mouthware_message_PassThroughToMouthpadResponse_init_zero {_mouthware_message_PassThroughToMouthpadErrorCode_MIN}
@@ -272,8 +303,8 @@ X(a, CALLBACK, SINGULAR, STRING, firmware, 2) \
272303
X(a, CALLBACK, SINGULAR, STRING, address, 3) \
273304
X(a, STATIC, SINGULAR, UINT32, vid, 4) \
274305
X(a, STATIC, SINGULAR, UINT32, pid, 5) \
275-
X(a, CALLBACK, SINGULAR, STRING, family, 6) \
276-
X(a, CALLBACK, SINGULAR, STRING, board, 7)
306+
X(a, STATIC, SINGULAR, UENUM, family, 6) \
307+
X(a, STATIC, SINGULAR, UENUM, board, 7)
277308
#define mouthware_message_DeviceInfoResponse_CALLBACK pb_default_field_callback
278309
#define mouthware_message_DeviceInfoResponse_DEFAULT NULL
279310

esp/main/relay_protocol.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,20 @@ static esp_err_t handle_device_info_read(void) {
222222

223223
// Device family and board (always available - dongle hardware info)
224224
// These describe the dongle hardware itself, not the bonded MouthPad
225-
relay_msg.message_body.device_info_response.family.funcs.encode = encode_string_callback;
226-
relay_msg.message_body.device_info_response.family.arg = (void *)"esp";
227-
relay_msg.message_body.device_info_response.board.funcs.encode = encode_string_callback;
228-
relay_msg.message_body.device_info_response.board.arg = (void *)CONFIG_MOUTHPAD_BOARD_NAME;
225+
relay_msg.message_body.device_info_response.family = mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP;
226+
227+
// Map board name to enum
228+
const char *board_name = CONFIG_MOUTHPAD_BOARD_NAME;
229+
if (strcmp(board_name, "seeed_xiao_esp32s3") == 0) {
230+
relay_msg.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_SEEED_XIAO_ESP32S3;
231+
} else if (strcmp(board_name, "lilygo_tdisplay_s3") == 0) {
232+
relay_msg.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3;
233+
} else {
234+
relay_msg.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_UNSPECIFIED;
235+
ESP_LOGW(TAG, "Unknown board name: %s", board_name);
236+
}
237+
238+
ESP_LOGI(TAG, "Device info: family=esp, board=%s (enum=%d)", board_name, relay_msg.message_body.device_info_response.board);
229239

230240
const ble_device_info_t *device_info = ble_device_info_get_current();
231241

ncs/app/src/main.c

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -543,30 +543,43 @@ int main(void)
543543
}
544544

545545
/* Device family and board (always available) */
546-
response.message_body.device_info_response.family.funcs.encode = encode_string_callback;
547-
response.message_body.device_info_response.family.arg = (void *)"nrf";
548-
response.message_body.device_info_response.board.funcs.encode = encode_string_callback;
546+
response.message_body.device_info_response.family = mouthware_message_DeviceFamily_DEVICE_FAMILY_NRF;
549547

548+
/* Map board name string to enum value */
550549
const char *board_name;
551550
#ifdef CONFIG_DONGLE_VARIANT_STRING
552-
/* Use variant string as board name for custom hardware variants */
553551
const char *variant_str = CONFIG_DONGLE_VARIANT_STRING;
554-
/* Check if variant string is not empty at runtime */
555552
if (variant_str && variant_str[0] != '\0') {
556-
response.message_body.device_info_response.board.arg = (void *)variant_str;
557553
board_name = variant_str;
558-
LOG_INF("Device info: family=nrf, board=%s", variant_str);
559554
} else {
560-
response.message_body.device_info_response.board.arg = (void *)CONFIG_BOARD;
561555
board_name = CONFIG_BOARD;
562-
LOG_INF("Device info: family=nrf, board=%s (variant string empty)", CONFIG_BOARD);
563556
}
564557
#else
565-
response.message_body.device_info_response.board.arg = (void *)CONFIG_BOARD;
566558
board_name = CONFIG_BOARD;
567-
LOG_INF("Device info: family=nrf, board=%s (no variant)", CONFIG_BOARD);
568559
#endif
569560

561+
/* Map board name to enum */
562+
if (strcmp(board_name, "seeed_xiao_nrf52840") == 0) {
563+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_SEEED_XIAO_NRF52840;
564+
} else if (strcmp(board_name, "nrf52840dongle_nrf52840") == 0 || strcmp(board_name, "nordic_nrf52840dongle") == 0) {
565+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_NORDIC_NRF52840DONGLE;
566+
} else if (strcmp(board_name, "nrf52840_blip") == 0 || strcmp(board_name, "aprbrother_nrf52840") == 0) {
567+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_APRBROTHER_NRF52840;
568+
} else if (strcmp(board_name, "raytac_mdbt50q_rx") == 0) {
569+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_RAYTAC_MDBT50Q_RX;
570+
} else if (strcmp(board_name, "raytac_mdbt50q_cx_40") == 0) {
571+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_RAYTAC_MDBT50Q_CX_40;
572+
} else if (strcmp(board_name, "nrf52840_mdk") == 0 || strcmp(board_name, "makerdiary_nrf52840_mdk") == 0) {
573+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_MAKERDIARY_NRF52840_MDK;
574+
} else if (strcmp(board_name, "adafruit_feather_nrf52840") == 0) {
575+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_ADAFRUIT_FEATHER_NRF52840;
576+
} else {
577+
response.message_body.device_info_response.board = mouthware_message_DeviceBoard_DEVICE_BOARD_UNSPECIFIED;
578+
LOG_WRN("Unknown board name: %s", board_name);
579+
}
580+
581+
LOG_INF("Device info: family=nrf, board=%s (enum=%d)", board_name, response.message_body.device_info_response.board);
582+
570583
LOG_INF("Sending device info: bonded=%d, connected=%d, Addr=%s, Name=%s",
571584
has_bonded, conn != NULL,
572585
(conn || has_bonded) ? ble_addr_str : "(none)",

ncs/app/src/mouthpad-proto/src/C/MouthpadRelay.pb.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,7 @@ PB_BIND(mouthware_message_RelayToAppMessage, mouthware_message_RelayToAppMessage
5252

5353

5454

55+
56+
57+
58+

ncs/app/src/mouthpad-proto/src/C/MouthpadRelay.pb.h

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,27 @@ typedef enum _mouthware_message_RelayBleConnectionStatus {
2424
mouthware_message_RelayBleConnectionStatus_RELAY_CONNECTION_STATUS_CONNECTING = 4
2525
} mouthware_message_RelayBleConnectionStatus;
2626

27+
typedef enum _mouthware_message_DeviceFamily {
28+
mouthware_message_DeviceFamily_DEVICE_FAMILY_UNSPECIFIED = 0,
29+
mouthware_message_DeviceFamily_DEVICE_FAMILY_NRF = 1,
30+
mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP = 2
31+
} mouthware_message_DeviceFamily;
32+
33+
typedef enum _mouthware_message_DeviceBoard {
34+
mouthware_message_DeviceBoard_DEVICE_BOARD_UNSPECIFIED = 0,
35+
/* nRF52840 boards */
36+
mouthware_message_DeviceBoard_DEVICE_BOARD_SEEED_XIAO_NRF52840 = 1,
37+
mouthware_message_DeviceBoard_DEVICE_BOARD_NORDIC_NRF52840DONGLE = 2,
38+
mouthware_message_DeviceBoard_DEVICE_BOARD_APRBROTHER_NRF52840 = 3,
39+
mouthware_message_DeviceBoard_DEVICE_BOARD_RAYTAC_MDBT50Q_RX = 4,
40+
mouthware_message_DeviceBoard_DEVICE_BOARD_RAYTAC_MDBT50Q_CX_40 = 5,
41+
mouthware_message_DeviceBoard_DEVICE_BOARD_MAKERDIARY_NRF52840_MDK = 6,
42+
mouthware_message_DeviceBoard_DEVICE_BOARD_ADAFRUIT_FEATHER_NRF52840 = 7,
43+
/* ESP32-S3 boards */
44+
mouthware_message_DeviceBoard_DEVICE_BOARD_SEEED_XIAO_ESP32S3 = 100,
45+
mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3 = 101
46+
} mouthware_message_DeviceBoard;
47+
2748
typedef enum _mouthware_message_PassThroughToMouthpadErrorCode {
2849
mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_UNSPECIFIED = 0,
2950
mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_TIMEOUT = 1,
@@ -86,8 +107,8 @@ typedef struct _mouthware_message_DeviceInfoResponse {
86107
pb_callback_t address; /* BLE MAC address */
87108
uint32_t vid; /* USB Vendor ID from PnP ID characteristic */
88109
uint32_t pid; /* USB Product ID from PnP ID characteristic */
89-
pb_callback_t family; /* Device family: "esp" or "nrf" */
90-
pb_callback_t board; /* Target board: e.g., "xiao_ble", "nrf52840dongle_nrf52840" */
110+
mouthware_message_DeviceFamily family; /* Device family */
111+
mouthware_message_DeviceBoard board; /* Target board */
91112
} mouthware_message_DeviceInfoResponse;
92113

93114
typedef struct _mouthware_message_ClearBondsResponse {
@@ -140,6 +161,14 @@ extern "C" {
140161
#define _mouthware_message_RelayBleConnectionStatus_MAX mouthware_message_RelayBleConnectionStatus_RELAY_CONNECTION_STATUS_CONNECTING
141162
#define _mouthware_message_RelayBleConnectionStatus_ARRAYSIZE ((mouthware_message_RelayBleConnectionStatus)(mouthware_message_RelayBleConnectionStatus_RELAY_CONNECTION_STATUS_CONNECTING+1))
142163

164+
#define _mouthware_message_DeviceFamily_MIN mouthware_message_DeviceFamily_DEVICE_FAMILY_UNSPECIFIED
165+
#define _mouthware_message_DeviceFamily_MAX mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP
166+
#define _mouthware_message_DeviceFamily_ARRAYSIZE ((mouthware_message_DeviceFamily)(mouthware_message_DeviceFamily_DEVICE_FAMILY_ESP+1))
167+
168+
#define _mouthware_message_DeviceBoard_MIN mouthware_message_DeviceBoard_DEVICE_BOARD_UNSPECIFIED
169+
#define _mouthware_message_DeviceBoard_MAX mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3
170+
#define _mouthware_message_DeviceBoard_ARRAYSIZE ((mouthware_message_DeviceBoard)(mouthware_message_DeviceBoard_DEVICE_BOARD_LILYGO_TDISPLAY_S3+1))
171+
143172
#define _mouthware_message_PassThroughToMouthpadErrorCode_MIN mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_UNSPECIFIED
144173
#define _mouthware_message_PassThroughToMouthpadErrorCode_MAX mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_INVALID_MESSAGE
145174
#define _mouthware_message_PassThroughToMouthpadErrorCode_ARRAYSIZE ((mouthware_message_PassThroughToMouthpadErrorCode)(mouthware_message_PassThroughToMouthpadErrorCode_PASS_THROUGH_TO_MOUTHPAD_ERROR_CODE_INVALID_MESSAGE+1))
@@ -153,6 +182,8 @@ extern "C" {
153182

154183
#define mouthware_message_BleConnectionStatusResponse_connection_status_ENUMTYPE mouthware_message_RelayBleConnectionStatus
155184

185+
#define mouthware_message_DeviceInfoResponse_family_ENUMTYPE mouthware_message_DeviceFamily
186+
#define mouthware_message_DeviceInfoResponse_board_ENUMTYPE mouthware_message_DeviceBoard
156187

157188

158189

@@ -169,7 +200,7 @@ extern "C" {
169200
#define mouthware_message_PassThroughToMouthpad_init_default {{0, {0}}}
170201
#define mouthware_message_AppToRelayMessage_init_default {_mouthware_message_AppToRelayMessageDestination_MIN, 0, {mouthware_message_BleConnectionStatusRead_init_default}}
171202
#define mouthware_message_BleConnectionStatusResponse_init_default {_mouthware_message_RelayBleConnectionStatus_MIN, 0, 0}
172-
#define mouthware_message_DeviceInfoResponse_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}}
203+
#define mouthware_message_DeviceInfoResponse_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, _mouthware_message_DeviceFamily_MIN, _mouthware_message_DeviceBoard_MIN}
173204
#define mouthware_message_ClearBondsResponse_init_default {0}
174205
#define mouthware_message_DfuResponse_init_default {0}
175206
#define mouthware_message_PassThroughToMouthpadResponse_init_default {_mouthware_message_PassThroughToMouthpadErrorCode_MIN}
@@ -182,7 +213,7 @@ extern "C" {
182213
#define mouthware_message_PassThroughToMouthpad_init_zero {{0, {0}}}
183214
#define mouthware_message_AppToRelayMessage_init_zero {_mouthware_message_AppToRelayMessageDestination_MIN, 0, {mouthware_message_BleConnectionStatusRead_init_zero}}
184215
#define mouthware_message_BleConnectionStatusResponse_init_zero {_mouthware_message_RelayBleConnectionStatus_MIN, 0, 0}
185-
#define mouthware_message_DeviceInfoResponse_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}}
216+
#define mouthware_message_DeviceInfoResponse_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, _mouthware_message_DeviceFamily_MIN, _mouthware_message_DeviceBoard_MIN}
186217
#define mouthware_message_ClearBondsResponse_init_zero {0}
187218
#define mouthware_message_DfuResponse_init_zero {0}
188219
#define mouthware_message_PassThroughToMouthpadResponse_init_zero {_mouthware_message_PassThroughToMouthpadErrorCode_MIN}
@@ -272,8 +303,8 @@ X(a, CALLBACK, SINGULAR, STRING, firmware, 2) \
272303
X(a, CALLBACK, SINGULAR, STRING, address, 3) \
273304
X(a, STATIC, SINGULAR, UINT32, vid, 4) \
274305
X(a, STATIC, SINGULAR, UINT32, pid, 5) \
275-
X(a, CALLBACK, SINGULAR, STRING, family, 6) \
276-
X(a, CALLBACK, SINGULAR, STRING, board, 7)
306+
X(a, STATIC, SINGULAR, UENUM, family, 6) \
307+
X(a, STATIC, SINGULAR, UENUM, board, 7)
277308
#define mouthware_message_DeviceInfoResponse_CALLBACK pb_default_field_callback
278309
#define mouthware_message_DeviceInfoResponse_DEFAULT NULL
279310

0 commit comments

Comments
 (0)