mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-12-24 16:57:02 +00:00
Various API fixups and enhancements.
This commit is contained in:
@@ -112,14 +112,21 @@ int onlp_fan_sw_denit(void);
|
||||
* @param id The fan OID.
|
||||
* @param[out] hdr Receives the OID header.
|
||||
*/
|
||||
int onlp_fan_hdr_get(onlp_oid_t id, onlp_oid_hdr_t* hdr);
|
||||
int onlp_fan_hdr_get(onlp_oid_t oid, onlp_oid_hdr_t* hdr);
|
||||
|
||||
/**
|
||||
* @brief Retrieve fan information.
|
||||
* @param id The fan OID.
|
||||
* @param[out] rv Receives the fan information.
|
||||
*/
|
||||
int onlp_fan_info_get(onlp_oid_t id, onlp_fan_info_t* rv);
|
||||
int onlp_fan_info_get(onlp_oid_t oid, onlp_fan_info_t* rv);
|
||||
|
||||
/**
|
||||
* @brief Retrieve the fan capabilities.
|
||||
* @param id The fan OID.
|
||||
* @param[out] rv Receives the fan capabilities.
|
||||
*/
|
||||
int onlp_fan_caps_get(onlp_oid_t oid, uint32_t* caps);
|
||||
|
||||
/**
|
||||
* @brief Set the fan speed in RPMs.
|
||||
@@ -127,7 +134,7 @@ int onlp_fan_info_get(onlp_oid_t id, onlp_fan_info_t* rv);
|
||||
* @param rpm The new RPM.
|
||||
* @note Only valid if the fan has the SET_RPM capability.
|
||||
*/
|
||||
int onlp_fan_rpm_set(onlp_oid_t id, int rpm);
|
||||
int onlp_fan_rpm_set(onlp_oid_t oid, int rpm);
|
||||
|
||||
/**
|
||||
* @brief Set the fan speed in percentage.
|
||||
@@ -135,7 +142,7 @@ int onlp_fan_rpm_set(onlp_oid_t id, int rpm);
|
||||
* @param p The percentage.
|
||||
* @note Only valid if the fan has the SET_PERCENTAGE capability.
|
||||
*/
|
||||
int onlp_fan_percentage_set(onlp_oid_t id, int p);
|
||||
int onlp_fan_percentage_set(onlp_oid_t oid, int p);
|
||||
|
||||
/**
|
||||
* @brief Set the fan direction.
|
||||
@@ -143,7 +150,7 @@ int onlp_fan_percentage_set(onlp_oid_t id, int p);
|
||||
* @param dir The fan direction (B2F or F2B)
|
||||
* @note Only called if both capabilities are set.
|
||||
*/
|
||||
int onlp_fan_dir_set(onlp_oid_t id, onlp_fan_dir_t dir);
|
||||
int onlp_fan_dir_set(onlp_oid_t oid, onlp_fan_dir_t dir);
|
||||
|
||||
/**
|
||||
* @brief Convert a fan info structure to user JSON.
|
||||
|
||||
@@ -128,6 +128,13 @@ int onlp_led_hdr_get(onlp_oid_t id, onlp_oid_hdr_t* rv);
|
||||
*/
|
||||
int onlp_led_info_get(onlp_oid_t id, onlp_led_info_t* rv);
|
||||
|
||||
/**
|
||||
* @brief Get the LED caps.
|
||||
* @param id The LED OID.
|
||||
* @param[out] rv Receives the caps.
|
||||
*/
|
||||
int onlp_led_caps_get(onlp_oid_t oid, uint32_t* caps);
|
||||
|
||||
/**
|
||||
* @brief Set the LED mode.
|
||||
* @param id The LED OID.
|
||||
|
||||
@@ -51,18 +51,25 @@ int onlp_fani_sw_denit(void);
|
||||
|
||||
/**
|
||||
* @brief Retrieve the fan's OID hdr.
|
||||
* @param id The fan OID.
|
||||
* @param id The fan id.
|
||||
* @param[out] hdr Receives the OID header.
|
||||
*/
|
||||
int onlp_fani_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* hdr);
|
||||
|
||||
/**
|
||||
* @brief Get the information structure for the given fan OID.
|
||||
* @param id The fan OID
|
||||
* @param id The fan id
|
||||
* @param[out] rv Receives the fan information.
|
||||
*/
|
||||
int onlp_fani_info_get(onlp_oid_id_t id, onlp_fan_info_t* rv);
|
||||
|
||||
/**
|
||||
* @brief Get the fan capabilities.
|
||||
* @param id The fan id.
|
||||
* @param[out] rv The fan capabilities
|
||||
*/
|
||||
int onlp_fani_caps_get(onlp_oid_id_t id, uint32_t* rv);
|
||||
|
||||
/**
|
||||
* @brief Set the fan speed in RPM.
|
||||
* @param id The fan OID
|
||||
|
||||
@@ -60,6 +60,13 @@ int onlp_ledi_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv);
|
||||
*/
|
||||
int onlp_ledi_info_get(onlp_oid_id_t id, onlp_led_info_t* rv);
|
||||
|
||||
/**
|
||||
* @brief Get the caps for the given LED
|
||||
* @param id The LED ID
|
||||
* @param[out] rv Receives the caps.
|
||||
*/
|
||||
int onlp_ledi_caps_get(onlp_oid_id_t id, uint32_t* rv);
|
||||
|
||||
/**
|
||||
* @brief Set the LED mode.
|
||||
* @param id The LED OID
|
||||
|
||||
@@ -108,11 +108,8 @@ onlp_attribute_onie_info_get(onlp_oid_t oid, onlp_onie_info_t** rvp)
|
||||
int rv;
|
||||
onlp_onie_info_t* rp;
|
||||
|
||||
rv = onlp_attributei_onie_info_get(oid, NULL);
|
||||
|
||||
if(ONLP_FAILURE(rv) || rvp == NULL) {
|
||||
return rv;
|
||||
}
|
||||
ONLP_PTR_VALIDATE_ZERO(rvp);
|
||||
ONLP_TRY(onlp_attributei_onie_info_get(oid, NULL));
|
||||
|
||||
rp = aim_zmalloc(sizeof(*rp));
|
||||
rv = onlp_attributei_onie_info_get(oid, rp);
|
||||
@@ -188,11 +185,8 @@ onlp_attribute_asset_info_get(onlp_oid_t oid, onlp_asset_info_t** rvp)
|
||||
int rv;
|
||||
onlp_asset_info_t* rp;
|
||||
|
||||
rv = onlp_attributei_asset_info_get(oid, NULL);
|
||||
|
||||
if(ONLP_FAILURE(rv) || rvp == NULL) {
|
||||
return rv;
|
||||
}
|
||||
ONLP_PTR_VALIDATE_ZERO(rvp);
|
||||
ONLP_TRY(onlp_attributei_asset_info_get(oid, NULL));
|
||||
|
||||
rp = aim_zmalloc(sizeof(*rp));
|
||||
rv = onlp_attributei_asset_info_get(oid, rp);
|
||||
|
||||
@@ -64,11 +64,17 @@ ONLP_LOCKED_API0(onlp_fan_sw_denit);
|
||||
static int
|
||||
onlp_fan_hdr_get_locked__(onlp_oid_t oid, onlp_oid_hdr_t* hdr)
|
||||
{
|
||||
ONLP_OID_FAN_VALIDATE(oid);
|
||||
int rv;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_FAN_VALIDATE_GET_ID(oid, id);
|
||||
ONLP_PTR_VALIDATE_ZERO(hdr);
|
||||
return onlp_log_error(0,
|
||||
onlp_fani_hdr_get(oid, hdr),
|
||||
"fani hdr get %{onlp_oid}", oid);
|
||||
|
||||
rv = onlp_log_error(0,
|
||||
onlp_fani_hdr_get(id, hdr),
|
||||
"fani hdr get %{onlp_oid}", oid);
|
||||
hdr->id = oid;
|
||||
return rv;
|
||||
}
|
||||
ONLP_LOCKED_API2(onlp_fan_hdr_get, onlp_oid_t, oid, onlp_oid_hdr_t*, hdr);
|
||||
|
||||
@@ -76,26 +82,59 @@ ONLP_LOCKED_API2(onlp_fan_hdr_get, onlp_oid_t, oid, onlp_oid_hdr_t*, hdr);
|
||||
* Fan Info Get
|
||||
*/
|
||||
static int
|
||||
onlp_fan_info_get_locked__(onlp_oid_t oid, onlp_fan_info_t* fip)
|
||||
onlp_fan_info_get_locked__(onlp_oid_t oid, onlp_fan_info_t* info)
|
||||
{
|
||||
ONLP_OID_FAN_VALIDATE(oid);
|
||||
ONLP_PTR_VALIDATE_ZERO(fip);
|
||||
return onlp_log_error(0,
|
||||
onlp_fani_info_get(oid, fip),
|
||||
"fani info get %{onlp_oid}", oid);
|
||||
int rv;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_FAN_VALIDATE_GET_ID(oid, id);
|
||||
ONLP_PTR_VALIDATE_ZERO(info);
|
||||
|
||||
rv = onlp_log_error(0,
|
||||
onlp_fani_info_get(id, info),
|
||||
"fani info get %{onlp_oid}", oid);
|
||||
|
||||
info->hdr.id = oid;
|
||||
return rv;
|
||||
}
|
||||
ONLP_LOCKED_API2(onlp_fan_info_get, onlp_oid_t, oid, onlp_fan_info_t*, fip);
|
||||
ONLP_LOCKED_API2(onlp_fan_info_get, onlp_oid_t, oid, onlp_fan_info_t*, info);
|
||||
|
||||
/**
|
||||
* Fan Caps Get
|
||||
*/
|
||||
static int
|
||||
onlp_fan_caps_get_locked__(onlp_oid_t oid, uint32_t* rv)
|
||||
{
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_FAN_VALIDATE_GET_ID(oid, id);
|
||||
ONLP_PTR_VALIDATE_ZERO(rv);
|
||||
|
||||
return onlp_log_error(0,
|
||||
onlp_fani_caps_get(id, rv),
|
||||
"fani caps get %{onlp_oid}", oid);
|
||||
}
|
||||
ONLP_LOCKED_API2(onlp_fan_caps_get, onlp_oid_t, oid, uint32_t*, rv);
|
||||
|
||||
|
||||
static int
|
||||
onlp_fan_rpm_set_locked__(onlp_oid_t id, int rpm)
|
||||
onlp_fan_rpm_set_locked__(onlp_oid_t oid, int rpm)
|
||||
{
|
||||
onlp_fan_info_t info;
|
||||
uint32_t caps = 0;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_FAN_VALIDATE(id);
|
||||
ONLP_TRY(onlp_fani_info_get(id, &info));
|
||||
|
||||
if(info.caps & ONLP_FAN_CAPS_SET_RPM) {
|
||||
return onlp_fani_rpm_set(id, rpm);
|
||||
ONLP_OID_FAN_VALIDATE_GET_ID(oid, id);
|
||||
|
||||
ONLP_TRY(onlp_log_error(0,
|
||||
onlp_fan_caps_get_locked__(oid, &caps),
|
||||
"fan rpm set %{onlp_oid} %d: could not get fan caps",
|
||||
oid, rpm));
|
||||
|
||||
if(caps & ONLP_FAN_CAPS_SET_RPM) {
|
||||
return onlp_log_error(0,
|
||||
onlp_fani_rpm_set(id, rpm),
|
||||
"fani rpm set %{onlp_oid} %d", oid, rpm);
|
||||
}
|
||||
else {
|
||||
return ONLP_STATUS_E_UNSUPPORTED;
|
||||
@@ -104,12 +143,19 @@ onlp_fan_rpm_set_locked__(onlp_oid_t id, int rpm)
|
||||
ONLP_LOCKED_API2(onlp_fan_rpm_set, onlp_oid_t, id, int, rpm);
|
||||
|
||||
static int
|
||||
onlp_fan_percentage_set_locked__(onlp_oid_t id, int p)
|
||||
onlp_fan_percentage_set_locked__(onlp_oid_t oid, int p)
|
||||
{
|
||||
onlp_fan_info_t info;
|
||||
ONLP_OID_FAN_VALIDATE(id);
|
||||
ONLP_TRY(onlp_fani_info_get(id, &info));
|
||||
if(info.caps & ONLP_FAN_CAPS_SET_PERCENTAGE) {
|
||||
uint32_t caps = 0;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_FAN_VALIDATE_GET_ID(oid, id);
|
||||
|
||||
ONLP_TRY(onlp_log_error(0,
|
||||
onlp_fan_caps_get_locked__(oid, &caps),
|
||||
"fan percentage set %{onlp_oid} %d: could not get fan caps",
|
||||
oid, p));
|
||||
|
||||
if(caps & ONLP_FAN_CAPS_SET_PERCENTAGE) {
|
||||
return onlp_fani_percentage_set(id, p);
|
||||
}
|
||||
else {
|
||||
@@ -119,12 +165,19 @@ onlp_fan_percentage_set_locked__(onlp_oid_t id, int p)
|
||||
ONLP_LOCKED_API2(onlp_fan_percentage_set, onlp_oid_t, id, int, p);
|
||||
|
||||
static int
|
||||
onlp_fan_dir_set_locked__(onlp_oid_t id, onlp_fan_dir_t dir)
|
||||
onlp_fan_dir_set_locked__(onlp_oid_t oid, onlp_fan_dir_t dir)
|
||||
{
|
||||
onlp_fan_info_t info;
|
||||
ONLP_OID_FAN_VALIDATE(id);
|
||||
ONLP_TRY(onlp_fani_info_get(id, &info));
|
||||
if(info.caps & ONLP_FAN_CAPS_SET_DIR) {
|
||||
onlp_oid_id_t id;
|
||||
uint32_t caps = 0;
|
||||
|
||||
ONLP_OID_FAN_VALIDATE_GET_ID(oid, id);
|
||||
|
||||
ONLP_TRY(onlp_log_error(0,
|
||||
onlp_fani_caps_get(id, &caps),
|
||||
"fan dir set %{onlp_oid} %{onlp_fan_dir}: could not get fan caps",
|
||||
oid, dir));
|
||||
|
||||
if(caps & ONLP_FAN_CAPS_SET_DIR) {
|
||||
return onlp_fani_dir_set(id, dir);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -29,31 +29,6 @@
|
||||
#include "onlp_int.h"
|
||||
#include "onlp_locks.h"
|
||||
|
||||
static int
|
||||
onlp_led_present__(onlp_oid_t id, onlp_led_info_t* info)
|
||||
{
|
||||
int rv;
|
||||
|
||||
/* Info retrieval required. */
|
||||
rv = onlp_ledi_info_get(id, info);
|
||||
if(rv < 0) {
|
||||
return rv;
|
||||
}
|
||||
/* The led must be present. */
|
||||
if((info->hdr.status & 0x1) == 0) {
|
||||
return ONLP_STATUS_E_MISSING;
|
||||
}
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
#define ONLP_LED_PRESENT_OR_RETURN(_id, _info) \
|
||||
do { \
|
||||
int _rv = onlp_led_present__(_id, _info); \
|
||||
if(_rv < 0) { \
|
||||
return _rv; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
|
||||
static int
|
||||
onlp_led_sw_init_locked__(void)
|
||||
{
|
||||
@@ -102,16 +77,34 @@ ONLP_LOCKED_API2(onlp_led_info_get, onlp_oid_t, id, onlp_led_info_t*, info);
|
||||
|
||||
|
||||
static int
|
||||
onlp_led_mode_set_locked__(onlp_oid_t id, onlp_led_mode_t mode)
|
||||
onlp_led_caps_get_locked__(onlp_oid_t oid, uint32_t* rv)
|
||||
{
|
||||
onlp_led_info_t info;
|
||||
ONLP_LED_PRESENT_OR_RETURN(id, &info);
|
||||
onlp_oid_id_t id;
|
||||
|
||||
/*
|
||||
* The mode enumeration values always match
|
||||
* the capability bit positions.
|
||||
*/
|
||||
if(info.caps & (1 << mode)) {
|
||||
ONLP_OID_LED_VALIDATE_GET_ID(oid, id);
|
||||
ONLP_PTR_VALIDATE_ZERO(rv);
|
||||
|
||||
return onlp_log_error(0,
|
||||
onlp_ledi_caps_get(id, rv),
|
||||
"ledi caps get %{onlp_oid}", oid);
|
||||
}
|
||||
ONLP_LOCKED_API2(onlp_led_caps_get, onlp_oid_t, oid, uint32_t*, rv);
|
||||
|
||||
|
||||
static int
|
||||
onlp_led_mode_set_locked__(onlp_oid_t oid, onlp_led_mode_t mode)
|
||||
{
|
||||
uint32_t caps = 0;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_LED_VALIDATE_GET_ID(oid, id);
|
||||
|
||||
ONLP_TRY(onlp_log_error(0,
|
||||
onlp_led_caps_get_locked__(oid, &caps),
|
||||
"led mode set %{onlp_oid} %{onlp_led_mode}: could not get led caps.",
|
||||
oid, mode));
|
||||
|
||||
if(caps & (1 << mode)) {
|
||||
return onlp_ledi_mode_set(id, mode);
|
||||
}
|
||||
else {
|
||||
@@ -121,16 +114,19 @@ onlp_led_mode_set_locked__(onlp_oid_t id, onlp_led_mode_t mode)
|
||||
ONLP_LOCKED_API2(onlp_led_mode_set, onlp_oid_t, id, onlp_led_mode_t, mode);
|
||||
|
||||
static int
|
||||
onlp_led_char_set_locked__(onlp_oid_t id, char c)
|
||||
onlp_led_char_set_locked__(onlp_oid_t oid, char c)
|
||||
{
|
||||
onlp_led_info_t info;
|
||||
ONLP_LED_PRESENT_OR_RETURN(id, &info);
|
||||
uint32_t caps = 0;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
/*
|
||||
* The mode enumeration values always match
|
||||
* the capability bit positions.
|
||||
*/
|
||||
if(info.caps & ONLP_LED_CAPS_CHAR) {
|
||||
ONLP_OID_LED_VALIDATE_GET_ID(oid, id);
|
||||
|
||||
ONLP_TRY(onlp_log_error(0,
|
||||
onlp_led_caps_get_locked__(oid, &caps),
|
||||
"led char set %{onlp_oid} %c: could not get led caps.",
|
||||
oid, c));
|
||||
|
||||
if(caps & ONLP_LED_CAPS_CHAR) {
|
||||
return onlp_ledi_char_set(id, c);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -57,6 +57,25 @@ onlp_aim_fs__onlp_oid(aim_datatype_context_t* dtc,
|
||||
return AIM_DATATYPE_ERROR;
|
||||
}
|
||||
|
||||
static int
|
||||
onlp_aim_fs__onlp_oid_type(aim_datatype_context_t* dtc,
|
||||
const char* arg, aim_va_list_t* vargs)
|
||||
{
|
||||
onlp_oid_t* oidp = va_arg(vargs->val, onlp_oid_t*);
|
||||
onlp_oid_type_t oid_type = va_arg(vargs->val, onlp_oid_type_t);
|
||||
|
||||
AIM_REFERENCE(dtc);
|
||||
|
||||
if(ONLP_SUCCESS(onlp_oid_from_str((char*)arg, oidp))) {
|
||||
/** Full formed OID */
|
||||
return AIM_DATATYPE_OK;
|
||||
}
|
||||
|
||||
/** Use the given default */
|
||||
*oidp = ONLP_OID_TYPE_CREATE(oid_type, atoi(arg));
|
||||
return AIM_DATATYPE_OK;
|
||||
}
|
||||
|
||||
static int
|
||||
onlp_aim_ts__onlp_oid_hdr(aim_datatype_context_t* dtc, aim_va_list_t* vargs,
|
||||
const char** rv)
|
||||
@@ -88,6 +107,10 @@ datatypes_init__(void)
|
||||
"ONLP OID Header",
|
||||
NULL,
|
||||
onlp_aim_ts__onlp_oid_hdr, NULL);
|
||||
aim_datatype_register(0, "onlp_oid_type",
|
||||
"ONLP OID",
|
||||
onlp_aim_fs__onlp_oid_type,
|
||||
NULL, NULL);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -115,7 +115,7 @@ static ucli_status_t
|
||||
onlp_ucli__chassis__debug__show__(ucli_context_t* uc)
|
||||
{
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"debug", 0,
|
||||
"show", 0,
|
||||
"Dump all chassis OIDs.");
|
||||
onlp_chassis_debug_show(&uc->pvs);
|
||||
return 0;
|
||||
@@ -280,6 +280,149 @@ onlp_ucli__sfp__inventory__(ucli_context_t* uc)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__sfp__dev__read__(ucli_context_t* uc)
|
||||
{
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"read", 4,
|
||||
"$summary#Read bytes from the given addresses.");
|
||||
int rv;
|
||||
onlp_oid_t port;
|
||||
int devaddr;
|
||||
int addr; int size;
|
||||
uint8_t* data;
|
||||
|
||||
UCLI_ARGPARSE_OR_RETURN(uc, "{onlp_oid_type}iii",
|
||||
&port, ONLP_OID_TYPE_SFP, &devaddr, &addr, &size);
|
||||
if(ONLP_SUCCESS(rv = onlp_sfp_dev_alloc_read(port, devaddr, addr, size, &data))) {
|
||||
ucli_printf(uc, "%{data}\n", data, size);
|
||||
aim_free(data);
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_status}\n", rv);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__sfp__bitmaps__(ucli_context_t* uc)
|
||||
{
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"bitmaps", 0,
|
||||
"$summary#Show SFP Presence and RX_LOS bitmaps.");
|
||||
|
||||
int rv;
|
||||
onlp_sfp_bitmap_t bmap;
|
||||
|
||||
ucli_printf(uc, "Presence: ");
|
||||
if(ONLP_SUCCESS(rv = onlp_sfp_presence_bitmap_get(&bmap))) {
|
||||
ucli_printf(uc, "%{aim_bitmap}\n", &bmap);
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_status}\n", rv);
|
||||
}
|
||||
|
||||
ucli_printf(uc, "RX_LOS: ");
|
||||
if(ONLP_SUCCESS(rv = onlp_sfp_rx_los_bitmap_get(&bmap))) {
|
||||
ucli_printf(uc, "%{aim_bitmap}\n", &bmap);
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_status}\n", rv);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__fan__rpm__get(ucli_context_t* uc)
|
||||
{
|
||||
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"get", 1,
|
||||
"$summary#Show the RPM for the given fan.");
|
||||
|
||||
int rv;
|
||||
onlp_oid_t oid;
|
||||
onlp_fan_info_t info;
|
||||
|
||||
UCLI_ARGPARSE_OR_RETURN(uc, "{onlp_oid_type}", &oid, ONLP_OID_TYPE_FAN);
|
||||
|
||||
if(ONLP_SUCCESS(rv = onlp_fan_info_get(oid, &info))) {
|
||||
if(info.caps & ONLP_FAN_CAPS_GET_RPM) {
|
||||
ucli_printf(uc, "%{onlp_oid} rpm = %d\n", oid, info.rpm);
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_oid} does not support rpm.\n", oid);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_status}\n", rv);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__fan__rpm__set(ucli_context_t* uc)
|
||||
{
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"set", 2,
|
||||
"$summary#Set the RPM for the given fan.");
|
||||
|
||||
int rpm;
|
||||
onlp_oid_t oid;
|
||||
|
||||
UCLI_ARGPARSE_OR_RETURN(uc, "{onlp_oid_type}i", &oid, ONLP_OID_TYPE_FAN, &rpm);
|
||||
ucli_printf(uc, "%{onlp_status}\n",
|
||||
onlp_fan_rpm_set(oid, rpm));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__fan__percentage__get(ucli_context_t* uc)
|
||||
{
|
||||
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"get", 1,
|
||||
"$summary#Show the speed percentage for the given fan.");
|
||||
|
||||
int rv;
|
||||
onlp_oid_t oid;
|
||||
onlp_fan_info_t info;
|
||||
|
||||
UCLI_ARGPARSE_OR_RETURN(uc, "{onlp_oid_type}", &oid, ONLP_OID_TYPE_FAN);
|
||||
|
||||
if(ONLP_SUCCESS(rv = onlp_fan_info_get(oid, &info))) {
|
||||
if(info.caps & ONLP_FAN_CAPS_GET_PERCENTAGE) {
|
||||
ucli_printf(uc, "%{onlp_oid} percentage = %d\n", oid, info.percentage);
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_oid} does not support percentage.\n", oid);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ucli_printf(uc, "%{onlp_status}\n", rv);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__fan__percentage__set(ucli_context_t* uc)
|
||||
{
|
||||
UCLI_COMMAND_INFO(uc,
|
||||
"set", 2,
|
||||
"$summary#Set the speed percentage for the given fan.");
|
||||
|
||||
int p;
|
||||
onlp_oid_t oid;
|
||||
|
||||
UCLI_ARGPARSE_OR_RETURN(uc, "{onlp_oid_type}i", &oid, ONLP_OID_TYPE_FAN, &p);
|
||||
ucli_printf(uc, "%{onlp_status}\n",
|
||||
onlp_fan_percentage_set(oid, p));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ucli_status_t
|
||||
onlp_ucli__platform__manager__run__(ucli_context_t* uc)
|
||||
{
|
||||
@@ -334,47 +477,49 @@ onlp_ucli__platform__manager__daemon__(ucli_context_t* uc)
|
||||
*
|
||||
*****************************************************************************/
|
||||
ucli_node_t* onlp_ucli__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__debug__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__debug__oid__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__debug__oid__verify__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__debug__oid__verify__verify__handlers__[] =
|
||||
ucli_node_t* onlp_ucli__oid__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__oid__hdr__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__oid__hdr__json__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__oid__hdr__json__json__handlers__[] =
|
||||
{
|
||||
onlp_ucli__debug__oid__verify__json__,
|
||||
onlp_ucli__oid__hdr__json__id__,
|
||||
onlp_ucli__oid__hdr__json__file__,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__debug__oid__verify__verify__module__ =
|
||||
static ucli_module_t onlp_ucli__oid__hdr__json__json__module__ =
|
||||
{
|
||||
"verify",
|
||||
"json",
|
||||
NULL,
|
||||
onlp_ucli__debug__oid__verify__verify__handlers__,
|
||||
onlp_ucli__oid__hdr__json__json__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__debug__oid__from__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__debug__oid__from__from__handlers__[] =
|
||||
ucli_node_t* onlp_ucli__sfp__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__sfp__dev__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__sfp__dev__dev__handlers__[] =
|
||||
{
|
||||
onlp_ucli__debug__oid__from__json__,
|
||||
onlp_ucli__sfp__dev__read__,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__debug__oid__from__from__module__ =
|
||||
static ucli_module_t onlp_ucli__sfp__dev__dev__module__ =
|
||||
{
|
||||
"from",
|
||||
"dev",
|
||||
NULL,
|
||||
onlp_ucli__debug__oid__from__from__handlers__,
|
||||
onlp_ucli__sfp__dev__dev__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__debug__oid__to__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__debug__oid__to__to__handlers__[] =
|
||||
static ucli_command_handler_f onlp_ucli__sfp__sfp__handlers__[] =
|
||||
{
|
||||
onlp_ucli__debug__oid__to__json__,
|
||||
onlp_ucli__sfp__inventory__,
|
||||
onlp_ucli__sfp__bitmaps__,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__debug__oid__to__to__module__ =
|
||||
static ucli_module_t onlp_ucli__sfp__sfp__module__ =
|
||||
{
|
||||
"to",
|
||||
"sfp",
|
||||
NULL,
|
||||
onlp_ucli__debug__oid__to__to__handlers__,
|
||||
onlp_ucli__sfp__sfp__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
@@ -453,48 +598,92 @@ static ucli_module_t onlp_ucli__chassis__env__env__module__ =
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__sfp__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__sfp__sfp__handlers__[] =
|
||||
ucli_node_t* onlp_ucli__fan__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__fan__percentage__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__fan__percentage__percentage__handlers__[] =
|
||||
{
|
||||
onlp_ucli__sfp__inventory__,
|
||||
onlp_ucli__fan__percentage__get,
|
||||
onlp_ucli__fan__percentage__set,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__sfp__sfp__module__ =
|
||||
static ucli_module_t onlp_ucli__fan__percentage__percentage__module__ =
|
||||
{
|
||||
"sfp",
|
||||
"percentage",
|
||||
NULL,
|
||||
onlp_ucli__sfp__sfp__handlers__,
|
||||
onlp_ucli__fan__percentage__percentage__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__oid__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__oid__hdr__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__oid__hdr__json__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__oid__hdr__json__json__handlers__[] =
|
||||
ucli_node_t* onlp_ucli__fan__rpm__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__fan__rpm__rpm__handlers__[] =
|
||||
{
|
||||
onlp_ucli__oid__hdr__json__id__,
|
||||
onlp_ucli__oid__hdr__json__file__,
|
||||
onlp_ucli__fan__rpm__get,
|
||||
onlp_ucli__fan__rpm__set,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__oid__hdr__json__json__module__ =
|
||||
static ucli_module_t onlp_ucli__fan__rpm__rpm__module__ =
|
||||
{
|
||||
"json",
|
||||
"rpm",
|
||||
NULL,
|
||||
onlp_ucli__oid__hdr__json__json__handlers__,
|
||||
onlp_ucli__fan__rpm__rpm__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__debug__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__debug__oid__node__ = NULL;
|
||||
ucli_node_t* onlp_ucli__debug__oid__verify__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__debug__oid__verify__verify__handlers__[] =
|
||||
{
|
||||
onlp_ucli__debug__oid__verify__json__,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__debug__oid__verify__verify__module__ =
|
||||
{
|
||||
"verify",
|
||||
NULL,
|
||||
onlp_ucli__debug__oid__verify__verify__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__debug__oid__from__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__debug__oid__from__from__handlers__[] =
|
||||
{
|
||||
onlp_ucli__debug__oid__from__json__,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__debug__oid__from__from__module__ =
|
||||
{
|
||||
"from",
|
||||
NULL,
|
||||
onlp_ucli__debug__oid__from__from__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
ucli_node_t* onlp_ucli__debug__oid__to__node__ = NULL;
|
||||
static ucli_command_handler_f onlp_ucli__debug__oid__to__to__handlers__[] =
|
||||
{
|
||||
onlp_ucli__debug__oid__to__json__,
|
||||
NULL
|
||||
};
|
||||
static ucli_module_t onlp_ucli__debug__oid__to__to__module__ =
|
||||
{
|
||||
"to",
|
||||
NULL,
|
||||
onlp_ucli__debug__oid__to__to__handlers__,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
static ucli_node_t* __ucli_auto_init__(void)
|
||||
{
|
||||
if(onlp_ucli__node__ == NULL) onlp_ucli__node__ = ucli_node_create("onlp", NULL, NULL);
|
||||
if(onlp_ucli__debug__node__ == NULL) onlp_ucli__debug__node__ = ucli_node_create("debug", NULL, NULL);
|
||||
if(onlp_ucli__debug__oid__node__ == NULL) onlp_ucli__debug__oid__node__ = ucli_node_create("oid", NULL, NULL);
|
||||
if(onlp_ucli__debug__oid__verify__node__ == NULL) onlp_ucli__debug__oid__verify__node__ = ucli_node_create("verify", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__debug__oid__verify__verify__module__);
|
||||
if(onlp_ucli__debug__oid__from__node__ == NULL) onlp_ucli__debug__oid__from__node__ = ucli_node_create("from", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__debug__oid__from__from__module__);
|
||||
if(onlp_ucli__debug__oid__to__node__ == NULL) onlp_ucli__debug__oid__to__node__ = ucli_node_create("to", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__debug__oid__to__to__module__);
|
||||
if(onlp_ucli__oid__node__ == NULL) onlp_ucli__oid__node__ = ucli_node_create("oid", NULL, NULL);
|
||||
if(onlp_ucli__oid__hdr__node__ == NULL) onlp_ucli__oid__hdr__node__ = ucli_node_create("hdr", NULL, NULL);
|
||||
if(onlp_ucli__oid__hdr__json__node__ == NULL) onlp_ucli__oid__hdr__json__node__ = ucli_node_create("json", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__oid__hdr__json__json__module__);
|
||||
if(onlp_ucli__sfp__node__ == NULL) onlp_ucli__sfp__node__ = ucli_node_create("sfp", NULL, NULL);
|
||||
if(onlp_ucli__sfp__dev__node__ == NULL) onlp_ucli__sfp__dev__node__ = ucli_node_create("dev", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__sfp__dev__dev__module__);
|
||||
ucli_module_init(&onlp_ucli__sfp__sfp__module__);
|
||||
if(onlp_ucli__platform__node__ == NULL) onlp_ucli__platform__node__ = ucli_node_create("platform", NULL, NULL);
|
||||
if(onlp_ucli__platform__manager__node__ == NULL) onlp_ucli__platform__manager__node__ = ucli_node_create("manager", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__platform__manager__manager__module__);
|
||||
@@ -507,20 +696,27 @@ static ucli_node_t* __ucli_auto_init__(void)
|
||||
ucli_module_init(&onlp_ucli__chassis__asset__asset__module__);
|
||||
if(onlp_ucli__chassis__env__node__ == NULL) onlp_ucli__chassis__env__node__ = ucli_node_create("env", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__chassis__env__env__module__);
|
||||
if(onlp_ucli__sfp__node__ == NULL) onlp_ucli__sfp__node__ = ucli_node_create("sfp", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__sfp__sfp__module__);
|
||||
if(onlp_ucli__oid__node__ == NULL) onlp_ucli__oid__node__ = ucli_node_create("oid", NULL, NULL);
|
||||
if(onlp_ucli__oid__hdr__node__ == NULL) onlp_ucli__oid__hdr__node__ = ucli_node_create("hdr", NULL, NULL);
|
||||
if(onlp_ucli__oid__hdr__json__node__ == NULL) onlp_ucli__oid__hdr__json__node__ = ucli_node_create("json", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__oid__hdr__json__json__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__debug__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__node__, onlp_ucli__debug__oid__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__oid__node__, onlp_ucli__debug__oid__verify__node__);
|
||||
ucli_node_module_add(onlp_ucli__debug__oid__verify__node__, &onlp_ucli__debug__oid__verify__verify__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__oid__node__, onlp_ucli__debug__oid__from__node__);
|
||||
ucli_node_module_add(onlp_ucli__debug__oid__from__node__, &onlp_ucli__debug__oid__from__from__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__oid__node__, onlp_ucli__debug__oid__to__node__);
|
||||
ucli_node_module_add(onlp_ucli__debug__oid__to__node__, &onlp_ucli__debug__oid__to__to__module__);
|
||||
if(onlp_ucli__fan__node__ == NULL) onlp_ucli__fan__node__ = ucli_node_create("fan", NULL, NULL);
|
||||
if(onlp_ucli__fan__percentage__node__ == NULL) onlp_ucli__fan__percentage__node__ = ucli_node_create("percentage", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__fan__percentage__percentage__module__);
|
||||
if(onlp_ucli__fan__rpm__node__ == NULL) onlp_ucli__fan__rpm__node__ = ucli_node_create("rpm", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__fan__rpm__rpm__module__);
|
||||
if(onlp_ucli__debug__node__ == NULL) onlp_ucli__debug__node__ = ucli_node_create("debug", NULL, NULL);
|
||||
if(onlp_ucli__debug__oid__node__ == NULL) onlp_ucli__debug__oid__node__ = ucli_node_create("oid", NULL, NULL);
|
||||
if(onlp_ucli__debug__oid__verify__node__ == NULL) onlp_ucli__debug__oid__verify__node__ = ucli_node_create("verify", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__debug__oid__verify__verify__module__);
|
||||
if(onlp_ucli__debug__oid__from__node__ == NULL) onlp_ucli__debug__oid__from__node__ = ucli_node_create("from", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__debug__oid__from__from__module__);
|
||||
if(onlp_ucli__debug__oid__to__node__ == NULL) onlp_ucli__debug__oid__to__node__ = ucli_node_create("to", NULL, NULL);
|
||||
ucli_module_init(&onlp_ucli__debug__oid__to__to__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__oid__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__oid__node__, onlp_ucli__oid__hdr__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__oid__hdr__node__, onlp_ucli__oid__hdr__json__node__);
|
||||
ucli_node_module_add(onlp_ucli__oid__hdr__json__node__, &onlp_ucli__oid__hdr__json__json__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__sfp__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__sfp__node__, onlp_ucli__sfp__dev__node__);
|
||||
ucli_node_module_add(onlp_ucli__sfp__dev__node__, &onlp_ucli__sfp__dev__dev__module__);
|
||||
ucli_node_module_add(onlp_ucli__sfp__node__, &onlp_ucli__sfp__sfp__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__platform__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__platform__node__, onlp_ucli__platform__manager__node__);
|
||||
ucli_node_module_add(onlp_ucli__platform__manager__node__, &onlp_ucli__platform__manager__manager__module__);
|
||||
@@ -533,12 +729,19 @@ static ucli_node_t* __ucli_auto_init__(void)
|
||||
ucli_node_module_add(onlp_ucli__chassis__asset__node__, &onlp_ucli__chassis__asset__asset__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__chassis__node__, onlp_ucli__chassis__env__node__);
|
||||
ucli_node_module_add(onlp_ucli__chassis__env__node__, &onlp_ucli__chassis__env__env__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__sfp__node__);
|
||||
ucli_node_module_add(onlp_ucli__sfp__node__, &onlp_ucli__sfp__sfp__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__oid__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__oid__node__, onlp_ucli__oid__hdr__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__oid__hdr__node__, onlp_ucli__oid__hdr__json__node__);
|
||||
ucli_node_module_add(onlp_ucli__oid__hdr__json__node__, &onlp_ucli__oid__hdr__json__json__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__fan__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__fan__node__, onlp_ucli__fan__percentage__node__);
|
||||
ucli_node_module_add(onlp_ucli__fan__percentage__node__, &onlp_ucli__fan__percentage__percentage__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__fan__node__, onlp_ucli__fan__rpm__node__);
|
||||
ucli_node_module_add(onlp_ucli__fan__rpm__node__, &onlp_ucli__fan__rpm__rpm__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__node__, onlp_ucli__debug__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__node__, onlp_ucli__debug__oid__node__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__oid__node__, onlp_ucli__debug__oid__verify__node__);
|
||||
ucli_node_module_add(onlp_ucli__debug__oid__verify__node__, &onlp_ucli__debug__oid__verify__verify__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__oid__node__, onlp_ucli__debug__oid__from__node__);
|
||||
ucli_node_module_add(onlp_ucli__debug__oid__from__node__, &onlp_ucli__debug__oid__from__from__module__);
|
||||
ucli_node_subnode_add(onlp_ucli__debug__oid__node__, onlp_ucli__debug__oid__to__node__);
|
||||
ucli_node_module_add(onlp_ucli__debug__oid__to__node__, &onlp_ucli__debug__oid__to__to__module__);
|
||||
return onlp_ucli__node__;
|
||||
}
|
||||
/******************************************************************************/
|
||||
|
||||
@@ -54,18 +54,33 @@ ONLP_LOCKED_API0(onlp_psu_sw_denit);
|
||||
static int
|
||||
onlp_psu_hdr_get_locked__(onlp_oid_t oid, onlp_oid_hdr_t* hdr)
|
||||
{
|
||||
ONLP_OID_PSU_VALIDATE(oid);
|
||||
int rv;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_PSU_VALIDATE_GET_ID(oid, id);
|
||||
ONLP_PTR_VALIDATE_ZERO(hdr);
|
||||
return onlp_psui_hdr_get(oid, hdr);
|
||||
|
||||
rv = onlp_log_error(0,
|
||||
onlp_psui_hdr_get(id, hdr),
|
||||
"psui hdr get %{onlp_oid}", oid);
|
||||
hdr->id = oid;
|
||||
return rv;
|
||||
}
|
||||
ONLP_LOCKED_API2(onlp_psu_hdr_get, onlp_oid_t, oid, onlp_oid_hdr_t*, hdr);
|
||||
|
||||
static int
|
||||
onlp_psu_info_get_locked__(onlp_oid_t oid, onlp_psu_info_t* info)
|
||||
{
|
||||
ONLP_OID_PSU_VALIDATE(oid);
|
||||
int rv;
|
||||
onlp_oid_id_t id;
|
||||
|
||||
ONLP_OID_PSU_VALIDATE_GET_ID(oid, id);
|
||||
ONLP_PTR_VALIDATE_ZERO(info);
|
||||
return onlp_psui_info_get(oid, info);
|
||||
rv = onlp_log_error(0,
|
||||
onlp_psui_info_get(id, info),
|
||||
"psui info get %{onlp_oid}", oid);
|
||||
info->hdr.id = oid;
|
||||
return rv;
|
||||
}
|
||||
ONLP_LOCKED_API2(onlp_psu_info_get, onlp_oid_t, oid, onlp_psu_info_t*, info);
|
||||
|
||||
|
||||
@@ -161,6 +161,9 @@ ONLP_LOCKED_API2(onlp_sfp_type_get, onlp_oid_t, oid, onlp_sfp_type_t*, rtype);
|
||||
static int
|
||||
onlp_sfp_presence_bitmap_get_locked__(onlp_sfp_bitmap_t* dst)
|
||||
{
|
||||
ONLP_PTR_VALIDATE_ZERO(dst);
|
||||
onlp_sfp_bitmap_t_init(dst);
|
||||
|
||||
int rv = onlp_sfpi_presence_bitmap_get(dst);
|
||||
|
||||
if(rv == ONLP_STATUS_E_UNSUPPORTED) {
|
||||
@@ -270,6 +273,9 @@ ONLP_LOCKED_API3(onlp_sfp_control_get, onlp_oid_t, port, onlp_sfp_control_t, con
|
||||
static int
|
||||
onlp_sfp_rx_los_bitmap_get_locked__(onlp_sfp_bitmap_t* dst)
|
||||
{
|
||||
ONLP_PTR_VALIDATE_ZERO(dst);
|
||||
onlp_sfp_bitmap_t_init(dst);
|
||||
|
||||
int rv = onlp_sfpi_rx_los_bitmap_get(dst);
|
||||
|
||||
if(rv == ONLP_STATUS_E_UNSUPPORTED) {
|
||||
@@ -336,7 +342,7 @@ onlp_sfp_control_flags_get(onlp_oid_t oid, uint32_t* flags)
|
||||
}
|
||||
|
||||
int
|
||||
onlp_sfp_dev_read_alloc(onlp_oid_t port,
|
||||
onlp_sfp_dev_alloc_read(onlp_oid_t port,
|
||||
int devaddr, int addr, int count,
|
||||
uint8_t** rvp)
|
||||
{
|
||||
|
||||
@@ -33,8 +33,34 @@
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_fani_sw_init(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_fani_hw_init(uint32_t flags));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_fani_sw_denit(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_fani_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* hdr));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_fani_info_get(onlp_oid_id_t id, onlp_fan_info_t* info));
|
||||
|
||||
/**
|
||||
* Simulate hdr_get for older platforms which don't support it.
|
||||
* This is inefficient.
|
||||
*/
|
||||
int __ONLP_DEFAULTI
|
||||
onlp_fani_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* hdr)
|
||||
{
|
||||
onlp_fan_info_t info;
|
||||
ONLP_TRY(onlp_fani_info_get(id, &info));
|
||||
*hdr = info.hdr;
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate caps_get for older platforms which don't support it.
|
||||
* This is inefficient.
|
||||
*/
|
||||
int __ONLP_DEFAULTI
|
||||
onlp_fani_caps_get(onlp_oid_id_t id, uint32_t* rv)
|
||||
{
|
||||
onlp_fan_info_t info;
|
||||
ONLP_TRY(onlp_fani_info_get(id, &info));
|
||||
*rv = info.caps;
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_fani_rpm_set(onlp_oid_id_t id, int rpm));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_fani_percentage_set(onlp_oid_id_t id, int p));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_fani_dir_set(onlp_oid_id_t id, onlp_fan_dir_t dir));
|
||||
|
||||
@@ -28,7 +28,33 @@
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_ledi_sw_init(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_ledi_hw_init(uint32_t flags));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_ledi_sw_denit(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_ledi_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_ledi_info_get(onlp_oid_id_t id, onlp_led_info_t* rv));
|
||||
|
||||
/**
|
||||
* simulate hdr_get for older platforms which don't support it.
|
||||
* This is inefficient.
|
||||
*/
|
||||
int __ONLP_DEFAULTI
|
||||
onlp_ledi_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv)
|
||||
{
|
||||
onlp_led_info_t info;
|
||||
ONLP_TRY(onlp_ledi_info_get(id, &info));
|
||||
*rv = info.hdr;
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate caps_get for older platforms which don't support it.
|
||||
* This is inefficient.
|
||||
*/
|
||||
int __ONLP_DEFAULTI
|
||||
onlp_ledi_caps_get(onlp_oid_id_t id, uint32_t* rv)
|
||||
{
|
||||
onlp_led_info_t info;
|
||||
ONLP_TRY(onlp_ledi_info_get(id, &info));
|
||||
*rv = info.caps;
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_ledi_mode_set(onlp_oid_id_t id, onlp_led_mode_t mode));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_ledi_char_set(onlp_oid_id_t id, char c));
|
||||
|
||||
@@ -29,5 +29,18 @@
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_psui_sw_init(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_psui_hw_init(uint32_t flags));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_psui_sw_denit(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_psui_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv));
|
||||
|
||||
/**
|
||||
* simulate hdr_get for older platforms which don't support it.
|
||||
* This is inefficient.
|
||||
*/
|
||||
int __ONLP_DEFAULTI
|
||||
onlp_psui_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv)
|
||||
{
|
||||
onlp_psu_info_t info;
|
||||
ONLP_TRY(onlp_psui_info_get(id, &info));
|
||||
*rv = info.hdr;
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_psui_info_get(onlp_oid_id_t id, onlp_psu_info_t* rv));
|
||||
|
||||
@@ -30,4 +30,16 @@ __ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_thermali_sw_init(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_thermali_hw_init(uint32_t flags));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION_OPTIONAL(onlp_thermali_sw_denit(void));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_thermali_info_get(onlp_oid_id_t id, onlp_thermal_info_t* rv));
|
||||
__ONLP_DEFAULTI_IMPLEMENTATION(onlp_thermali_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv));
|
||||
|
||||
/**
|
||||
* simulate hdr_get for older platforms which don't support it.
|
||||
* This is inefficient.
|
||||
*/
|
||||
int __ONLP_DEFAULTI
|
||||
onlp_thermali_hdr_get(onlp_oid_id_t id, onlp_oid_hdr_t* rv)
|
||||
{
|
||||
onlp_thermal_info_t info;
|
||||
ONLP_TRY(onlp_thermali_info_get(id, &info));
|
||||
*rv = info.hdr;
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
@@ -121,6 +121,15 @@ int onlp_file_read_int(int* value, const char* fmt, ...);
|
||||
*/
|
||||
int onlp_file_read_int_max(int* value, char** files);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Join the contents of the given files.
|
||||
* @param[out] Receives the joined string.
|
||||
* @param string The join string.
|
||||
* @param files The source files.
|
||||
*/
|
||||
int onlp_file_join_files(char** rv, const char* string, char** files);
|
||||
|
||||
/**
|
||||
* @brief Write data to the given file.
|
||||
* @param data The data to write.
|
||||
|
||||
@@ -311,6 +311,37 @@ onlp_file_read_int_max(int* value, char** files)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
onlp_file_join_files(char** rv, const char* string, char** files)
|
||||
{
|
||||
int i;
|
||||
|
||||
if(rv == NULL || files == NULL || string == NULL) {
|
||||
return ONLP_STATUS_E_PARAM;
|
||||
}
|
||||
|
||||
for(i = 0; files[i]; i++);
|
||||
|
||||
if(i == 0) {
|
||||
*rv = aim_strdup("");
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char** strings = aim_zmalloc(sizeof(*strings)*i);
|
||||
for(i = 0; files[i]; i++) {
|
||||
onlp_file_read_str((char**)strings+i, files[i]);
|
||||
}
|
||||
|
||||
*rv = aim_strjoin(string, strings, i);
|
||||
|
||||
for(i = 0; files[i]; i++) {
|
||||
aim_free((char*)strings[i]);
|
||||
}
|
||||
aim_free(strings);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
onlp_file_vwrite(uint8_t* data, int len, const char* fmt, va_list vargs)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user