Append "_thresholds" to the threshold JSON objects to avoid using the same key which is not allowed in JSON. The JSON output for SFP transceivers uses the keys "laser_bias_current", "laser_output_power", "module_temperature" and "module_voltage" for both the actual value and the threshold values. This leads to invalid JSON output as keys in a JSON object must be unique. For QSPI and CMIS the keys "module_temperature" and "module_voltage" are also used for both the actual value and the threshold values. Signed-off-by: Johannes Eigner --- sff-common.c | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/sff-common.c b/sff-common.c index 0824dfb..6528f5a 100644 --- a/sff-common.c +++ b/sff-common.c @@ -104,39 +104,39 @@ void sff8024_show_encoding(const __u8 *id, int encoding_offset, int sff_type) void sff_show_thresholds_json(struct sff_diags sd) { - open_json_object("laser_bias_current"); - PRINT_BIAS_JSON("high_alarm_threshold", sd.bias_cur[HALRM]); - PRINT_BIAS_JSON("low_alarm_threshold", sd.bias_cur[LALRM]); - PRINT_BIAS_JSON("high_warning_threshold", sd.bias_cur[HWARN]); - PRINT_BIAS_JSON("low_warning_threshold", sd.bias_cur[LWARN]); + open_json_object("laser_bias_current_thresholds"); + PRINT_BIAS_JSON("high_alarm", sd.bias_cur[HALRM]); + PRINT_BIAS_JSON("low_alarm", sd.bias_cur[LALRM]); + PRINT_BIAS_JSON("high_warning", sd.bias_cur[HWARN]); + PRINT_BIAS_JSON("low_warning", sd.bias_cur[LWARN]); close_json_object(); - open_json_object("laser_output_power"); - PRINT_xX_PWR_JSON("high_alarm_threshold", sd.tx_power[HALRM]); - PRINT_xX_PWR_JSON("low_alarm_threshold", sd.tx_power[LALRM]); - PRINT_xX_PWR_JSON("high_warning_threshold", sd.tx_power[HWARN]); - PRINT_xX_PWR_JSON("low_warning_threshold", sd.tx_power[LWARN]); + open_json_object("laser_output_power_thresholds"); + PRINT_xX_PWR_JSON("high_alarm", sd.tx_power[HALRM]); + PRINT_xX_PWR_JSON("low_alarm", sd.tx_power[LALRM]); + PRINT_xX_PWR_JSON("high_warning", sd.tx_power[HWARN]); + PRINT_xX_PWR_JSON("low_warning", sd.tx_power[LWARN]); close_json_object(); - open_json_object("module_temperature"); - PRINT_TEMP_JSON("high_alarm_threshold", sd.sfp_temp[HALRM]); - PRINT_TEMP_JSON("low_alarm_threshold", sd.sfp_temp[LALRM]); - PRINT_TEMP_JSON("high_warning_threshold", sd.sfp_temp[HWARN]); - PRINT_TEMP_JSON("low_warning_threshold", sd.sfp_temp[LWARN]); + open_json_object("module_temperature_thresholds"); + PRINT_TEMP_JSON("high_alarm", sd.sfp_temp[HALRM]); + PRINT_TEMP_JSON("low_alarm", sd.sfp_temp[LALRM]); + PRINT_TEMP_JSON("high_warning", sd.sfp_temp[HWARN]); + PRINT_TEMP_JSON("low_warning", sd.sfp_temp[LWARN]); close_json_object(); - open_json_object("module_voltage"); - PRINT_VCC_JSON("high_alarm_threshold", sd.sfp_voltage[HALRM]); - PRINT_VCC_JSON("low_alarm_threshold", sd.sfp_voltage[LALRM]); - PRINT_VCC_JSON("high_warning_threshold", sd.sfp_voltage[HWARN]); - PRINT_VCC_JSON("low_warning_threshold", sd.sfp_voltage[LWARN]); + open_json_object("module_voltage_thresholds"); + PRINT_VCC_JSON("high_alarm", sd.sfp_voltage[HALRM]); + PRINT_VCC_JSON("low_alarm", sd.sfp_voltage[LALRM]); + PRINT_VCC_JSON("high_warning", sd.sfp_voltage[HWARN]); + PRINT_VCC_JSON("low_warning", sd.sfp_voltage[LWARN]); close_json_object(); - open_json_object("laser_rx_power"); - PRINT_xX_PWR_JSON("high_alarm_threshold", sd.rx_power[HALRM]); - PRINT_xX_PWR_JSON("low_alarm_threshold", sd.rx_power[LALRM]); - PRINT_xX_PWR_JSON("high_warning_threshold", sd.rx_power[HWARN]); - PRINT_xX_PWR_JSON("low_warning_threshold", sd.rx_power[LWARN]); + open_json_object("laser_rx_power_thresholds"); + PRINT_xX_PWR_JSON("high_alarm", sd.rx_power[HALRM]); + PRINT_xX_PWR_JSON("low_alarm", sd.rx_power[LALRM]); + PRINT_xX_PWR_JSON("high_warning", sd.rx_power[HWARN]); + PRINT_xX_PWR_JSON("low_warning", sd.rx_power[LWARN]); close_json_object(); } -- 2.43.0