From 09633ae72c8fba069d0e90f174c0124e36a35582 Mon Sep 17 00:00:00 2001 From: Brandon Chuang Date: Tue, 6 Mar 2018 16:24:44 +0800 Subject: [PATCH] [as7716-32x] Support PSU serial number --- .../onlp/builds/src/module/src/platform_lib.c | 27 +++++++++++++++++++ .../onlp/builds/src/module/src/platform_lib.h | 1 + .../onlp/builds/src/module/src/psui.c | 2 ++ 3 files changed, 30 insertions(+) diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.c b/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.c index b4ef2d04..ea139ae7 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.c @@ -23,6 +23,8 @@ * * ***********************************************************/ +#include +#include #include #include #include @@ -198,3 +200,28 @@ psu_type_t get_psu_type(int id, char* modelname, int modelname_len) return PSU_TYPE_UNKNOWN; } + +#define PSU_SERIAL_NUMBER_LEN 18 + +int psu_serial_number_get(int id, char *serial, int serial_len) +{ + int size = 0; + int ret = ONLP_STATUS_OK; + char *prefix = NULL; + + if (serial == NULL || serial_len < PSU_SERIAL_NUMBER_LEN) { + return ONLP_STATUS_E_PARAM; + } + + prefix = (id == PSU1_ID) ? PSU1_AC_PMBUS_PREFIX : PSU2_AC_PMBUS_PREFIX; + + ret = onlp_file_read((uint8_t*)serial, PSU_SERIAL_NUMBER_LEN, &size, "%s%s", prefix, "psu_mfr_serial"); + if (ret != ONLP_STATUS_OK || size != PSU_SERIAL_NUMBER_LEN) { + return ONLP_STATUS_E_INTERNAL; + + } + + serial[PSU_SERIAL_NUMBER_LEN] = '\0'; + return ONLP_STATUS_OK; +} + diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.h b/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.h index 6c88df33..d6d367ed 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.h +++ b/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/platform_lib.h @@ -64,6 +64,7 @@ typedef enum psu_type { } psu_type_t; psu_type_t get_psu_type(int id, char* modelname, int modelname_len); +int psu_serial_number_get(int id, char *serial, int serial_len); #define DEBUG_MODE 0 diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/psui.c b/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/psui.c index 562901d2..f12f6e8e 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/psui.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as7716-32x/onlp/builds/src/module/src/psui.c @@ -128,6 +128,8 @@ psu_ym2651_info_get(onlp_psu_info_t* info) info->caps |= ONLP_PSU_CAPS_POUT; } + psu_serial_number_get(index, info->serial, sizeof(info->serial)); + return ONLP_STATUS_OK; }