Make index of getters and setters using enumeration called board_params_e.
It allows specific getter and setter functions to be referenced directly through the
board_params_e enum.
The index of board_params is like below:
{
BOARD_PARAMS_BOOT_NONE = -1,
BOARD_PARAMS_BOOT_MODE = 0,
BOARD_PARAMS_CURRENT_PARTITION,
BOARD_PARAMS_PARTITION_AB,
BOARD_PARAMS_PARTITION_AB_CLONED,
BOARD_PARAMS_PARTITION_STATUS,
BOARD_PARAMS_UPGRADE_PROGRESS_STATUS,
BOARD_PARAMS_UPGRADE_STATE,
BOARD_PARAMS_UPGRADE_TYPE,
BOARD_PARAMS_MAX,
}
BOARD_PARAMS_BOOT_NONE: index before real board param
BOARD_PARAMS_UPGRADE_TYPE ~ BOARD_PARAMS_UPGRADE_TYPE: index of real board param
BOARD_PARAMS_MAX: index after real board param
Change-Id: I4fc1ecc285cec8fa1205d7a1c31b6a78f98e108d
Signed-off-by: Unsung Lee <unsung.lee@samsung.com>
#include "board-params-getter.h"
#include "board-params-util.h"
+#include "board-params.h"
#define BOARD_PARAM_PARAMS_LEN 2
return hal_device_board_get_upgrade_type(buffer, buffer_size);
}
-static struct board_param_getter getters[] = {
- {
+static struct board_param_getter g_getters[] = {
+ [BOARD_PARAMS_BOOT_MODE] = {
.param_name = "boot-mode",
.description = "Get boot mode.",
.getter = boot_mode_getter
- }, {
+ },
+ [BOARD_PARAMS_CURRENT_PARTITION] = {
.param_name = "current-partition",
.description = "Get current partition (a or b)",
.getter = current_partition_getter
- }, {
+ },
+ [BOARD_PARAMS_PARTITION_AB] = {
+ .param_name = "none",
+ .description = "None",
+ .getter = NULL
+ },
+ [BOARD_PARAMS_PARTITION_AB_CLONED] = {
.param_name = "partition-ab-cloned",
.description = "Get partition is cloned or not: 1 is cloned, 0 is not cloned.",
.getter = partition_ab_cloned_getter
- }, {
+ },
+ [BOARD_PARAMS_PARTITION_STATUS] = {
.param_name = "partition-status",
.description = "Get partition status. 1 param is required: 'a' or 'b'.",
.getter = partition_status_getter
- }, {
+ },
+ [BOARD_PARAMS_UPGRADE_PROGRESS_STATUS] = {
.param_name = "upgrade-progress-status",
.description = "Get current upgrade progress status: -1 ~ 100",
.getter = upgrade_progress_status_getter
- }, {
+ },
+ [BOARD_PARAMS_UPGRADE_STATE] = {
.param_name = "upgrade-state",
.description = "Get current upgrade state.",
.getter = upgrade_state_getter
- }, {
+ },
+ [BOARD_PARAMS_UPGRADE_TYPE] = {
.param_name = "upgrade-type",
.description = "Get current upgrade type: offline or online",
.getter = upgrade_type_getter
- }, {
+ },
+ [BOARD_PARAMS_MAX] = {
/* sentinel for this array */
.param_name = NULL,
.description = NULL,
{
size_t param_name_len = strlen(param_name);
- for (int i = 0; getters[i].param_name != NULL; ++i) {
- if (strncmp(getters[i].param_name, param_name, param_name_len + 1) == 0) {
- *board_param_getter = &getters[i];
+ for (int i = 0; g_getters[i].param_name != NULL; ++i) {
+ if (g_getters[i].getter == NULL)
+ continue;
+
+ if (strncmp(g_getters[i].param_name, param_name, param_name_len + 1) == 0) {
+ *board_param_getter = &g_getters[i];
return 0;
}
}
static void print_board_param_getters(void)
{
printf("Available getter board params:\n");
- for (int i = 0; getters[i].param_name != NULL; ++i) {
- if (getters[i].getter == NULL)
+ for (int i = 0; g_getters[i].param_name != NULL; ++i) {
+ if (g_getters[i].getter == NULL)
continue;
- printf(" %s: %s\n", getters[i].param_name, getters[i].description);
+ printf(" %s: %s\n", g_getters[i].param_name, g_getters[i].description);
}
printf("\n"
#include "board-params-setter.h"
#include "board-params-util.h"
+#include "board-params.h"
#define BOARD_PARAM_PARAMS_LEN 3
return hal_device_board_set_upgrade_state(state_from, state_to);
}
-static struct board_param_setter setters[] = {
- {
+static struct board_param_setter g_setters[] = {
+ [BOARD_PARAMS_BOOT_MODE] = {
+ .param_name = "none",
+ .description = "None",
+ .setter = NULL
+ },
+ [BOARD_PARAMS_CURRENT_PARTITION] = {
+ .param_name = "none",
+ .description = "None",
+ .setter = NULL
+ },
+ [BOARD_PARAMS_PARTITION_AB] = {
.param_name = "partition-ab",
.description = "Switch partition between a/b. "
"1 param is required: <a, b or toggle>",
.setter = partition_ab_setter
- }, {
+ },
+ [BOARD_PARAMS_PARTITION_AB_CLONED] = {
.param_name = "partition-ab-cloned",
.description = "Set cloned flag 0 or 1. "
"1 param is required: <0 or 1>",
.setter = partition_ab_cloned_setter
- }, {
+ },
+ [BOARD_PARAMS_PARTITION_STATUS] = {
.param_name = "partition-status",
.description = "Set partition status. "
"2 params are required: <a, b>,<ok, failed or corrupted>",
.setter = partition_status_setter
- }, {
+ },
+ [BOARD_PARAMS_UPGRADE_PROGRESS_STATUS] = {
.param_name = "upgrade-progress-status",
.description = "Set upgrade progress status. 1 integer is requied: <-1 ~ 100>",
.setter = upgrade_progress_status_setter
- }, {
+ },
+ [BOARD_PARAMS_UPGRADE_TYPE] = {
.param_name = "upgrade-type",
.description = "Set upgrade type. 1 param is required: <online or offline>",
.setter = upgrade_type_setter
- }, {
+ },
+ [BOARD_PARAMS_UPGRADE_STATE] = {
.param_name = "upgrade-state",
.description = "Set upgrade state. 2 params are required.",
.setter = upgrade_state_setter
- }, {
+ },
+ [BOARD_PARAMS_MAX] = {
/* sentinel for this array */
.param_name = NULL,
.description = NULL,
{
size_t param_name_len = strlen(param_name);
- for (int i = 0; setters[i].param_name != NULL; ++i) {
- if (strncmp(setters[i].param_name, param_name, param_name_len + 1) == 0) {
- *board_param_setter = &setters[i];
+ for (int i = 0; g_setters[i].param_name != NULL; ++i) {
+ if (g_setters[i].setter == NULL)
+ continue;
+
+ if (strncmp(g_setters[i].param_name, param_name, param_name_len + 1) == 0) {
+ *board_param_setter = &g_setters[i];
return 0;
}
}
static void print_board_param_setters(void)
{
printf("Available board params:\n");
- for (int i = 0; setters[i].param_name != NULL; ++i) {
- if (setters[i].setter == NULL)
+ for (int i = 0; g_setters[i].param_name != NULL; ++i) {
+ if (g_setters[i].setter == NULL)
continue;
- printf(" %s: %s\n", setters[i].param_name, setters[i].description);
+ printf(" %s: %s\n", g_setters[i].param_name, g_setters[i].description);
}
printf("\n"
#include "board-params-getter.h"
#include "board-params-setter.h"
+
+typedef enum {
+ BOARD_PARAMS_BOOT_NONE = -1,
+ BOARD_PARAMS_BOOT_MODE = 0,
+ BOARD_PARAMS_CURRENT_PARTITION,
+ BOARD_PARAMS_PARTITION_AB,
+ BOARD_PARAMS_PARTITION_AB_CLONED,
+ BOARD_PARAMS_PARTITION_STATUS,
+ BOARD_PARAMS_UPGRADE_PROGRESS_STATUS,
+ BOARD_PARAMS_UPGRADE_STATE,
+ BOARD_PARAMS_UPGRADE_TYPE,
+ BOARD_PARAMS_MAX,
+} board_params_e;