On Fri, 12 Apr 2019 12:49:44 -0600 Raul E Rangel <rrangel@xxxxxxxxxxxx> wrote: > +#define ec_cmds \ > + {EC_CMD_PROTO_VERSION, "PROTO_VERSION"}, \ > + {EC_CMD_HELLO, "HELLO"}, \ > + {EC_CMD_GET_VERSION, "GET_VERSION"}, \ > + {EC_CMD_READ_TEST, "READ_TEST"}, \ > + {EC_CMD_GET_BUILD_INFO, "GET_BUILD_INFO"}, \ > + {EC_CMD_GET_CHIP_INFO, "GET_CHIP_INFO"}, \ > + {EC_CMD_GET_BOARD_VERSION, "GET_BOARD_VERSION"}, \ > + {EC_CMD_READ_MEMMAP, "READ_MEMMAP"}, \ > + {EC_CMD_GET_CMD_VERSIONS, "GET_CMD_VERSIONS"}, \ > + {EC_CMD_GET_COMMS_STATUS, "GET_COMMS_STATUS"}, \ > + {EC_CMD_TEST_PROTOCOL, "TEST_PROTOCOL"}, \ > + {EC_CMD_GET_PROTOCOL_INFO, "GET_PROTOCOL_INFO"}, \ > + {EC_CMD_GSV_PAUSE_IN_S5, "GSV_PAUSE_IN_S5"}, \ > + {EC_CMD_GET_FEATURES, "GET_FEATURES"}, \ Usually, if I have something like this, I would do: #define ec_cmds \ EC(PROTO_VERSION), \ EC(HELLO), \ EC(GET_VERSION), \ EC(READ_TEST), \ [...] Then: #define EC(a) {EC_CMD_##a, #a} and then ec_cmds ends up with the same result with much less typing and little risk for copy past errors. -- Steve