Skip to content
Snippets Groups Projects
dsl_cpe_status_parser.c 233 KiB
Newer Older
  • Learn to ignore specific revisions
  • Oussama Ghorbel's avatar
    Oussama Ghorbel committed
    /******************************************************************************
    
             Copyright (c) 2019 Intel Corporation
    
      For licensing information, see the file 'LICENSE' in the root folder of
      this software module.
    
    *******************************************************************************/
    
    #if defined(INCLUDE_DSL_JSON_PARSING) && (INCLUDE_DSL_JSON_PARSING == 1)
    
    #include "json.h"
    #include "dsl_cpe_status_parser.h"
    #include "drv_dsl_cpe_api_ioctl.h"
    #include "drv_dsl_cpe_api.h"
    
    #include "dsl_cpe_interface.h"
    
    #if defined (INCLUDE_DSL_CPE_API_VRX)
    #include "dsl_cpe_bnd_vrx.h"
    #endif
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
    
    #undef DSL_CCA_DBG_BLOCK
    #define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_APP
    
    
    #define STATUS_FILE_PATH_TMP "/tmp/status/dsl.tmp"
    #define STATUS_FILE_PATH "/tmp/status/dsl"
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
    
    #define SECTION_PATH_LENGTH 256
    
    /*
       Definitions for status file parameters' update types,
       to be used in different update functions in order to
       determine which parameters need to be updated
    */
    typedef enum
    {
       DSL_UPDATE_TYPE_NONE, /* only for nodes with JSON object type */
       DSL_UPDATE_TYPE_INIT, /* parameters to be updated during initialization */
       DSL_UPDATE_TYPE_POLL, /* parameters to be updated on polling timer */
       DSL_UPDATE_TYPE_EVENT /* parameters to be updated by events only */
    } DSL_CPE_StatusNodeUpdateType_t;
    
    /*
       JSON Status File node definition
    */
    typedef struct
    {
       DSL_CPE_StatusNodeIdx_t eNodeIdx;
       DSL_char_t jsonPath[SECTION_PATH_LENGTH];
       json_type jsonType;
       DSL_CPE_StatusNodeUpdateType_t eUpdateType;
    } DSL_CPE_JsonStatusNode_t;
    
    /*
       JSON Status File entire structure definition (metadata),
       to be used for creation of physical Status File as well as
       for further operations
    */
    static const DSL_CPE_JsonStatusNode_t jsonStatusNodes[] =
    {
       { DSL_ROOT, "dsl",
          json_type_object, DSL_UPDATE_TYPE_NONE },
       /* common section */
       { DSL_LINE_ENTRIES, "dsl.line_number_of_entries",
          json_type_int, DSL_UPDATE_TYPE_INIT },
       { DSL_CHANNEL_ENTRIES, "dsl.channel_number_of_entries",
          json_type_int, DSL_UPDATE_TYPE_INIT },
       { DSL_BND_GROUP_ENTRIES, "dsl.bonding_group_number_of_entries",
          json_type_int, DSL_UPDATE_TYPE_INIT },
       { DSL_API_VERSION, "dsl.api_version",
          json_type_string, DSL_UPDATE_TYPE_INIT },
       { DSL_MEI_VERSION, "dsl.mei_driver_version",
          json_type_string, DSL_UPDATE_TYPE_INIT },
       { DSL_HW_VERSION, "dsl.hardware_version",
          json_type_string, DSL_UPDATE_TYPE_INIT },
       { DSL_CHIPSET_TYPE, "dsl.chipset_type",
          json_type_string, DSL_UPDATE_TYPE_INIT },
       /* <dsl.status> section */
       { DSL_STATUS, "dsl.status",
          json_type_object, DSL_UPDATE_TYPE_NONE },
       { DSL_STATUS_LINE, "dsl.status.line",
          json_type_object, DSL_UPDATE_TYPE_NONE },
          /* <dsl.status.line.0> section */
          { DSL_STATUS_LINE_0, "dsl.status.line.0",
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_STATUS, "dsl.status.line.0."DSL_STAT_LINE_STATUS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_UPSTREAM, "dsl.status.line.0."DSL_STAT_UPSTREAM,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_FW_VERSION, "dsl.status.line.0."DSL_STAT_FIRMWARE_VERSION,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_LINK_STATUS, "dsl.status.line.0."DSL_STAT_LINK_STATUS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_STD_SUPPORTED, "dsl.status.line.0."DSL_STAT_STANDARDS_SUPPORTED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTSE, "dsl.status.line.0."DSL_STAT_XTSE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_STD_USED, "dsl.status.line.0."DSL_STAT_STANDARD_USED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTSE_USED, "dsl.status.line.0."DSL_STAT_XTSE_USED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ENCODING, "dsl.status.line.0."DSL_STAT_LINE_ENCODING,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ALLOWED_PROFILES, "dsl.status.line.0."DSL_STAT_ALLOWED_PROFILES,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_CURRENT_PROFILE, "dsl.status.line.0."DSL_STAT_CURRENT_PROFILE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_PWR_MGMT_STATE, "dsl.status.line.0."DSL_STAT_POWER_MANAGEMENT_STATE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_SUCC_FAIL_CAUSE, "dsl.status.line.0."DSL_STAT_SUCCESS_FAILURE_CAUSE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_LAST_STATE_TRANSM, "dsl.status.line.0."DSL_STAT_LAST_STATE_TRANSMITTED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_LAST_STATE_TRANSM_US, "dsl.status.line.0."DSL_STAT_LAST_STATE_TRANSMITTED PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_LAST_STATE_TRANSM_DS, "dsl.status.line.0."DSL_STAT_LAST_STATE_TRANSMITTED PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_US0_MASK, "dsl.status.line.0."DSL_STAT_US0_MASK,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_TRELLIS, "dsl.status.line.0."DSL_STAT_TRELLIS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_TRELLIS_US, "dsl.status.line.0."DSL_STAT_TRELLIS PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_TRELLIS_DS, "dsl.status.line.0."DSL_STAT_TRELLIS PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ACT_SNR_MODE, "dsl.status.line.0."DSL_STAT_ACT_SNR_MODE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_ACT_SNR_MODE_US, "dsl.status.line.0."DSL_STAT_ACT_SNR_MODE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ACT_SNR_MODE_DS, "dsl.status.line.0."DSL_STAT_ACT_SNR_MODE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_LINE_NR, "dsl.status.line.0."DSL_STAT_LINE_NUMBER,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_MAX_BIT_RATE, "dsl.status.line.0."DSL_STAT_MAX_BIT_RATE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_MAX_BIT_RATE_US, "dsl.status.line.0."DSL_STAT_MAX_BIT_RATE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_MAX_BIT_RATE_DS, "dsl.status.line.0."DSL_STAT_MAX_BIT_RATE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_NOISE_MARGIN, "dsl.status.line.0."DSL_STAT_NOISE_MARGIN,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_NOISE_MARGIN_US, "dsl.status.line.0."DSL_STAT_NOISE_MARGIN PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_NOISE_MARGIN_DS, "dsl.status.line.0."DSL_STAT_NOISE_MARGIN PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_SNR_MPB, "dsl.status.line.0."DSL_STAT_SNR_MPB,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_SNR_MPB_US, "dsl.status.line.0."DSL_STAT_SNR_MPB PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_SNR_MPB_DS, "dsl.status.line.0."DSL_STAT_SNR_MPB PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_POWER, "dsl.status.line.0."DSL_STAT_POWER,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_POWER_US, "dsl.status.line.0."DSL_STAT_POWER PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_POWER_DS, "dsl.status.line.0."DSL_STAT_POWER PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUR_VENDOR, "dsl.status.line.0."DSL_STAT_XTUR_VENDOR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUR_COUNTRY, "dsl.status.line.0."DSL_STAT_XTUR_COUNTRY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUR_ANSI_STD, "dsl.status.line.0."DSL_STAT_XTUR_ANSI_STD,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUR_ANSI_REV, "dsl.status.line.0."DSL_STAT_XTUR_ANSI_REV,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUC_VENDOR, "dsl.status.line.0."DSL_STAT_XTUC_VENDOR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUC_COUNTRY, "dsl.status.line.0."DSL_STAT_XTUC_COUNTRY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUC_ANSI_STD, "dsl.status.line.0."DSL_STAT_XTUC_ANSI_STD,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_XTUC_ANSI_REV, "dsl.status.line.0."DSL_STAT_XTUC_ANSI_REV,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_UPBOKLER_PB, "dsl.status.line.0."DSL_STAT_UPBOKLER_PB,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_RXTHRSH_DS, "dsl.status.line.0."DSL_STAT_RXTHRSH_DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ACT_RA_MODE, "dsl.status.line.0."DSL_STAT_ACT_RA_MODE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_ACT_RA_MODE_US, "dsl.status.line.0."DSL_STAT_ACT_RA_MODE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ACT_RA_MODE_DS, "dsl.status.line.0."DSL_STAT_ACT_RA_MODE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_SNR_MROC, "dsl.status.line.0."DSL_STAT_SNR_MROC,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_SNR_MROC_US, "dsl.status.line.0."DSL_STAT_SNR_MROC PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_SNR_MROC_DS, "dsl.status.line.0."DSL_STAT_SNR_MROC PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ATTENUATION, "dsl.status.line.0."DSL_STAT_ATTENUATION,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_0_ATTENUATION_US, "dsl.status.line.0."DSL_STAT_ATTENUATION PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_0_ATTENUATION_DS, "dsl.status.line.0."DSL_STAT_ATTENUATION PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
             /* <dsl.status.line.0.channel> section */
             { DSL_STATUS_LINE_0_CHANNEL, "dsl.status.line.0.channel",
                json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_0_CHANNEL_STATUS, "dsl.status.line.0.channel."DSL_STAT_CHANNEL_STATUS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_LINKENC_SUPP, "dsl.status.line.0.channel."DSL_STAT_LINK_ENCAPSULATION_SUPPORTED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_string, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_LINKENC_USED, "dsl.status.line.0.channel."DSL_STAT_LINK_ENCAPSULATION_USED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_string, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_LPATH, "dsl.status.line.0.channel."DSL_STAT_LPATH,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_INTLVDEPTH, "dsl.status.line.0.channel."DSL_STAT_INTLVDEPTH,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_INTLVBLOCK, "dsl.status.line.0.channel."DSL_STAT_INTLVBLOCK,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACT_INTERL_DELAY, "dsl.status.line.0.channel."DSL_STAT_ACTUAL_INTERLEAVING_DELAY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTINP, "dsl.status.line.0.channel."DSL_STAT_ACTINP,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_INPREPORT, "dsl.status.line.0.channel."DSL_STAT_INPREPORT,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_NFEC, "dsl.status.line.0.channel."DSL_STAT_NFEC,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_RFEC, "dsl.status.line.0.channel."DSL_STAT_RFEC,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_LSYMB, "dsl.status.line.0.channel."DSL_STAT_LSYMB,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_DATARATE, "dsl.status.line.0.channel."DSL_STAT_CURR_RATE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_0_CHANNEL_DATARATE_US, "dsl.status.line.0.channel."DSL_STAT_CURR_RATE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_DATARATE_DS, "dsl.status.line.0.channel."DSL_STAT_CURR_RATE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTNDR, "dsl.status.line.0.channel."DSL_STAT_ACTNDR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTNDR_US, "dsl.status.line.0.channel."DSL_STAT_ACTNDR PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTNDR_DS, "dsl.status.line.0.channel."DSL_STAT_ACTNDR PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTINPREIN, "dsl.status.line.0.channel."DSL_STAT_ACTINPREIN,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTINPREIN_US, "dsl.status.line.0.channel."DSL_STAT_ACTINPREIN PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_0_CHANNEL_ACTINPREIN_DS, "dsl.status.line.0.channel."DSL_STAT_ACTINPREIN PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
                json_type_int, DSL_UPDATE_TYPE_POLL },
          /* <dsl.status.line.1> section */
          { DSL_STATUS_LINE_1, "dsl.status.line.1",
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_STATUS, "dsl.status.line.1."DSL_STAT_LINE_STATUS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_UPSTREAM, "dsl.status.line.1."DSL_STAT_UPSTREAM,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_FW_VERSION, "dsl.status.line.1."DSL_STAT_FIRMWARE_VERSION,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_LINK_STATUS, "dsl.status.line.1."DSL_STAT_LINK_STATUS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_STD_SUPPORTED, "dsl.status.line.1."DSL_STAT_STANDARDS_SUPPORTED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTSE, "dsl.status.line.1."DSL_STAT_XTSE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_STD_USED, "dsl.status.line.1."DSL_STAT_STANDARD_USED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTSE_USED, "dsl.status.line.1."DSL_STAT_XTSE_USED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ENCODING, "dsl.status.line.1."DSL_STAT_LINE_ENCODING,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ALLOWED_PROFILES, "dsl.status.line.1."DSL_STAT_ALLOWED_PROFILES,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_CURRENT_PROFILE, "dsl.status.line.1."DSL_STAT_CURRENT_PROFILE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_PWR_MGMT_STATE, "dsl.status.line.1."DSL_STAT_POWER_MANAGEMENT_STATE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_SUCC_FAIL_CAUSE, "dsl.status.line.1."DSL_STAT_SUCCESS_FAILURE_CAUSE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_LAST_STATE_TRANSM, "dsl.status.line.1."DSL_STAT_LAST_STATE_TRANSMITTED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_LAST_STATE_TRANSM_US, "dsl.status.line.1."DSL_STAT_LAST_STATE_TRANSMITTED PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_LAST_STATE_TRANSM_DS, "dsl.status.line.1."DSL_STAT_LAST_STATE_TRANSMITTED PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_US0_MASK, "dsl.status.line.1."DSL_STAT_US0_MASK,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_TRELLIS, "dsl.status.line.1."DSL_STAT_TRELLIS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_TRELLIS_US, "dsl.status.line.1."DSL_STAT_TRELLIS PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_TRELLIS_DS, "dsl.status.line.1."DSL_STAT_TRELLIS PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ACT_SNR_MODE, "dsl.status.line.1."DSL_STAT_ACT_SNR_MODE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_ACT_SNR_MODE_US, "dsl.status.line.1."DSL_STAT_ACT_SNR_MODE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ACT_SNR_MODE_DS, "dsl.status.line.1."DSL_STAT_ACT_SNR_MODE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_LINE_NR, "dsl.status.line.1."DSL_STAT_LINE_NUMBER,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_MAX_BIT_RATE, "dsl.status.line.1."DSL_STAT_MAX_BIT_RATE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_MAX_BIT_RATE_US, "dsl.status.line.1."DSL_STAT_MAX_BIT_RATE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_MAX_BIT_RATE_DS, "dsl.status.line.1."DSL_STAT_MAX_BIT_RATE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_NOISE_MARGIN, "dsl.status.line.1."DSL_STAT_NOISE_MARGIN,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_NOISE_MARGIN_US, "dsl.status.line.1."DSL_STAT_NOISE_MARGIN PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_NOISE_MARGIN_DS, "dsl.status.line.1."DSL_STAT_NOISE_MARGIN PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_SNR_MPB, "dsl.status.line.1."DSL_STAT_SNR_MPB,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_SNR_MPB_US, "dsl.status.line.1."DSL_STAT_SNR_MPB PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_SNR_MPB_DS, "dsl.status.line.1."DSL_STAT_SNR_MPB PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_POWER, "dsl.status.line.1."DSL_STAT_POWER PATH_SEPARATOR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_POWER_US, "dsl.status.line.1."DSL_STAT_POWER PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_POWER_DS, "dsl.status.line.1."DSL_STAT_POWER PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUR_VENDOR, "dsl.status.line.1."DSL_STAT_XTUR_VENDOR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUR_COUNTRY, "dsl.status.line.1."DSL_STAT_XTUR_COUNTRY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUR_ANSI_STD, "dsl.status.line.1."DSL_STAT_XTUR_ANSI_STD,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUR_ANSI_REV, "dsl.status.line.1."DSL_STAT_XTUR_ANSI_REV,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUC_VENDOR, "dsl.status.line.1."DSL_STAT_XTUC_VENDOR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUC_COUNTRY, "dsl.status.line.1."DSL_STAT_XTUC_COUNTRY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_array, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUC_ANSI_STD, "dsl.status.line.1."DSL_STAT_XTUC_ANSI_STD,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_XTUC_ANSI_REV, "dsl.status.line.1."DSL_STAT_XTUC_ANSI_REV,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_UPBOKLER_PB, "dsl.status.line.1."DSL_STAT_UPBOKLER_PB,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_RXTHRSH_DS, "dsl.status.line.1."DSL_STAT_RXTHRSH_DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_string, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ACT_RA_MODE, "dsl.status.line.1."DSL_STAT_ACT_RA_MODE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_ACT_RA_MODE_US, "dsl.status.line.1."DSL_STAT_ACT_RA_MODE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ACT_RA_MODE_DS, "dsl.status.line.1."DSL_STAT_ACT_RA_MODE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_SNR_MROC, "dsl.status.line.1."DSL_STAT_SNR_MROC,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_SNR_MROC_US, "dsl.status.line.1."DSL_STAT_SNR_MROC PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_SNR_MROC_DS, "dsl.status.line.1."DSL_STAT_SNR_MROC PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ATTENUATION, "dsl.status.line.1."DSL_STAT_ATTENUATION,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATUS_LINE_1_ATTENUATION_US, "dsl.status.line.1."DSL_STAT_ATTENUATION PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATUS_LINE_1_ATTENUATION_DS, "dsl.status.line.1."DSL_STAT_ATTENUATION PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
             /* <dsl.status.line.1.channel> section */
             { DSL_STATUS_LINE_1_CHANNEL, "dsl.status.line.1.channel",
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_1_CHANNEL_STATUS, "dsl.status.line.1.channel."DSL_STAT_CHANNEL_STATUS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_LINKENC_SUPP, "dsl.status.line.1.channel."DSL_STAT_LINK_ENCAPSULATION_SUPPORTED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_LINKENC_USED, "dsl.status.line.1.channel."DSL_STAT_LINK_ENCAPSULATION_USED,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_string, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_LPATH, "dsl.status.line.1.channel."DSL_STAT_LPATH,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_INTLVDEPTH, "dsl.status.line.1.channel."DSL_STAT_INTLVDEPTH,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_INTLVBLOCK, "dsl.status.line.1.channel."DSL_STAT_INTLVBLOCK,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACT_INTERL_DELAY, "dsl.status.line.1.channel."DSL_STAT_ACTUAL_INTERLEAVING_DELAY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTINP, "dsl.status.line.1.channel."DSL_STAT_ACTINP,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_INPREPORT, "dsl.status.line.1.channel."DSL_STAT_INPREPORT,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_boolean, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_NFEC, "dsl.status.line.1.channel."DSL_STAT_NFEC,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_RFEC, "dsl.status.line.1.channel."DSL_STAT_RFEC,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_LSYMB, "dsl.status.line.1.channel."DSL_STAT_LSYMB,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_DATARATE, "dsl.status.line.1.channel."DSL_STAT_CURR_RATE,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_1_CHANNEL_DATARATE_US, "dsl.status.line.1.channel."DSL_STAT_CURR_RATE PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_DATARATE_DS, "dsl.status.line.1.channel."DSL_STAT_CURR_RATE PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTNDR, "dsl.status.line.1.channel."DSL_STAT_ACTNDR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTNDR_US, "dsl.status.line.1.channel."DSL_STAT_ACTNDR PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTNDR_DS, "dsl.status.line.1.channel."DSL_STAT_ACTNDR PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTINPREIN, "dsl.status.line.1.channel."DSL_STAT_ACTINPREIN,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTINPREIN_US, "dsl.status.line.1.channel."DSL_STAT_ACTINPREIN PATH_SEPARATOR US,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATUS_LINE_1_CHANNEL_ACTINPREIN_DS, "dsl.status.line.1.channel."DSL_STAT_ACTINPREIN PATH_SEPARATOR DS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
       { DSL_STATS, "dsl.stats",
       json_type_object, DSL_UPDATE_TYPE_NONE },
       { DSL_STATS_LINE, "dsl.stats.line",
       json_type_object, DSL_UPDATE_TYPE_NONE },
          /* <dsl.stats.line.0> section */
          { DSL_STATS_LINE_0, "dsl.stats.line.0",
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_0_TOTAL_START, "dsl.stats.line.0."DSL_STAT_TOTAL_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_SHOWTIME_START, "dsl.stats.line.0."DSL_STAT_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_LAST_SHOWTIME_START, "dsl.stats.line.0."DSL_STAT_LAST_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_CURRENT_DAY_START, "dsl.stats.line.0."DSL_STAT_CURRENT_DAY_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_QUARTER_HOUR_START, "dsl.stats.line.0."DSL_STAT_QUARTER_HOUR_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_TOTAL, "dsl.stats.line.0."DSL_STAT_TOTAL,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_0_TOTAL_ERR_SECS, "dsl.stats.line.0."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_TOTAL_SEV_ERR_SECS, "dsl.stats.line.0."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_SHOWTIME, "dsl.stats.line.0."DSL_STAT_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_0_SHOWTIME_ERR_SECS, "dsl.stats.line.0."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_SHOWTIME_SEV_ERR_SECS, "dsl.stats.line.0."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_LAST_SHOWTIME, "dsl.stats.line.0."DSL_STAT_LAST_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_0_LAST_SHOWTIME_ERR_SECS, "dsl.stats.line.0."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_LAST_SHOWTIME_SEV_ERR_SECS, "dsl.stats.line.0."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_CURRENT_DAY, "dsl.stats.line.0."DSL_STAT_CURRENT_DAY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_0_CURRENT_DAY_ERR_SECS, "dsl.stats.line.0."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_CURRENT_DAY_SEV_ERR_SECS, "dsl.stats.line.0."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_QUARTER_HOUR, "dsl.stats.line.0."DSL_STAT_QUARTER_HOUR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_0_QUARTER_HOUR_ERR_SECS, "dsl.stats.line.0."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_0_QUARTER_HOUR_SEV_ERR_SECS, "dsl.stats.line.0."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
             /* <dsl.stats.line.0.channel> section */
             { DSL_STATS_LINE_0_CHANNEL, "dsl.stats.line.0.channel",
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_START, "dsl.stats.line.0.channel."DSL_STAT_TOTAL_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_START, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_START, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_START, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_START, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL, "dsl.stats.line.0.channel."DSL_STAT_TOTAL,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_XTUR_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_XTUR_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_XTUC_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_XTUC_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_XTUR_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_TOTAL_XTUC_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_XTUR_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_XTUR_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_XTUC_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_XTUC_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_XTUR_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_SHOWTIME_XTUC_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_XTUR_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_XTUR_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_XTUC_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_XTUC_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_XTUR_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_LAST_SHOWTIME_XTUC_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_XTUR_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_XTUR_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_XTUC_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_XTUC_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_XTUR_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_CURRENT_DAY_XTUC_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_XTUR_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_XTUR_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_XTUC_FEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_XTUC_CRC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_XTUR_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_0_CHANNEL_QUARTER_HOUR_XTUC_HEC_ERRORS, "dsl.stats.line.0.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
          /* <dsl.stats.line.1> section */
          { DSL_STATS_LINE_1, "dsl.stats.line.1",
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_1_TOTAL_START, "dsl.stats.line.1."DSL_STAT_TOTAL_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_SHOWTIME_START, "dsl.stats.line.1."DSL_STAT_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_LAST_SHOWTIME_START, "dsl.stats.line.1."DSL_STAT_LAST_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_CURRENT_DAY_START, "dsl.stats.line.1."DSL_STAT_CURRENT_DAY_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_QUARTER_HOUR_START, "dsl.stats.line.1."DSL_STAT_QUARTER_HOUR_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_TOTAL, "dsl.stats.line.1."DSL_STAT_TOTAL,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_1_TOTAL_ERR_SECS, "dsl.stats.line.1."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_TOTAL_SEV_ERR_SECS, "dsl.stats.line.1."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_SHOWTIME, "dsl.stats.line.1."DSL_STAT_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_1_SHOWTIME_ERR_SECS, "dsl.stats.line.1."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_SHOWTIME_SEV_ERR_SECS, "dsl.stats.line.1."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_LAST_SHOWTIME, "dsl.stats.line.1."DSL_STAT_LAST_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_1_LAST_SHOWTIME_ERR_SECS, "dsl.stats.line.1."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_LAST_SHOWTIME_SEV_ERR_SECS, "dsl.stats.line.1."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_CURRENT_DAY, "dsl.stats.line.1."DSL_STAT_CURRENT_DAY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_1_CURRENT_DAY_ERR_SECS, "dsl.stats.line.1."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_CURRENT_DAY_SEV_ERR_SECS, "dsl.stats.line.1."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_QUARTER_HOUR, "dsl.stats.line.1."DSL_STAT_QUARTER_HOUR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_object, DSL_UPDATE_TYPE_NONE },
    
          { DSL_STATS_LINE_1_QUARTER_HOUR_ERR_SECS, "dsl.stats.line.1."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
    
          { DSL_STATS_LINE_1_QUARTER_HOUR_SEV_ERR_SECS, "dsl.stats.line.1."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_SEVERELY_ERRORED_SECS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
          json_type_int, DSL_UPDATE_TYPE_POLL },
             /* <dsl.stats.line.1.channel> section */
             { DSL_STATS_LINE_1_CHANNEL, "dsl.stats.line.1.channel",
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_START, "dsl.stats.line.1.channel."DSL_STAT_TOTAL_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_START, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_START, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_START, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_START, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR_START,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL, "dsl.stats.line.1.channel."DSL_STAT_TOTAL,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_XTUR_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_XTUR_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_XTUC_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_XTUC_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_XTUR_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_TOTAL_XTUC_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_TOTAL PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_XTUR_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_XTUR_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_XTUC_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_XTUC_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_XTUR_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_SHOWTIME_XTUC_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_XTUR_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_XTUR_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_XTUC_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_XTUC_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_XTUR_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_LAST_SHOWTIME_XTUC_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_LAST_SHOWTIME PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_XTUR_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_XTUR_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_XTUC_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_XTUC_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_XTUR_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_CURRENT_DAY_XTUC_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_CURRENT_DAY PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_object, DSL_UPDATE_TYPE_NONE },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_XTUR_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUR_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_XTUR_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUR_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_XTUC_FEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUC_FEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_XTUC_CRC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUC_CRC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_XTUR_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUR_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL },
    
             { DSL_STATS_LINE_1_CHANNEL_QUARTER_HOUR_XTUC_HEC_ERRORS, "dsl.stats.line.1.channel."DSL_STAT_QUARTER_HOUR PATH_SEPARATOR DSL_STAT_XTUC_HEC_ERRORS,
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
             json_type_int, DSL_UPDATE_TYPE_POLL }
    };
    static const DSL_uint32_t nNodesNum =
       sizeof(jsonStatusNodes) / sizeof(jsonStatusNodes[0]);
    
    /*
       main buffer to keep the status file in a json format
       (this buffer will be kept for whole parser lifetime
       in order to be updated and written down to the
       destination file only in case of need - with this
       approach no status file read operation is needed)
    */
    static json_object *pJsonStatusRootObj = DSL_NULL;
    
    /*
       This separator has to be defined as an array, because
       it is used differently by some JSON functions
    */
    static const char NODES_SEPARATOR[] = ".";
    
    /*
       Ioctl flag struct declaration
       (needed to avoid redundand IOCTL sending
       for grouped parameters)
    */
    typedef struct {
       const DSL_int_t nIoctl;
       DSL_boolean_t bIsSet;
    } DSL_CPE_IoctlFlag_t;
    
    /*
       Ioctl flags definitions (separate flag for each IOCTL
       that provides information for more then one parameter),
       initially set to FALSE
    */
    static DSL_CPE_IoctlFlag_t ioctlFlags[] =
    {
       { DSL_FIO_LINE_STATE_GET, DSL_FALSE},
       { DSL_FIO_G997_XTU_SYSTEM_ENABLING_CONFIG_GET, DSL_FALSE },
       { DSL_FIO_G997_XTU_SYSTEM_ENABLING_STATUS_GET, DSL_FALSE },
       { DSL_FIO_LINE_FEATURE_STATUS_GET, DSL_FALSE },
       { DSL_FIO_G997_LINE_STATUS_GET, DSL_FALSE },
       { DSL_FIO_G997_LINE_INVENTORY_GET, DSL_FALSE },
       { DSL_FIO_PM_CHANNEL_COUNTERS_TOTAL_GET, DSL_FALSE },
       { DSL_FIO_PM_CHANNEL_COUNTERS_SHOWTIME_GET, DSL_FALSE},
       { DSL_FIO_PM_CHANNEL_COUNTERS_15MIN_GET, DSL_FALSE},
       { DSL_FIO_PM_LINE_SEC_COUNTERS_TOTAL_GET, DSL_FALSE },
       { DSL_FIO_PM_LINE_SEC_COUNTERS_SHOWTIME_GET, DSL_FALSE },
       { DSL_FIO_PM_LINE_SEC_COUNTERS_1DAY_GET, DSL_FALSE },
       { DSL_FIO_PM_LINE_SEC_COUNTERS_15MIN_GET, DSL_FALSE },
       { DSL_FIO_SYSTEM_INTERFACE_CONFIG_GET, DSL_FALSE },
       { DSL_FIO_G997_FRAMING_PARAMETER_STATUS_GET, DSL_FALSE },
       { DSL_FIO_G997_CHANNEL_STATUS_GET, DSL_FALSE },
       { DSL_FIO_PM_DATA_PATH_COUNTERS_TOTAL_GET, DSL_FALSE },
       { DSL_FIO_PM_DATA_PATH_COUNTERS_SHOWTIME_GET, DSL_FALSE },
       { DSL_FIO_PM_CHANNEL_COUNTERS_1DAY_GET, DSL_FALSE },
       { DSL_FIO_PM_DATA_PATH_COUNTERS_1DAY_GET, DSL_FALSE },
       { DSL_FIO_PM_DATA_PATH_COUNTERS_15MIN_GET, DSL_FALSE }
    };
    static const DSL_uint32_t nFlagsNum =
       sizeof(ioctlFlags) / sizeof(ioctlFlags[0]);
    
    /*
       Standards struct declaration for standard parameters
    */
    typedef struct {
       DSL_uint8_t nOctet;
       DSL_uint8_t nBit;
       DSL_char_t *sName;
    } DSL_CPE_Standarts_t;
    
    /*
       Available standards definition
    */
    static const DSL_CPE_Standarts_t standartsTable[] = {
       { 0, XTSE_1_01_A_T1_413, ",T1.413" },
       { 0, XTSE_1_02_C_TS_101388, ",ETSI_101_388" },
       { 0, XTSE_1_03_A_1_NO | XTSE_1_04_A_1_O, ",G.992.1_Annex_A" },
       { 0, XTSE_1_05_B_1_NO | XTSE_1_06_B_1_O, ",G.992.1_Annex_B" },
       { 0, XTSE_1_07_C_1_NO | XTSE_1_08_C_1_O, ",G.992.1_Annex_C" },
    
       { 1, XTSE_2_01_A_2_NO, ",G.992.2_Annex_A" },
       { 1, XTSE_2_02_B_2_O, ",G.992.2_Annex_B" },
       { 1, XTSE_2_03_C_2_NO | XTSE_2_04_C_2_O, ",G.992.2_Annex_C" },
    
       { 2, XTSE_3_03_A_3_NO | XTSE_3_04_A_3_O, ",G.992.3_Annex_A" },
       { 2, XTSE_3_05_B_3_NO | XTSE_3_06_B_3_O, ",G.992.3_Annex_B" },
    
       { 3, XTSE_4_01_A_4_NO | XTSE_4_02_A_4_O, ",G.992.4_Annex_A" },
       { 3, XTSE_4_05_I_3_NO | XTSE_4_06_I_3_O, ",G.992.3_Annex_I" },
       { 3, XTSE_4_07_J_3_NO | XTSE_4_08_J_3_O, ",G.992.3_Annex_J" },
    
       { 4, XTSE_5_01_I_4_NO | XTSE_5_02_I_4_O, ",G.992.4_Annex_I" },
       { 4, XTSE_5_03_L_3_NO | XTSE_5_04_L_3_NO, ",G.992.3_Annex_L" },
       { 4, XTSE_5_05_L_3_O | XTSE_5_06_L_3_O, ",G.992.3_Annex_L" },
       { 4, XTSE_5_07_M_3_NO | XTSE_5_08_M_3_O, ",G.992.3_Annex_M" },
    
       { 5, XTSE_6_01_A_5_NO | XTSE_6_02_A_5_O, ",G.992.5_Annex_A" },
       { 5, XTSE_6_03_B_5_NO | XTSE_6_04_B_5_O, ",G.992.5_Annex_B" },
       { 5, XTSE_6_07_I_5_NO | XTSE_6_08_I_5_O, ",G.992.5_Annex_I" },
    
       { 6, XTSE_7_01_J_5_NO | XTSE_7_02_J_5_O, ",G.992.5_Annex_J" },
       { 6, XTSE_7_03_M_5_NO | XTSE_7_04_M_5_O, ",G.992.5_Annex_M" },
    
       { 7, XTSE_8_01_A, ",G.993.2_Annex_A" },
       { 7, XTSE_8_02_B, ",G.993.2_Annex_B" },
       { 7, XTSE_8_03_C, ",G.993.2_Annex_C" }
    };
    static const DSL_uint32_t nStandardsNum =
       sizeof(standartsTable) / sizeof(standartsTable[0]);
    
    /*
       Profiles definitions
    */
    static const DSL_char_t *profilesTable[] =
       { ",8a", ",8b", ",8c", ",8d", ",12a", ",12b", ",17a", ",30a", ",35b" };
    
    /*
       Definitions for vendor and country id
    */
    #define MAX_LEN_VENDOR_ID 4
    #define MAX_LEN_COUNTRY_ID 2
    
    /* Definitions for PM counters */
    #define DSL_PM_HISTORY_INTERVALS_NUM 2
    
    
    /*
       Definition for values to be written to status file in hex format
    */
    #define MAX_HEX_STR_LEN 5
    
    
    Oussama Ghorbel's avatar
    Oussama Ghorbel committed
    /**********************************************/
    /* start local function declarations          */
    /**********************************************/
    
    static DSL_void_t DSL_CPE_JsonStatusFileCreate();
    
    static json_object* DSL_CPE_JsonNodeParentGet(
       json_object *pRoot,
       const DSL_char_t *pSectionPath
    );
    
    static const DSL_char_t* DSL_CPE_JsonNodePathGet(
       const DSL_CPE_StatusNodeIdx_t eNodeIdx
    );
    
    static const DSL_char_t* DSL_CPE_JsonNodeNameGet(
       const DSL_char_t* jsonPath
    );
    
    static DSL_boolean_t DSL_CPE_IsWithinSection(
       const DSL_char_t* jsonPath,
       const DSL_char_t* jsonSectionPath
    );
    
    static DSL_Error_t DSL_CPE_JsonInitParamsUpdate(
       DSL_CPE_Control_Context_t *pContext
    );
    
    static DSL_Error_t DSL_CPE_JsonEvtParamsUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx
    );
    
    static DSL_Error_t DSL_CPE_JsonPollParamsUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eSectionIdx
    );
    
    static DSL_Error_t DSL_CPE_JsonParamsUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx
    );
    
    static DSL_Error_t DSL_CPE_JsonStatusFileWrite(
    );
    
    static DSL_void_t DSL_CPE_JsonLineNrOfEntriesUpdate(
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonChannelNrOfEntriesUpdate(
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonBndGroupNrOfEntriesUpdate(
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonApiVersionUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonMeiVersionUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonHwVersionUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonChipsetTypeUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonLineStatusUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonUpstreamUpdate(
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonFwVersionUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonLinkStatusUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonStdSupportedUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonXtseConfigUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonStdUsedUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonXtseStatusUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonLineEncodingUpdate(
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonAllowedProfilesUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonCurrentProfileUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonPowerMgmtStateUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonSuccFailCauseUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonLastStateTransmUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_AccessDir_t nDirection,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonUs0MaskUpdate(
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonTrellisUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonActSnrModeUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonLineNrUpdate(
       const DSL_int_t nDevice,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonMaxBitRateUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonNoiseMarginUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonPowerUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonAttenuationUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonSnrMpbUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_int_t nDevice,
       const DSL_AccessDir_t nDirection,
       const DSL_char_t* jsonPath
    );
    
    static DSL_void_t DSL_CPE_JsonXturVendorUpdate(
       DSL_CPE_Control_Context_t *pContext,
       const DSL_CPE_StatusNodeIdx_t eNodeIdx,
       const DSL_char_t* jsonPath
    );