diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/auto/powerpc_accton_as5710_54x.yml b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/auto/powerpc_accton_as5710_54x.yml index e3a37d66..c9f356ab 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/auto/powerpc_accton_as5710_54x.yml +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/auto/powerpc_accton_as5710_54x.yml @@ -36,6 +36,14 @@ definitions: defs: *cdefs basename: powerpc_accton_as5710_54x_config + enum: + platform_id: + members: + - POWERPC_ACCTON_AS5710_54X_R0B: + strname : "powerpc-accton-as5710-54x-r0b" + - POWERPC_ACCTON_AS5710_54X_R0: + strname : "powerpc-accton-as5710-54x-r0" + portingmacro: POWERPC_ACCTON_AS5710_54X: macros: diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h index 75fa981f..9a1257d6 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h @@ -27,6 +27,7 @@ #define __PLATFORM_LIB_H__ #include "powerpc_accton_as5710_54x_log.h" +#include "powerpc_accton_as5710_54x_int.h" #define PSU1_ID 1 #define PSU2_ID 2 @@ -66,12 +67,6 @@ typedef enum psu_type { psu_type_t get_psu_type(int id, char* modelname, int modelname_len); -typedef enum platform_id_e { - PLATFORM_ID_UNKNOWN, - PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0, - PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_RX, -} platform_id_t; - extern platform_id_t platform_id; #endif /* __PLATFORM_LIB_H__ */ diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_enums.c b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_enums.c index bef1c06d..8606878d 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_enums.c +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_enums.c @@ -4,7 +4,61 @@ * *****************************************************************************/ #include +#include "powerpc_accton_as5710_54x_int.h" + +/* */ +aim_map_si_t platform_id_map[] = +{ + { "powerpc-accton-as5710-54x-r0b", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B }, + { "powerpc-accton-as5710-54x-r0", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0 }, + { NULL, 0 } +}; + +aim_map_si_t platform_id_desc_map[] = +{ + { "None", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B }, + { "None", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0 }, + { NULL, 0 } +}; + +const char* +platform_id_name(platform_id_t e) +{ + const char* name; + if(aim_map_si_i(&name, e, platform_id_map, 0)) { + return name; + } + else { + return "-invalid value for enum type 'platform_id'"; + } +} + +int +platform_id_value(const char* str, platform_id_t* e, int substr) +{ + int i; + AIM_REFERENCE(substr); + if(aim_map_si_s(&i, str, platform_id_map, 0)) { + /* Enum Found */ + *e = i; + return 0; + } + else { + return -1; + } +} + +const char* +platform_id_desc(platform_id_t e) +{ + const char* name; + if(aim_map_si_i(&name, e, platform_id_desc_map, 0)) { + return name; + } + else { + return "-invalid value for enum type 'platform_id'"; + } +} -/* <--auto.start.enum(ALL).source> */ /* */ diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_int.h b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_int.h index 4fee9fc4..d8220da8 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_int.h +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/powerpc_accton_as5710_54x_int.h @@ -8,5 +8,39 @@ #include +/* */ +/** platform_id */ +typedef enum platform_id_e { + PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B, + PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0, + PLATFORM_ID_LAST = PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0, + PLATFORM_ID_COUNT, + PLATFORM_ID_INVALID = -1, +} platform_id_t; + +/** Strings macro. */ +#define PLATFORM_ID_STRINGS \ +{\ + "powerpc-accton-as5710-54x-r0b", \ + "powerpc-accton-as5710-54x-r0", \ +} +/** Enum names. */ +const char* platform_id_name(platform_id_t e); + +/** Enum values. */ +int platform_id_value(const char* str, platform_id_t* e, int substr); + +/** Enum descriptions. */ +const char* platform_id_desc(platform_id_t e); + +/** validator */ +#define PLATFORM_ID_VALID(_e) \ + ( (0 <= (_e)) && ((_e) <= PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0)) + +/** platform_id_map table. */ +extern aim_map_si_t platform_id_map[]; +/** platform_id_desc_map table. */ +extern aim_map_si_t platform_id_desc_map[]; +/* */ #endif /* __POWERPC_ACCTON_AS5710_54X_INT_H__ */ diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c index 2f595a8d..d4c084d9 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c @@ -109,7 +109,7 @@ onlp_sfpi_port_map(int port, int* rport) * SFP port numbers here are 0-based. */ - if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0) { + if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B) { switch(port) { case 48: @@ -146,7 +146,7 @@ onlp_sfpi_port_map(int port, int* rport) static void port_qsfp_cpld_map__(int port, int* rport) { - if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_RX) { + if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0) { switch(port) { case 53: diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sysi.c b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sysi.c index ce7efa8d..88420922 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sysi.c @@ -34,12 +34,13 @@ #include #include #include "platform_lib.h" +#include "powerpc_accton_as5710_54x_int.h" #define HW_INFO_PATH "/dev/mtd1" #define HW_INFO_LENGTH 2*65536 uint8_t hw_info[HW_INFO_LENGTH]={0}; -platform_id_t platform_id = PLATFORM_ID_UNKNOWN; +platform_id_t platform_id = PLATFORM_ID_INVALID; const char* onlp_sysi_platform_get(void) @@ -50,12 +51,8 @@ onlp_sysi_platform_get(void) int onlp_sysi_platform_set(const char* platform) { - if(strstr(platform, "powerpc-accton-as5710-54x-r")) { - platform_id = PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_RX; - return ONLP_STATUS_OK; - } - if(strstr(platform, "powerpc-as5710-54x-r0b")) { - platform_id = PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0; + if(platform_id_value(platform, &platform_id, 0) == 0) { + /* Platform supported */ return ONLP_STATUS_OK; } AIM_LOG_ERROR("No support for platform '%s'", platform);