diff --git a/ChangeLog b/ChangeLog index 9d3656cbc5c636588e43a973d117b0543ffbe951..6c8ac4d6d2c5feab0b75b4c41119be2d933406e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,24 @@ NEXT VERSION +V4.20.1.2 - 2018-08-16 +common: +- VRX (DSLCPE_SW-1160) Release of memory within PM initialization sequence + missing in some error conditions + +V4.20.1.1 - 2018-08-02 +common: +- VRX (DSLCPE_SW-1150) Shutdown sequence does not work correctly for UGW-8.x + +V4.20.1 - 2018-06-28 +- + +V4.20.0 - 2018-05-30 +common: +- VRX (DSLCPE_SW-1098) Power Saving Support by the DSL-API +- VRX (DSLCPE_SW-1119) Update MCAT header files to latest revision (Rev.3.1) +- VRX (DSLCPE_SW-1118) Bugfixes for implementation changes of event handling +- VRX (DSLCPE_SW-1104) Improvement for Firmware message dump module + V4.19.3 - 2017-12-06 common: - VRX (DSLCPE_SW-1116) Intra DTU must be enabled for R5 firmware diff --git a/configure b/configure index 5fce8372369d22ebe8e8b4b42177e90a28ff73c4..199d5b386d21c1ff9bee2a1b95d617ad8fafda78 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in Revision: 1.177 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for DSL CPE API driver 4.19.3. +# Generated by GNU Autoconf 2.69 for DSL CPE API driver 4.20.1.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='DSL CPE API driver' PACKAGE_TARNAME='drv_dsl_cpe_api' -PACKAGE_VERSION='4.19.3' -PACKAGE_STRING='DSL CPE API driver 4.19.3' +PACKAGE_VERSION='4.20.1.2' +PACKAGE_STRING='DSL CPE API driver 4.20.1.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1440,7 +1440,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures DSL CPE API driver 4.19.3 to adapt to many kinds of systems. +\`configure' configures DSL CPE API driver 4.20.1.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1506,7 +1506,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of DSL CPE API driver 4.19.3:";; + short | recursive ) echo "Configuration of DSL CPE API driver 4.20.1.2:";; esac cat <<\_ACEOF @@ -1697,7 +1697,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -DSL CPE API driver configure 4.19.3 +DSL CPE API driver configure 4.20.1.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1752,7 +1752,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by DSL CPE API driver $as_me 4.19.3, which was +It was created by DSL CPE API driver $as_me 4.20.1.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2618,7 +2618,7 @@ fi # Define the identity of the package. PACKAGE='drv_dsl_cpe_api' - VERSION='4.19.3' + VERSION='4.20.1.2' cat >>confdefs.h <<_ACEOF @@ -8776,7 +8776,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by DSL CPE API driver $as_me 4.19.3, which was +This file was extended by DSL CPE API driver $as_me 4.20.1.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8842,7 +8842,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -DSL CPE API driver config.status 4.19.3 +DSL CPE API driver config.status 4.20.1.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 95b26f7496dc358f0ff4bbb85d7de8e00264990e..8b0682f952aa144ef22854976f50f2a7c2da99db 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ AC_REVISION($Revision: 1.177 $) -AC_INIT([DSL CPE API driver],[4.19.3],[],[drv_dsl_cpe_api]) +AC_INIT([DSL CPE API driver],[4.20.1.2],[],[drv_dsl_cpe_api]) AC_CONFIG_SRCDIR(src/Makefile.am) AM_INIT_AUTOMAKE([tar-pax]) diff --git a/doc/doxyconfig.vrx b/doc/doxyconfig.vrx index 50b2457af1f5b00e0e8cc398fa2cbacd1cfef022..16b3ae716eaaba270a4eb6aa0504d1f2a2ecbc18 100644 --- a/doc/doxyconfig.vrx +++ b/doc/doxyconfig.vrx @@ -22,7 +22,7 @@ PROJECT_NAME = "DSL CPE API" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 4.19.3 +PROJECT_NUMBER = 4.20.1.2 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/src/Makefile.am b/src/Makefile.am index ed9a5a9602ce0b8141ffa8cd072c33c5e99e5ba5..ca13c84b84e641be885099bec75938306d00fed4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,7 +19,7 @@ endif if FW_R9 VRX_HEADER_DIR = include/mcat2.7 else -VRX_HEADER_DIR = include/mcat3.0 +VRX_HEADER_DIR = include/mcat3.1 endif @@ -159,13 +159,13 @@ drv_vrx_specific_extra = \ include/mcat2.7/drv_dsl_cpe_vrx_msg_olr.h \ include/mcat2.7/drv_dsl_cpe_vrx_msg_perf_pmd.h \ include/mcat2.7/drv_dsl_cpe_vrx_msg_tc_counters.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_config_pmd.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_const.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_dmt_scope.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_ghs_status.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_olr.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_perf_pmd.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_tc_counters.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_config_pmd.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_const.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_dmt_scope.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_ghs_status.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_olr.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_perf_pmd.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_tc_counters.h \ include/drv_dsl_cpe_vrx_ctx.h \ ../scripts/inst_drv_dsl_cpe_api_vrx.sh diff --git a/src/Makefile.in b/src/Makefile.in index c6b0e5538f0d6cde7558e42905c8c4f20ab90c5a..36846b571de6e3a9e8d2f4a55d407aab684e9e31 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -479,7 +479,7 @@ top_srcdir = @top_srcdir@ @DSL_CPE_API_LIBRARY_BUILD_2_6_TRUE@@KERNEL_2_6_TRUE@noinst_LIBRARIES = lib_dsl_cpe_api.a @KERNEL_2_6_FALSE@noinst_LIBRARIES = lib_dsl_cpe_api.a @DEVICE_DANUBE_TRUE@bin_SCRIPTS = ../scripts/inst_drv_dsl_cpe_api_danube.sh -@FW_R9_FALSE@VRX_HEADER_DIR = include/mcat3.0 +@FW_R9_FALSE@VRX_HEADER_DIR = include/mcat3.1 @FW_R9_TRUE@VRX_HEADER_DIR = include/mcat2.7 drv_dsl_cpe_api_includedir = $(includedir) drv_dsl_cpe_api_include_HEADERS = include/drv_dsl_cpe*.h @@ -591,13 +591,13 @@ drv_vrx_specific_extra = \ include/mcat2.7/drv_dsl_cpe_vrx_msg_olr.h \ include/mcat2.7/drv_dsl_cpe_vrx_msg_perf_pmd.h \ include/mcat2.7/drv_dsl_cpe_vrx_msg_tc_counters.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_config_pmd.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_const.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_dmt_scope.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_ghs_status.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_olr.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_perf_pmd.h \ - include/mcat3.0/drv_dsl_cpe_vrx_msg_tc_counters.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_config_pmd.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_const.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_dmt_scope.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_ghs_status.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_olr.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_perf_pmd.h \ + include/mcat3.1/drv_dsl_cpe_vrx_msg_tc_counters.h \ include/drv_dsl_cpe_vrx_ctx.h \ ../scripts/inst_drv_dsl_cpe_api_vrx.sh diff --git a/src/common/drv_dsl_cpe_api.c b/src/common/drv_dsl_cpe_api.c index 7377a1336389aab0536d0ba3a6fb6b911ab6abad..694127cf90d6b6b761a16bbcff2bde325c6730f7 100644 --- a/src/common/drv_dsl_cpe_api.c +++ b/src/common/drv_dsl_cpe_api.c @@ -1779,7 +1779,8 @@ DSL_Error_t DSL_DRV_AutobootControlSet( /** TODO: Check why only not on chip bonding **/ /* Ignore for locked line */ if (DSL_DRV_BONDING_ENABLED && (DSL_DRV_LINES_PER_DEVICE == 1) - && nLineLocked == DSL_DEV_NUM(pContext)) + && nLineLocked == DSL_DEV_NUM(pContext) + && pData->data.nCommand != DSL_AUTOBOOT_CTRL_STOP_PD) { DSL_DEBUG(DSL_DBG_WRN, (pContext, SYS_DBG_WRN"DSL[%02d]: WARNING - PAF not available, line disabled!" @@ -1936,6 +1937,9 @@ DSL_Error_t DSL_DRV_AutobootControlSet( /* no break */ /* ... pass to restart*/ +#if defined (DSL_VRX_DEVICE_VR11) + case DSL_AUTOBOOT_CTRL_STOP_PD: +#endif case DSL_AUTOBOOT_CTRL_RESTART: case DSL_AUTOBOOT_CTRL_RESTART_FULL: if (pData->data.nCommand == DSL_AUTOBOOT_CTRL_RESTART_FULL) @@ -1999,10 +2003,20 @@ DSL_Error_t DSL_DRV_AutobootControlSet( DSL_AUTOBOOT_STATUS_RUNNING, DSL_FW_REQUEST_NA); } +#if defined(DSL_VRX_DEVICE_VR11) + if (pData->data.nCommand == DSL_AUTOBOOT_CTRL_STOP_PD) + { + DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bPowerDown, DSL_TRUE); + nErrCode = DSL_DRV_AutobootStatusSet(pContext, DSL_AUTOBOOT_STATUS_SHUTDOWN_PD, + DSL_FW_REQUEST_NA); + } +#endif + if (DSL_DRV_BONDING_ENABLED && DSL_DRV_LINES_PER_DEVICE == 1) { if ((pData->data.nCommand == DSL_AUTOBOOT_CTRL_RESTART) || - (pData->data.nCommand == DSL_AUTOBOOT_CTRL_RESTART_FULL)) + (pData->data.nCommand == DSL_AUTOBOOT_CTRL_RESTART_FULL) || + (pData->data.nCommand == DSL_AUTOBOOT_CTRL_STOP_PD)) { DSL_DRV_MUTEX_LOCK(bndLineLockMutex); /* Restart for unlocked line */ @@ -6246,6 +6260,7 @@ DSL_Error_t DSL_DRV_IoctlHandle( DSL_uint32_t nArg) { DSL_Error_t nErrCode = DSL_ERROR; + DSL_Error_t nCtxRWErrCode = DSL_ERROR; DSL_IOCTL_arg_t *pIOCTL_arg = DSL_NULL; DSL_EventData_Union_t *pEventData; DSL_uint8_t *pMsgBuf, *pOldMsgBuf, *pMaskBuf, *pDataBuf; @@ -6257,7 +6272,9 @@ DSL_Error_t DSL_DRV_IoctlHandle( DSL_IOCTL_Table_t *pIoctlTable = ioctlTable, *pIoctlRecord = ioctlTable ; DSL_boolean_t bIoctlFound = DSL_FALSE; DSL_DEV_Handle_t dev; +#if defined (DSL_VRX_DEVICE_VR11) DSL_DEV_VersionCheck_t nVerCheck = DSL_VERSION_ERROR; +#endif DSL_uint32_t nOppositeLine; #ifndef DSL_DEBUG_DISABLE @@ -6822,19 +6839,23 @@ DSL_Error_t DSL_DRV_IoctlHandle( DSL_DRV_VRX_FirmwareVersionCheck(pContext, DSL_MIN_FW_VERSION_VR11_R5, &nVerCheck); if (bFwEventActivation && nVerCheck >= DSL_VERSION_EQUAL) { - DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bFwEventActivation, DSL_TRUE); + DSL_CTX_WRITE_SCALAR(pContext, nCtxRWErrCode, bFwEventActivation, DSL_TRUE); + DSL_SET_ERROR_CODE(nCtxRWErrCode, nErrCode); } else { - nErrCode = DSL_WRN_CONFIG_PARAM_IGNORED; - DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bFwEventActivation, DSL_FALSE); + DSL_SET_ERROR_CODE(DSL_WRN_CONFIG_PARAM_IGNORED, nErrCode); + DSL_CTX_WRITE_SCALAR(pContext, nCtxRWErrCode, bFwEventActivation, DSL_FALSE); + DSL_SET_ERROR_CODE(nCtxRWErrCode, nErrCode); } #else - nErrCode = DSL_WRN_CONFIG_PARAM_IGNORED; - DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bFwEventActivation, DSL_FALSE); + DSL_SET_ERROR_CODE(DSL_WRN_CONFIG_PARAM_IGNORED, nErrCode); + DSL_CTX_WRITE_SCALAR(pContext, nCtxRWErrCode, bFwEventActivation, DSL_FALSE); + DSL_SET_ERROR_CODE(nCtxRWErrCode, nErrCode); #endif /* defined (DSL_VRX_DEVICE_VR11) */ - DSL_CTX_READ_SCALAR(pContext, nErrCode, bFwEventActivation, bFwEventActivation); + DSL_CTX_READ_SCALAR(pContext, nCtxRWErrCode, bFwEventActivation, bFwEventActivation); + DSL_SET_ERROR_CODE(nCtxRWErrCode, nErrCode); dev = pContext->pDevCtx->nfc_lowHandle; diff --git a/src/common/drv_dsl_cpe_autoboot.c b/src/common/drv_dsl_cpe_autoboot.c index b93da053565ca4ef5d28e8a6d9a9c6147b981db1..7698a3babcc4dc4506fccfff2c58e51a7842aefa 100644 --- a/src/common/drv_dsl_cpe_autoboot.c +++ b/src/common/drv_dsl_cpe_autoboot.c @@ -40,6 +40,11 @@ static DSL_Error_t DSL_DRV_AutobootHandleFwRequest( static DSL_Error_t DSL_DRV_AutobootHandleFwWait( DSL_Context_t *pContext); +#if defined (DSL_VRX_DEVICE_VR11) +static DSL_Error_t DSL_DRV_AutobootHandlePowerDown( + DSL_Context_t *pContext); +#endif + static DSL_Error_t DSL_DRV_AutobootHandleFwReady( DSL_Context_t *pContext); @@ -82,29 +87,12 @@ DSL_Error_t DSL_DRV_AutobootSignalDeviceEvt( DSL_Error_t DSL_DRV_AutobootHandleDeviceEvt( DSL_Context_t *pContext) { - DSL_Error_t nErrChReadMessage; - DSL_Error_t nErrCode = DSL_SUCCESS; - - DSL_DEBUG(DSL_DBG_MSG, - (pContext, SYS_DBG_MSG"DSL[%02d]: IN - DSL_DRV_AutobootHandleDeviceEvt" - DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); - - if (pContext->bFwEventRcvd) + if (pContext->bFwEventRcvd || pContext->nFwEventLastReadErr == DSL_SUCCESS) { - pContext->bFwEventRcvd = DSL_FALSE; - - do - { - /* Handle VRX driver autonomous messages*/ - DSL_DRV_VRX_HandleMessage(pContext, &nErrChReadMessage); - } while(nErrChReadMessage == DSL_SUCCESS); + DSL_DRV_VRX_HandleMessage(pContext); } - DSL_DEBUG(DSL_DBG_MSG, - (pContext, SYS_DBG_MSG"DSL[%02d]: OUT - DSL_DRV_AutobootHandleDeviceEvt" - DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); - - return nErrCode; + return DSL_SUCCESS; } static DSL_Error_t DSL_DRV_AutobootThreadInit( @@ -164,6 +152,9 @@ DSL_Error_t DSL_DRV_AutobootThreadStart( DSL_Context_t *pContext) { DSL_Error_t nErrCode = DSL_SUCCESS; +#if defined (DSL_VRX_DEVICE_VR11) + DSL_boolean_t bPowerDown = DSL_FALSE; +#endif DSL_CHECK_POINTER(pContext, pContext->pDevCtx); DSL_CHECK_ERR_CODE(); @@ -174,6 +165,20 @@ DSL_Error_t DSL_DRV_AutobootThreadStart( (pContext, SYS_DBG_MSG"DSL[%02d]: Autoboot thread will be started..." DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); +#if defined (DSL_VRX_DEVICE_VR11) + DSL_CTX_READ_SCALAR(pContext, nErrCode, bPowerDown, bPowerDown); + if (bPowerDown) + { + DSL_DEBUG(DSL_DBG_WRN, + (pContext, SYS_DBG_WRN"DSL[%02d]: Autoboot thread previously powered down. " + "Finishing thread completion..."DSL_DRV_CRLF, + DSL_DEV_NUM(pContext))); + + DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bPowerDown, DSL_FALSE); + DSL_DRV_WAIT_COMPLETION(&pContext->AutobootControl); + } +#endif + pContext->bAutobootThreadStarted = DSL_TRUE; /* Set Autoboot Status*/ @@ -238,6 +243,9 @@ static DSL_int_t DSL_DRV_AutobootThreadMain( DSL_int_t nEventType = 0; DSL_uint32_t nTimeoutID = 0; #endif +#if defined (DSL_VRX_DEVICE_VR11) + DSL_boolean_t bPowerDown = DSL_FALSE; +#endif if (pContext == DSL_NULL) { @@ -315,9 +323,21 @@ static DSL_int_t DSL_DRV_AutobootThreadMain( (pContext, SYS_DBG_MSG"DSL[%02d]: autoboot ending (%lu)"DSL_DRV_CRLF, DSL_DEV_NUM(pContext), DSL_DRV_TimeMSecGet())); +#if defined (DSL_VRX_DEVICE_VR11) + DSL_CTX_READ_SCALAR(pContext, nErrCode, bPowerDown, bPowerDown); + + if(bPowerDown) + { + nErrCode = DSL_DRV_AutobootStatusSet(pContext, DSL_AUTOBOOT_STATUS_STOPPED_PD, + DSL_FW_REQUEST_NA); + } + else +#endif + { /* Set Autoboot Status*/ - nErrCode = DSL_DRV_AutobootStatusSet(pContext, DSL_AUTOBOOT_STATUS_STOPPED, - DSL_FW_REQUEST_NA); + nErrCode = DSL_DRV_AutobootStatusSet(pContext, DSL_AUTOBOOT_STATUS_STOPPED, + DSL_FW_REQUEST_NA); + } pContext->bAutobootThreadStarted = DSL_FALSE; @@ -556,6 +576,10 @@ DSL_Error_t DSL_DRV_AutobootStateCheck( break; case DSL_AUTOBOOTSTATE_CONFIG_WRITE_WAIT: +#if defined (DSL_VRX_DEVICE_VR11) + DSL_DRV_AutobootHandlePowerDown(pContext); +#endif + /* Wait for the external trigger to continue Autoboot processing*/ DSL_CTX_READ_SCALAR(pContext, nErrCode, bAutobootContinue, bAutobootContinue); @@ -1152,6 +1176,9 @@ static DSL_Error_t DSL_DRV_AutobootHandleRestart( #endif DSL_boolean_t bSoftRestart = DSL_FALSE; DSL_uint8_t XTSE[DSL_G997_NUM_XTSE_OCTETS] = {0}; +#if defined (DSL_VRX_DEVICE_VR11) + DSL_boolean_t bPowerDown = DSL_FALSE; +#endif DSL_DEBUG(DSL_DBG_MSG, (pContext, SYS_DBG_MSG"DSL[%02d]: IN - DSL_AutobootHandleRestart" @@ -1250,7 +1277,15 @@ static DSL_Error_t DSL_DRV_AutobootHandleRestart( DSL_CTX_READ(pContext, nErrCode, bAutobootDisable, bAutobootDisable); - if (bAutobootDisable) +#if defined (DSL_VRX_DEVICE_VR11) + DSL_CTX_READ(pContext, nErrCode, bPowerDown, bPowerDown); +#endif + + if (bAutobootDisable +#if defined (DSL_VRX_DEVICE_VR11) + && !bPowerDown +#endif + ) { if (DSL_DRV_BONDING_ENABLED && DSL_DRV_LINES_PER_DEVICE == 2) { @@ -1891,12 +1926,96 @@ static DSL_Error_t DSL_DRV_AutobootHandleFwWait( return nErrCode; } +#if defined(DSL_VRX_DEVICE_VR11) +static DSL_Error_t DSL_DRV_AutobootHandlePowerDown( + DSL_Context_t *pContext) +{ + DSL_Error_t nErrCode = DSL_SUCCESS; + DSL_boolean_t bPowerDown = DSL_FALSE, bPoweredDown = DSL_FALSE; + DSL_DEV_VersionCheck_t nVerCheck = 0; + ACK_ADSL_FeatureMapGet_t nFeatureMapGetAck; + + DSL_CTX_READ_SCALAR(pContext, nErrCode, bPowerDown, bPowerDown); + + if (bPowerDown) + { + nErrCode = DSL_DRV_VRX_FirmwareVersionCheck(pContext, + DSL_MIN_FW_VERSION_VR11_R4MR2, &nVerCheck); + + if (nErrCode != DSL_SUCCESS) + { + DSL_DEBUG(DSL_DBG_ERR, (pContext, SYS_DBG_ERR + "DSL[%02d]: ERROR - FW version check failed!" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + } + else if (nVerCheck >= DSL_VERSION_EQUAL) + { + nErrCode = DSL_DRV_VRX_SendMsgFeatureMapGet(pContext, (DSL_uint8_t *) &nFeatureMapGetAck); + + if (nErrCode != DSL_SUCCESS ) + { + DSL_DEBUG( DSL_DBG_ERR, + (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Feature Map get failed!" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + } + else if (nFeatureMapGetAck.W0F12) + { + bPoweredDown = DSL_TRUE; + + DSL_DRV_LineStateSet(pContext, DSL_LINESTATE_POWER_DOWN); + DSL_DRV_DEV_LinkPowerDown(pContext); + + /** Stop Autoboot thread now (from within) + * Need to complete it on the next restart + */ + pContext->bAutobootThreadShutdown = DSL_TRUE; + + +#ifdef INCLUDE_DSL_PM + /* Suspend PM module*/ + nErrCode = DSL_DRV_PM_Suspend(pContext); + + if (nErrCode != DSL_SUCCESS) + { + DSL_DEBUG( DSL_DBG_ERR, + (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - PM module suspend failed!" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + } +#endif /* #ifdef INCLUDE_DSL_PM*/ + + /* Trigger restart sequence */ + DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bAutobootRestart, DSL_TRUE); + DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bAutobootContinue, DSL_FALSE); + + DSL_DEBUG(DSL_DBG_WRN, (pContext, SYS_DBG_WRN + "DSL[%02d]: Powering down..." + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + } + } + else + { + nErrCode = DSL_ERR_NOT_SUPPORTED_BY_FIRMWARE; + } + + if(bPoweredDown == DSL_FALSE) + { + DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bPowerDown, DSL_FALSE); + } + } + + return (nErrCode); +} +#endif /* DSL_VRX_DEVICE_VR11 */ + static DSL_Error_t DSL_DRV_AutobootHandleFwReady( DSL_Context_t *pContext) { DSL_Error_t nErrCode = DSL_SUCCESS, nRet; DSL_boolean_t bPowerManagementL3Forced = DSL_FALSE, bWaitBeforeConfigWrite = DSL_FALSE; +#if defined(DSL_VRX_DEVICE_VR11) + DSL_boolean_t bPowerDown = DSL_FALSE; +#endif /* Reset bFwRequestHandled flag*/ DSL_CTX_WRITE_SCALAR(pContext, nErrCode, bFwRequestHandled, DSL_FALSE); @@ -1917,10 +2036,21 @@ static DSL_Error_t DSL_DRV_AutobootHandleFwReady( DSL_CTX_READ_SCALAR(pContext, nErrCode, bPowerManagementL3Forced, bPowerManagementL3Forced); - /* Get Link Activation option*/ - DSL_CTX_READ_SCALAR(pContext, nErrCode, - nAutobootConfig.nStateMachineOptions.bWaitBeforeConfigWrite, - bWaitBeforeConfigWrite); +#if defined(DSL_VRX_DEVICE_VR11) + DSL_CTX_READ_SCALAR(pContext, nErrCode, bPowerDown, bPowerDown); + + if(bPowerDown) + { + bWaitBeforeConfigWrite = DSL_TRUE; + } + else +#endif + { + /* Get Link Activation option*/ + DSL_CTX_READ_SCALAR(pContext, nErrCode, + nAutobootConfig.nStateMachineOptions.bWaitBeforeConfigWrite, + bWaitBeforeConfigWrite); + } /* Switch to the next state according to the link activation option*/ if (bWaitBeforeConfigWrite) diff --git a/src/common/drv_dsl_cpe_os_linux.c b/src/common/drv_dsl_cpe_os_linux.c index bd87dc60b5c2689e43c225eb9d6c216b69461532..c73b197b158f839234a1de692b26beccf945ee21 100644 --- a/src/common/drv_dsl_cpe_os_linux.c +++ b/src/common/drv_dsl_cpe_os_linux.c @@ -21,6 +21,8 @@ #include <linux/device.h> +#include "drv_mei_cpe_api_intern.h" /* MEI_InternalDevLayout */ + #undef DSL_DBG_BLOCK #define DSL_DBG_BLOCK DSL_DBG_OS @@ -1244,6 +1246,30 @@ int __init DSL_ModuleInit(void) printk(DSL_DRV_CRLF DSL_DRV_CRLF "Lantiq CPE API Driver version: %s" DSL_DRV_CRLF, &(dsl_cpe_api_version[4])); + + /** When autoload active */ + if (g_MaxDeviceNumber == (IFX_uint8_t)(-1) + && g_LinesPerDevice == (IFX_uint8_t)(-1) + && g_ChannelsPerLine == (IFX_uint8_t)(-1)) + { + DSL_uint32_t mei_MaxDeviceNumber = -1; + DSL_uint32_t mei_LinesPerDevice = -1; + DSL_uint32_t mei_ChannelsPerLine = -1; + + printk(DSL_DRV_CRLF DSL_DRV_CRLF "Lantiq CPE API Driver - autoloading layout..." DSL_DRV_CRLF); + + MEI_InternalGetDevLayout( + &mei_MaxDeviceNumber, + &mei_LinesPerDevice, + &mei_ChannelsPerLine); + + g_MaxDeviceNumber = (DSL_uint8_t)mei_MaxDeviceNumber; + g_LinesPerDevice = (DSL_uint8_t)mei_LinesPerDevice; + g_ChannelsPerLine = (DSL_uint8_t)mei_ChannelsPerLine; + + debug_level = 3; + } + printk(DSL_DRV_CRLF DSL_DRV_CRLF "Lantiq CPE API Device layout: %d devices" ", %d lines, %d channels" DSL_DRV_CRLF,g_MaxDeviceNumber, g_LinesPerDevice, g_ChannelsPerLine); if ( diff --git a/src/device/drv_dsl_cpe_device_vrx.c b/src/device/drv_dsl_cpe_device_vrx.c index 1554cde8bafdaa4c488327a5256f1f96d7d88312..c9d05fdccaf7c52d5aaa3fc3b9171b520b8bb1f6 100644 --- a/src/device/drv_dsl_cpe_device_vrx.c +++ b/src/device/drv_dsl_cpe_device_vrx.c @@ -333,9 +333,12 @@ DSL_Error_t DSL_DRV_VRX_CamExceptionHandle( } /* Update FW reinit counter*/ - if ((lineInitStatus.nLineInitSubStatus == LINIT_SUB_FW_RETRY) || - (lineInitStatus.nLineInitSubStatus == LINIT_SUB_S_PP_DRIVER) || - (lineInitStatus.nLineInitSubStatus == LINIT_SUB_S_PP_CLOCK_NEW)) + if ( +#ifdef DSL_VRX_DEVICE_VR11 + (lineInitStatus.nLineInitSubStatus == LINIT_SUB_S_PP_CLOCK_NEW) || +#endif /* DSL_VRX_DEVICE_VR11 */ + (lineInitStatus.nLineInitSubStatus == LINIT_SUB_FW_RETRY) || + (lineInitStatus.nLineInitSubStatus == LINIT_SUB_S_PP_DRIVER)) { nCamFwReinits++; DSL_DEBUG(DSL_DBG_MSG, @@ -1816,9 +1819,14 @@ DSL_Error_t DSL_DRV_VRX_FailReasonGet( case ALM_ModemFSM_FailReasonGet_S_INTENDED_LOCAL_SHUTDOWN: lineInitSubStatus = LINIT_SUB_S_INTENDED_LOCAL_SHUTDOWN; break; +#if defined (DSL_VRX_DEVICE_VR11) case ALM_ModemFSM_FailReasonGet_S_PP_CLOCK_NEW: lineInitSubStatus = LINIT_SUB_S_PP_CLOCK_NEW; break; + case ALM_ModemFSM_FailReasonGet_S_PP_ERB_INIT: + lineInitSubStatus = LINIT_SUB_S_PP_ERB_INIT; + break; +#endif /* defined (DSL_VRX_DEVICE_VR11) */ default: lineInitSubStatus = LINIT_SUB_UNKNOWN; break; @@ -3177,8 +3185,7 @@ static DSL_Error_t DSL_DRV_VRX_PollDrvForModemResetState( DSL_Error_t nErrCode = DSL_SUCCESS; DSL_int32_t nWaitCount = 0; DSL_LineStateValue_t nLineState = DSL_LINESTATE_UNKNOWN; - DSL_boolean_t bIdleReached = DSL_FALSE, bFwEventActivation; - DSL_Error_t nErrChReadMessage; + DSL_boolean_t bIdleReached = DSL_FALSE; DSL_DEBUG(DSL_DBG_MSG, (pContext, SYS_DBG_MSG"DSL[%02d]: IN - DSL_DRV_VRX_PollDrvForModemResetState" @@ -3187,13 +3194,6 @@ static DSL_Error_t DSL_DRV_VRX_PollDrvForModemResetState( /* wait for Modem Reset state max 4 sec */ for (nWaitCount = 0; nWaitCount < 40; nWaitCount++) { - DSL_CTX_READ_SCALAR(pContext, nErrCode, bFwEventActivation, bFwEventActivation); - - if(bFwEventActivation) - { - DSL_DRV_VRX_HandleMessage(pContext, &nErrChReadMessage); - } - /* Get line state*/ nErrCode = DSL_DRV_DEV_LineStateGet( pContext, &nLineState, DSL_NULL); if( nErrCode != DSL_SUCCESS ) @@ -3407,6 +3407,7 @@ static DSL_Error_t DSL_DRV_VRX_TestParametersFeUpdate( DSL_uint16_t nDataLen = 0; #ifndef DSL_DEBUG_DISABLE DSL_uint16_t nMsgId = EVT_PMD_TESTPARAMSGET; + DSL_uint16_t nClass = 0x02; #endif DSL_DEBUG( DSL_DBG_MSG, @@ -3433,7 +3434,7 @@ static DSL_Error_t DSL_DRV_VRX_TestParametersFeUpdate( } #ifndef DSL_DEBUG_DISABLE - DSL_DRV_VRX_DumpMessage(pContext, nMsgId, (DSL_uint16_t *)pMsg, (pMsg->Length + 4), DSL_TRUE); + DSL_DRV_VRX_DumpMessage(pContext, nClass, nMsgId, (DSL_uint16_t *)pMsg, (pMsg->Length + 4), DSL_TRUE); #endif /* DSL_DEBUG_DISABLE */ nDataLen = (pMsg->EndIndex - pMsg->StartIndex) + 1; @@ -3600,8 +3601,7 @@ static DSL_Error_t DSL_DRV_VRX_WaitingMessageCopyData( #endif /* HAS_TO_BE_CROSSCHECKED_FOR_VRX*/ DSL_Error_t DSL_DRV_VRX_HandleMessage( - DSL_Context_t *pContext, - DSL_Error_t *pnErrChReadMessage) + DSL_Context_t *pContext) { DSL_Error_t nErrCode = DSL_SUCCESS; DSL_uint8_t buf[512]; @@ -3617,7 +3617,7 @@ DSL_Error_t DSL_DRV_VRX_HandleMessage( sMsg.paylSize_byte = sizeof(buf); sMsg.pPayload = buf; - *pnErrChReadMessage = DSL_ERROR; + pContext->nFwEventLastReadErr = DSL_ERROR; /* check for received NFCs */ if( DSL_DRV_VRX_ChReadMessage(pContext, &sMsg) >= DSL_SUCCESS ) @@ -3625,8 +3625,8 @@ DSL_Error_t DSL_DRV_VRX_HandleMessage( /* one message received, handle it...*/ if( sMsg.msgCtrl != MEI_MSG_CTRL_MODEM_MSG ) { - DSL_DEBUG( DSL_DBG_MSG, - (pContext, SYS_DBG_MSG"DSL[%02d]: Unsupported VRx driver message received MsgID %x" + DSL_DEBUG( DSL_DBG_WRN, + (pContext, SYS_DBG_WRN"DSL[%02d]: Unsupported VRx driver message received MsgID %x" DSL_DRV_CRLF, DSL_DEV_NUM(pContext), sMsg.msgId)); } else @@ -3640,17 +3640,19 @@ DSL_Error_t DSL_DRV_VRX_HandleMessage( break; #endif /* INCLUDE_DSL_DELT*/ case EVT_MODEMFSM_STATEGET: + pContext->bFwEventRcvd = DSL_FALSE; + pContext->nFwEventLastReadErr = DSL_SUCCESS; + DSL_DEBUG( DSL_DBG_MSG, (pContext, SYS_DBG_MSG"DSL[%02d]: Received EVT_MODEMFSM_STATEGET" DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); DSL_DRV_DEV_LineStateGet(pContext, &nLineState, (EVT_ModemFSM_StateGet_t*) buf); - DSL_DRV_LineStateSet(pContext, nLineState); - *pnErrChReadMessage = DSL_SUCCESS; + DSL_CTX_WRITE_SCALAR(pContext, nErrCode, nFwEventLineState, nLineState); break; default: - DSL_DEBUG( DSL_DBG_MSG, - (pContext, SYS_DBG_MSG"DSL[%02d]: Unsupported VRx control message CTRL_MODEM_MSG received MsgID %x" + DSL_DEBUG( DSL_DBG_WRN, + (pContext, SYS_DBG_WRN"DSL[%02d]: Unsupported VRx control message CTRL_MODEM_MSG received MsgID %x" DSL_DRV_CRLF, DSL_DEV_NUM(pContext), sMsg.msgId)); break; @@ -4529,7 +4531,9 @@ DSL_Error_t DSL_DRV_DEV_FwDownload( DSL_FirmwareXdslFeature_t nFeatureSet = DSL_FW_XDSLFEATURE_CLEANED; DSL_FirmwareFeatures_t nFwFeatures; DSL_FirmwareType_t nNextMode; +#if defined (DSL_VRX_DEVICE_VR11) DSL_DEV_VersionCheck_t nVerCheck = DSL_VERSION_ERROR; +#endif /* defined (DSL_VRX_DEVICE_VR11) */ DSL_boolean_t bFwEventActivation; DSL_uint32_t nOppositeLine; @@ -5182,16 +5186,21 @@ DSL_Error_t DSL_DRV_DEV_LinkReset( if (DSL_DRV_VRX_FirmwareXdslModeCheck(pContext, DSL_VRX_FW_VDSL2)) { - nErrCode = DSL_DRV_VRX_SendMsgModemStateSet( - pContext, CMD_ModemFSM_StateSet_LINKRES); - if( nErrCode != DSL_SUCCESS ) +#ifdef FW_R9 + if (DSL_DRV_BONDING_ENABLED && DSL_DRV_LINES_PER_DEVICE == 2) { - DSL_DEBUG( DSL_DBG_ERR, - (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - FSM state set failed!" - DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + nErrCode = DSL_DRV_VRX_SendMsgModemStateSet( + pContext, CMD_ModemFSM_StateSet_LINKRES); + if( nErrCode != DSL_SUCCESS ) + { + DSL_DEBUG( DSL_DBG_ERR, + (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - FSM state set failed!" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); - return DSL_ERROR; + return DSL_ERROR; + } } +#endif /* FW_R9 */ /* Poll for the modem RESET state at least 4 sec*/ nErrCode = DSL_DRV_VRX_PollDrvForModemResetState(pContext); @@ -5256,6 +5265,39 @@ DSL_Error_t DSL_DRV_DEV_LinkTerminate( return nErrCode; } +/* + For a detailed description of the function, its arguments and return value + please refer to the description in the header file 'drv_dsl_cpe_device.h' +*/ +#if defined(DSL_VRX_DEVICE_VR11) +DSL_Error_t DSL_DRV_DEV_LinkPowerDown( + DSL_Context_t *pContext) +{ + DSL_Error_t nErrCode = DSL_SUCCESS; + + DSL_DEBUG( DSL_DBG_MSG, + (pContext, SYS_DBG_MSG"DSL[%02d]: IN - DSL_DRV_DEV_LinkPowerDown" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + + nErrCode = DSL_DRV_VRX_SendMsgModemStateSet( + pContext, CMD_ModemFSM_StateSet_POWERDOWN); + if( nErrCode != DSL_SUCCESS ) + { + DSL_DEBUG( DSL_DBG_ERR, + (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - FSM state set failed!" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + + return DSL_ERROR; + } + + DSL_DEBUG( DSL_DBG_MSG, + (pContext, SYS_DBG_MSG"DSL[%02d]: OUT - DSL_DRV_DEV_LinkPowerDown" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + + return nErrCode; +} +#endif /* DSL_VRX_DEVICE_VR11 */ + /* For a detailed description of the function, its arguments and return value please refer to the description in the header file 'drv_dsl_cpe_device.h' @@ -5629,7 +5671,6 @@ DSL_Error_t DSL_DRV_DEV_ShowtimeStatusUpdate( DSL_uint32_t nEapsTimeout = 0, nEapsTimeoutId; DSL_DEV_CamStates_t nCamCurrentState; IFX_int32_t nMeiErrCode; - DSL_Error_t nErrChReadMessage; DSL_CHECK_CTX_POINTER(pContext); DSL_CHECK_ERR_CODE(); @@ -5865,7 +5906,7 @@ DSL_Error_t DSL_DRV_DEV_ShowtimeStatusUpdate( } /* Handle VRX driver autonomous messages*/ - nErrCode = DSL_DRV_VRX_HandleMessage(pContext, &nErrChReadMessage); + nErrCode = DSL_DRV_VRX_HandleMessage(pContext); if (DSL_DRV_VRX_FirmwareXdslModeCheck(pContext, DSL_VRX_FW_VDSL2)) { @@ -7928,7 +7969,8 @@ DSL_Error_t DSL_DRV_DEV_LineStateGet( if(bFwEventActivation && pEvt == DSL_NULL) { - DSL_CTX_READ_SCALAR(pContext, nErrCode, nLineState, *pnLineState); + DSL_DRV_VRX_HandleMessage(pContext); + DSL_CTX_READ_SCALAR(pContext, nErrCode, nFwEventLineState, *pnLineState); return nErrCode; } @@ -8016,6 +8058,11 @@ DSL_Error_t DSL_DRV_DEV_LineStateGet( *pnLineState = DSL_LINESTATE_TEST_FILTERDETECTION_COMPLETE; break; #endif /* INCLUDE_DSL_FILTER_DETECTION */ +#ifdef DSL_VRX_DEVICE_VR11 + case ACK_ModemFSM_StateGet_DSL_POWER_DOWN_STATE: + *pnLineState = DSL_LINESTATE_POWER_DOWN; + break; +#endif /* DSL_VRX_DEVICE_VR11 */ default: DSL_DEBUG( DSL_DBG_MSG, (pContext, SYS_DBG_MSG"DSL[%02d]: DSL_DEV_LineStateGet: " diff --git a/src/device/drv_dsl_cpe_msg_vrx.c b/src/device/drv_dsl_cpe_msg_vrx.c index c2e697c273a7afc4f8783e8c3b6f43ff535eb5d0..6e64e590e959f013176ccda9219c4d419a0ac07a 100644 --- a/src/device/drv_dsl_cpe_msg_vrx.c +++ b/src/device/drv_dsl_cpe_msg_vrx.c @@ -44,7 +44,15 @@ VRX_MsgId_t DSL_DRV_VRX_g_MsgDumpBlacklist[]= {(DSL_uint16_t)(CMD_LINEFAILURENE_GET) }, { 0xFFFF } }; -#endif /* #ifdef DSL_DEBUG_DISABLE*/ + +/** ARC to ME indication (NFC) */ +#define DSL_MBOX_CODE_NFC 0x01 +/** ARC to ME event (EVT) */ +#define DSL_MBOX_CODE_EVT 0x02 +/** ARC to ME event (ALM) */ +#define DSL_MBOX_CODE_ALM 0x04 + +#endif /* #ifndef DSL_DEBUG_DISABLE*/ static DSL_uint16_t g_VRxMsgWhitelist[] = { @@ -170,6 +178,10 @@ static DSL_uint16_t g_VRxMsgWhitelist[] = CMD_PSD_CALIBRATION_US_SET, /* + : + : + */ CMD_TESTOPTIONSSET, /* + : + : + */ CMD_MODEMFSM_EVENTCONFIGURE, /* + : + : - */ +#if defined (DSL_VRX_DEVICE_VR11) + CMD_ADSL_FEATUREMAPGET, /* + : + : + */ + CMD_VDSL_FEATUREMAPGET, /* + : + : + */ +#endif /* Delimeter only*/ 0xFFFF }; @@ -1732,6 +1744,7 @@ static DSL_boolean_t DSL_DRV_VRX_CheckMessageDumpBlacklist( DSL_void_t DSL_DRV_VRX_DumpMessage( DSL_Context_t *pContext, + const DSL_uint16_t nClass, const DSL_uint16_t nMsgId, const DSL_uint16_t *pData, const DSL_uint16_t nSize, @@ -1740,7 +1753,7 @@ DSL_void_t DSL_DRV_VRX_DumpMessage( static const DSL_uint16_t *pMsg16; static const DSL_uint32_t *pMsg32; DSL_DBG_ModuleLevel_t dbgmlData; - DSL_boolean_t bPrint = DSL_FALSE, bDirSet = DSL_FALSE; + DSL_boolean_t bPrint = DSL_FALSE, bDirSet = DSL_FALSE, bAutoMsg = DSL_FALSE; DSL_uint8_t i; dbgmlData.data.nDbgLevel = DSL_DBG_NONE; @@ -1804,10 +1817,17 @@ DSL_void_t DSL_DRV_VRX_DumpMessage( if (bPrint == DSL_TRUE) { + if((nClass & 0x00FF) == DSL_MBOX_CODE_NFC || + (nClass & 0x00FF) == DSL_MBOX_CODE_EVT || + (nClass & 0x00FF) == DSL_MBOX_CODE_ALM) + { + bAutoMsg = DSL_TRUE; + } + DSL_DRV_debug_printf(pContext, "DSL[%02d/%s]: 0x%04x 0x%04x 0x%04x", DSL_DEV_NUM(pContext), - bReceive == DSL_TRUE ? "rx" : "tx", nMsgId, - pData[0], pData[1]); + bReceive == DSL_TRUE ? (bAutoMsg == DSL_TRUE ? "ev" : "rx") : "tx", + nMsgId, pData[0], pData[1]); /* decide wether to interpret the rest as 16 or 32 bit */ if (nMsgId & VDSL2_MBX_MSG_ID_IFX_MASK) @@ -1853,6 +1873,12 @@ DSL_Error_t DSL_DRV_VRX_ChReadMessage( nErrCode = DSL_SUCCESS; else nErrCode = DSL_ERROR; + +#ifndef DSL_DEBUG_DISABLE + DSL_DRV_VRX_DumpMessage(pContext, pMsg->msgClassifier, + pMsg->msgId, (DSL_uint16_t *)pMsg->pPayload, + (DSL_uint16_t)pMsg->paylSize_byte, DSL_TRUE); +#endif /* #ifndef DSL_DEBUG_DISABLE*/ } else nErrCode = DSL_ERROR; @@ -1878,8 +1904,8 @@ DSL_Error_t DSL_DRV_VRX_ChRequestMessage( DSL_CHECK_ERR_CODE(); #ifndef DSL_DEBUG_DISABLE - DSL_DRV_VRX_DumpMessage(pContext, pRw->write_msg.msgId, - (DSL_uint16_t *)pRw->write_msg.pPayload, + DSL_DRV_VRX_DumpMessage(pContext, pRw->write_msg.msgClassifier, + pRw->write_msg.msgId, (DSL_uint16_t *)pRw->write_msg.pPayload, (DSL_uint16_t)pRw->write_msg.paylSize_byte, DSL_FALSE); #endif /* #ifndef DSL_DEBUG_DISABLE*/ @@ -1903,8 +1929,8 @@ DSL_Error_t DSL_DRV_VRX_ChRequestMessage( #ifndef DSL_DEBUG_DISABLE /* if ret was ok, pRw contains the proper answer already */ - DSL_DRV_VRX_DumpMessage(pContext, pRw->ack_msg.msgId, - (DSL_uint16_t *)pRw->ack_msg.pPayload, + DSL_DRV_VRX_DumpMessage(pContext, pRw->ack_msg.msgClassifier, + pRw->ack_msg.msgId, (DSL_uint16_t *)pRw->ack_msg.pPayload, (DSL_uint16_t)pRw->ack_msg.paylSize_byte, DSL_TRUE); #endif /* #ifndef DSL_DEBUG_DISABLE*/ @@ -6587,9 +6613,15 @@ DSL_Error_t DSL_DRV_VRX_SendMsgModemFSMEventConfigure( memset(&sCmd, 0, sizeof(sCmd)); memset(&sAck, 0, sizeof(sAck)); - sCmd.Length = 1; - sCmd.E15 = sCmd.E14 = sCmd.E13 = sCmd.E12 = sCmd.E11 = sCmd.E10 = sCmd.E9 = sCmd.E8 = flag; +#if defined (DSL_VRX_DEVICE_VR11) + sCmd.Length = 2; + sCmd.E16 = sCmd.E15 = sCmd.E14 = sCmd.E13 = sCmd.E12 = sCmd.E11 = sCmd.E10 = sCmd.E9 = sCmd.E8 = flag; sCmd.E7 = sCmd.E6 = sCmd.E5 = sCmd.E4 = sCmd.E3 = sCmd.E2 = sCmd.E1 = sCmd.E0 = flag; +#else + sCmd.Length = 1; + sCmd.E13 = sCmd.E12 = sCmd.E11 = sCmd.E10 = sCmd.E9 = sCmd.E8 = flag; + sCmd.E6 = sCmd.E5 = sCmd.E4 = sCmd.E3 = sCmd.E2 = sCmd.E0 = flag; +#endif /* defined (DSL_VRX_DEVICE_VR11) */ nErrCode = DSL_DRV_VRX_SendMessage( pContext, CMD_MODEMFSM_EVENTCONFIGURE, sizeof(CMD_ModemFSM_EventConfigure_t), (DSL_uint8_t *)&sCmd, @@ -6602,4 +6634,46 @@ DSL_Error_t DSL_DRV_VRX_SendMsgModemFSMEventConfigure( return (nErrCode); } +#if defined(DSL_VRX_DEVICE_VR11) +DSL_Error_t DSL_DRV_VRX_SendMsgFeatureMapGet( + DSL_Context_t *pContext, + DSL_uint8_t *pAck) +{ + DSL_Error_t nErrCode = DSL_SUCCESS; + /* Assume that xDSL messages have same format */ + CMD_ADSL_FeatureMapGet_t sCmd; + union + { + ACK_ADSL_FeatureMapGet_t AFM; + ACK_VDSL_FeatureMapGet_t VFM; + } sAck; + + DSL_CHECK_CTX_POINTER(pContext); + DSL_CHECK_ERR_CODE(); + + DSL_DEBUG( DSL_DBG_MSG, + (pContext, SYS_DBG_MSG"DSL[%02d]: IN - DSL_DRV_VRX_SendMsgFeatureMapGet" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + + memset(&sCmd, 0, sizeof(sCmd)); + sCmd.Length = DSL_VRX_16BIT_RD_MSG_LEN_GET(sAck.AFM); + + nErrCode = DSL_DRV_VRX_SendMessage(pContext, + DSL_DRV_VRX_FirmwareXdslModeCheck(pContext, DSL_VRX_FW_VDSL2) ? CMD_VDSL_FEATUREMAPGET : CMD_ADSL_FEATUREMAPGET, + sizeof(sCmd), (DSL_uint8_t*)&sCmd, + sizeof(ACK_ADSL_FeatureMapGet_t), (DSL_uint8_t*)&sAck); + + if (nErrCode >= DSL_SUCCESS) + { + memcpy(pAck, &sAck, sizeof(ACK_ADSL_FeatureMapGet_t)); + } + + DSL_DEBUG( DSL_DBG_MSG, + (pContext, SYS_DBG_MSG"DSL[%02d]: OUT - DSL_DRV_VRX_SendMsgFeatureMapGet" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + + return (nErrCode); +} +#endif /* (DSL_VRX_DEVICE_VR11) */ + #endif /* #ifdef INCLUDE_DSL_CPE_API_VRX*/ diff --git a/src/include/drv_dsl_cpe_api.h b/src/include/drv_dsl_cpe_api.h index 44794a459d63794a076de72282ee7d6bec641219..91cfe201a22db5c833a3e598c8918388b9f5772d 100644 --- a/src/include/drv_dsl_cpe_api.h +++ b/src/include/drv_dsl_cpe_api.h @@ -673,6 +673,10 @@ typedef enum /** Line State: LOWPOWER_L3. */ DSL_LINESTATE_LOWPOWER_L3 = 0x02000000, +#ifdef DSL_VRX_DEVICE_VR11 + /** Line State: POWER_DOWN */ + DSL_LINESTATE_POWER_DOWN = 0x02000010, +#endif /* DSL_VRX_DEVICE_VR11 */ /** Line State: All line states that are not assigned at the moment */ DSL_LINESTATE_UNKNOWN = 0x03000000 @@ -1058,8 +1062,14 @@ typedef enum more details on how the line can become disabled. */ DSL_AUTOBOOT_STATUS_DISABLED = 7, /** + Autoboot handling is currently shutdown (incl. sync and power down). */ + DSL_AUTOBOOT_STATUS_SHUTDOWN_PD = 8, + /** + Autoboot handling is currently stopped (in power down mode). */ + DSL_AUTOBOOT_STATUS_STOPPED_PD = 9, + /** Delimiter only */ - DSL_AUTOBOOT_STATUS_LAST = 8 + DSL_AUTOBOOT_STATUS_LAST = 10 /* Might be extended if necessary */ } DSL_AutobootStatGet_t; @@ -4476,7 +4486,14 @@ typedef struct typedef enum { /** - Stops the autoboot handling. */ + Stops the autoboot handling. + This command will terminate the autoboot state machine handler. It will stop + according threads and also free up related memory. + \note This functionality should be used alone only for debug/test cases + \note This command will terminate the autoboot handling without any + dedicated synchronization of the current line state. This means that + the line will further operate in "free running" FW controlled mode (as + long as there is no interaction by the SW/API required. */ DSL_AUTOBOOT_CTRL_STOP = 0, /** Starts the autoboot handling. */ @@ -4520,7 +4537,19 @@ typedef enum on-chip bonding) operation this command forces a hard reset whereas the standard command does a soft reset only to avoid tearing down both lines. */ - DSL_AUTOBOOT_CTRL_RESTART_FULL = 6 + DSL_AUTOBOOT_CTRL_RESTART_FULL = 6, + /** + Stops the autoboot handling, including synchronization and power down. + In addition to the standard DSL_AUTOBOOT_CTRL_STOP command this command + will take care on the following addition steps before stopping the autoboot + thread and cleaning up the related memory. + - Synchronization of the line state: It will be taken care that the line + is deactivated, which means that any existing link will be teared down + - Powering off the AFE and line driver */ + DSL_AUTOBOOT_CTRL_STOP_PD = 7, + /** + Delimiter only! */ + DSL_AUTOBOOT_CTRL_LAST = 8 } DSL_AutobootCtrlSet_t; /** diff --git a/src/include/drv_dsl_cpe_api_config.h b/src/include/drv_dsl_cpe_api_config.h index 857c501bd68c24cc8252e1b6a9156e8829c0c0bb..cd160581e2d657556f626315cd593e86d60a6be9 100644 --- a/src/include/drv_dsl_cpe_api_config.h +++ b/src/include/drv_dsl_cpe_api_config.h @@ -170,7 +170,7 @@ #define PACKAGE_NAME "DSL CPE API driver" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "DSL CPE API driver 4.19.3" +#define PACKAGE_STRING "DSL CPE API driver 4.20.1.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "drv_dsl_cpe_api" @@ -179,7 +179,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.19.3" +#define PACKAGE_VERSION "4.20.1.2" /* Version number of package */ -#define VERSION "4.19.3" +#define VERSION "4.20.1.2" diff --git a/src/include/drv_dsl_cpe_api_error.h b/src/include/drv_dsl_cpe_api_error.h index 3be21a1c5527a661e41ba0a64aeb95d4ab30da48..4d3ebf6a8ba8f669627c4f477090512e6b3cddf6 100644 --- a/src/include/drv_dsl_cpe_api_error.h +++ b/src/include/drv_dsl_cpe_api_error.h @@ -116,6 +116,8 @@ typedef enum /* *********************************************************************** */ /* *** Common Error Codes *** */ /* *********************************************************************** */ + /** The command is not allowed in current autoboot state. */ + DSL_ERR_NOT_SUPPORTED_IN_CURRENT_AUTOBOOT_STATE = -46, /** The requested values are not supported in the upstream (US) direction */ DSL_ERR_NOT_SUPPORTED_IN_US_DIRECTION = -45, diff --git a/src/include/drv_dsl_cpe_api_g997.h b/src/include/drv_dsl_cpe_api_g997.h index aaf4c1f9f28133570fb8ac003ad6420a2e376bc9..9544de791769931b67b02095fd199f96847f0cee 100644 --- a/src/include/drv_dsl_cpe_api_g997.h +++ b/src/include/drv_dsl_cpe_api_g997.h @@ -1751,9 +1751,12 @@ typedef enum /** Retrain required with ADSL FW in T1.413 mode */ LINIT_SUB_T1413_MODE = 11, +#if defined(DSL_VRX_DEVICE_VR11) /** Clock set mode issue */ - LINIT_SUB_S_PP_CLOCK_NEW = 12 + LINIT_SUB_S_PP_CLOCK_NEW = 12, + LINIT_SUB_S_PP_ERB_INIT = 13, +#endif /* defined(DSL_VRX_DEVICE_VR11) */ } DSL_G997_LineInitSubStatus_t; /** diff --git a/src/include/drv_dsl_cpe_device.h b/src/include/drv_dsl_cpe_device.h index 985008407f2c162fc9244a05c91d5037ccaedc35..18eeaaad5e1b40d5908b1679026e42c9483201bc 100644 --- a/src/include/drv_dsl_cpe_device.h +++ b/src/include/drv_dsl_cpe_device.h @@ -200,6 +200,21 @@ DSL_Error_t DSL_DRV_DEV_LinkTerminate( #endif +/** + This routine powers down link and de facto terminate all actions within DSL API + + \param pContext + pointer to the DSL context +*/ + +#ifndef SWIG +#if defined(DSL_VRX_DEVICE_VR11) +DSL_Error_t DSL_DRV_DEV_LinkPowerDown( + DSL_Context_t *pContext +); +#endif +#endif + DSL_Error_t DSL_DRV_DEV_XtseSettingsCheck( DSL_IN DSL_Context_t *pContext, DSL_IN DSL_uint8_t *pXTSE); diff --git a/src/include/drv_dsl_cpe_device_vrx.h b/src/include/drv_dsl_cpe_device_vrx.h index 046157dc7630af2741228b446ce38f4fbeef71e7..4f73730863bb16eadf6dcd29a12ac4c8760d4c8f 100644 --- a/src/include/drv_dsl_cpe_device_vrx.h +++ b/src/include/drv_dsl_cpe_device_vrx.h @@ -68,7 +68,7 @@ #define DSL_MIN_FW_VERSION_RA_MODE_GET 5, 1, -1, -1, -1 #define DSL_MIN_FW_VERSION_ADSL_PTM_BONDING 0xB, 0, 4, -1, -1 #define DSL_MIN_FW_VERSION_VR11_R5 0xC, -1, -1, -1, -1 - +#define DSL_MIN_FW_VERSION_VR11_R4MR2 0xC, 1, 4, -1, -1 /* Internal device dependent configuration options @@ -855,8 +855,7 @@ DSL_Error_t DSL_DRV_VRX_FirmwareVersionCheck( DSL_DEV_VersionCheck_t *pVerCheck); DSL_Error_t DSL_DRV_VRX_HandleMessage( - DSL_Context_t *pContext, - DSL_Error_t *pnErrChReadMessage); + DSL_Context_t *pContext); /* ============================================================================ Definition of the MESSAGE OPCODES. ========================================================================= */ diff --git a/src/include/drv_dsl_cpe_intern.h b/src/include/drv_dsl_cpe_intern.h index e281e544084fc433f232fc655d88b85a5232c27f..97011dbb896c6cf4aada44e567962aefa4324614 100644 --- a/src/include/drv_dsl_cpe_intern.h +++ b/src/include/drv_dsl_cpe_intern.h @@ -243,6 +243,10 @@ struct DSL_Context DSL_boolean_t bOrderlyShutDown; /** External Trigger to restart autoboot handling*/ DSL_boolean_t bAutobootDisable; +#if defined(DSL_VRX_DEVICE_VR11) + /** External trigger to power down DSL */ + DSL_boolean_t bPowerDown; +#endif /** Autoboot queue */ DSL_DRV_Event_t autobootEvent; /** Autoboot thread activity flag */ @@ -542,6 +546,8 @@ struct DSL_Context DSL_boolean_t bFwEventActivation; DSL_boolean_t bFwEventRcvd; + DSL_Error_t nFwEventLastReadErr; + DSL_LineStateValue_t nFwEventLineState; }; #define DSL_EVENT2MASK(evt) ((DSL_uint32_t)(0x1 << ((DSL_uint32_t)evt))) @@ -2321,6 +2327,11 @@ DSL_Error_t DSL_DRV_VRX_SendMsgModemFSMEventConfigure( DSL_IN DSL_boolean_t value); #endif +#ifndef SWIG +DSL_Error_t DSL_DRV_VRX_SendMsgFeatureMapGet( + DSL_IN DSL_Context_t *pContext, + DSL_IN DSL_uint8_t *pAck); +#endif /* DSL IOCTL handler helpers stuff */ diff --git a/src/include/drv_dsl_cpe_msg_vrx.h b/src/include/drv_dsl_cpe_msg_vrx.h index 9504c413a874bb902d84473b7c5126adddc23fae..77adb3f50294cc63e316bc5c9b861caa93a365ca 100644 --- a/src/include/drv_dsl_cpe_msg_vrx.h +++ b/src/include/drv_dsl_cpe_msg_vrx.h @@ -30,6 +30,7 @@ DSL_void_t DSL_DRV_VRX_DumpMessage( DSL_Context_t *pContext, + const DSL_uint16_t nClass, const DSL_uint16_t nMsgId, const DSL_uint16_t *pData, const DSL_uint16_t nSize, diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_config_pmd.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_config_pmd.h new file mode 100644 index 0000000000000000000000000000000000000000..ec850d71210f195901bf44a5d01c1acf1d78901b --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_config_pmd.h @@ -0,0 +1,3856 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_CONFIG_PMD_H_ +#define _DRV_DSL_CPE_VRX_MSG_CONFIG_PMD_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _CONFIG_PMD_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Message Specific Constants Definition section ----- */ +#define ACK_ModemFSM_StateGet_RESET_STATE 0 +#define ACK_ModemFSM_StateGet_READY_STATE 1 +#define ACK_ModemFSM_StateGet_FAIL_STATE 2 +#define ACK_ModemFSM_StateGet_DIAG_COMPLETE_STATE 3 +#define ACK_ModemFSM_StateGet_GHS_STATE 5 +#define ACK_ModemFSM_StateGet_FULLINIT_STATE 6 +#define ACK_ModemFSM_StateGet_STEADY_STATE_TC_NOSYNC 7 +#define ACK_ModemFSM_StateGet_STEADY_STATE_TC_SYNC 8 +#define ACK_ModemFSM_StateGet_DIAGMODE_STATE 9 +#define ACK_ModemFSM_StateGet_T1413_STATE 14 +#define ACK_ModemFSM_StateGet_PRE_FAIL_STATE 15 +#define ACK_ModemFSM_StateGet_GHS_BONDING_CLR_STATE 16 +#define ACK_ModemFSM_StateGet_MFD_STATE 18 +#define ACK_ModemFSM_StateGet_MFD_COMPLETE_STATE 19 +#define ACK_ModemFSM_StateGet_DSL_POWER_DOWN_STATE 20 +#define ACK_ModemFSM_StateGet_TEST_STATE 240 +#define ACK_ModemFSM_StateGet_L0 0 +#define ACK_ModemFSM_StateGet_L2 2 +#define ACK_ModemFSM_StateGet_L3 3 +#define EVT_ModemFSM_StateGet_RESET_STATE 0 +#define EVT_ModemFSM_StateGet_READY_STATE 1 +#define EVT_ModemFSM_StateGet_FAIL_STATE 2 +#define EVT_ModemFSM_StateGet_DIAG_COMPLETE_STATE 3 +#define EVT_ModemFSM_StateGet_GHS_STATE 5 +#define EVT_ModemFSM_StateGet_FULLINIT_STATE 6 +#define EVT_ModemFSM_StateGet_STEADY_STATE_TC_NOSYNC 7 +#define EVT_ModemFSM_StateGet_STEADY_STATE_TC_SYNC 8 +#define EVT_ModemFSM_StateGet_DIAGMODE_STATE 9 +#define EVT_ModemFSM_StateGet_T1413_STATE 14 +#define EVT_ModemFSM_StateGet_PRE_FAIL_STATE 15 +#define EVT_ModemFSM_StateGet_GHS_BONDING_CLR_STATE 16 +#define EVT_ModemFSM_StateGet_MFD_STATE 18 +#define EVT_ModemFSM_StateGet_MFD_COMPLETE_STATE 19 +#define EVT_ModemFSM_StateGet_DSL_POWER_DOWN_STATE 20 +#define EVT_ModemFSM_StateGet_TEST_STATE 240 +#define EVT_ModemFSM_StateGet_L0 0 +#define EVT_ModemFSM_StateGet_L2 2 +#define EVT_ModemFSM_StateGet_L3 3 +#define EVT_ModemReady_MRERR_OK 0x0 +#define EVT_ModemReady_MRWARN_OK 0x0 +#define CMD_ModemFSM_StateSet_LINKINI 2 +#define CMD_ModemFSM_StateSet_TERMINATE 4 +#define CMD_ModemFSM_StateSet_POWERDOWN 7 +#define CMD_ModemFSM_StateSet_TESTSTA 8 +#define CMD_ModemFSM_StateSet_MFD 9 +#define ALM_ModemFSM_FailReasonGet_S_OK 0x0 +#define ALM_ModemFSM_FailReasonGet_S_CODESWAP 0x1 +#define ALM_ModemFSM_FailReasonGet_S_MINRATE_DS 0x4 +#define ALM_ModemFSM_FailReasonGet_S_INIT 0x5 +#define ALM_ModemFSM_FailReasonGet_S_MODE 0x6 +#define ALM_ModemFSM_FailReasonGet_S_TIMEOUT 0x9 +#define ALM_ModemFSM_FailReasonGet_S_XDSL_MODE 0xA +#define ALM_ModemFSM_FailReasonGet_S_PORT_MODE 0xB +#define ALM_ModemFSM_FailReasonGet_S_T1413_MODE 0xC +#define ALM_ModemFSM_FailReasonGet_S_GFAST_MODE 0xD +#define ALM_ModemFSM_FailReasonGet_S_FW_RETRY 0xE +#define ALM_ModemFSM_FailReasonGet_S_FW_HYBRID 0xF +#define ALM_ModemFSM_FailReasonGet_S_LOS 0x10 +#define ALM_ModemFSM_FailReasonGet_S_LOF 0x11 +#define ALM_ModemFSM_FailReasonGet_S_LPR 0x12 +#define ALM_ModemFSM_FailReasonGet_S_LOM 0x13 +#define ALM_ModemFSM_FailReasonGet_S_FAST_LOS 0x14 +#define ALM_ModemFSM_FailReasonGet_S_ESE 0x15 +#define ALM_ModemFSM_FailReasonGet_S_SESX 0x16 +#define ALM_ModemFSM_FailReasonGet_S_ESX 0x17 +#define ALM_ModemFSM_FailReasonGet_S_OOS0 0x18 +#define ALM_ModemFSM_FailReasonGet_S_LCD0 0x20 +#define ALM_ModemFSM_FailReasonGet_S_NCD0 0x22 +#define ALM_ModemFSM_FailReasonGet_S_CRC_DS 0x24 +#define ALM_ModemFSM_FailReasonGet_S_PP_DRIVER 0x25 +#define ALM_ModemFSM_FailReasonGet_S_INTENDED_LOCAL_SHUTDOWN 0x26 +#define ALM_ModemFSM_FailReasonGet_S_HW 0x27 +#define ALM_ModemFSM_FailReasonGet_S_CALIBRATION 0x28 +#define ALM_ModemFSM_FailReasonGet_S_PP_CLOCK_NEW 0x29 +#define ALM_ModemFSM_FailReasonGet_S_PP_ERB_INIT 0x2A +#define ALM_ModemFSM_FailReasonGet_E_OK 0x0 +#define ALM_ModemFSM_FailReasonGet_E_CONFIG 0x1 +#define ALM_ModemFSM_FailReasonGet_E_NOTFEASIBLE 0x2 +#define ALM_ModemFSM_FailReasonGet_E_COMM 0x3 +#define ALM_ModemFSM_FailReasonGet_E_COMMCRC 0x4 +#define ALM_ModemFSM_FailReasonGet_E_NOPEER 0x5 +#define ALM_ModemFSM_FailReasonGet_E_CHIPSET 0x6 +#define ALM_ModemFSM_FailReasonGet_E_UNKNOWN 0x7 +#define ALM_ModemFSM_FailReasonGet_E_RESERVED 0x8 +#define ALM_ModemFSM_FailReasonGet_E_SHOWTIME_NE 0x10 +#define ALM_ModemFSM_FailReasonGet_E_SHOWTIME_FE 0x11 +#define ACK_ModemFSM_FailReasonGet_S_OK 0x0 +#define ACK_ModemFSM_FailReasonGet_S_CODESWAP 0x1 +#define ACK_ModemFSM_FailReasonGet_S_MINRATE_DS 0x4 +#define ACK_ModemFSM_FailReasonGet_S_INIT 0x5 +#define ACK_ModemFSM_FailReasonGet_S_MODE 0x6 +#define ACK_ModemFSM_FailReasonGet_S_TIMEOUT 0x9 +#define ACK_ModemFSM_FailReasonGet_S_XDSL_MODE 0xA +#define ACK_ModemFSM_FailReasonGet_S_PORT_MODE 0xB +#define ACK_ModemFSM_FailReasonGet_S_T1413_MODE 0xC +#define ACK_ModemFSM_FailReasonGet_S_GFAST_MODE 0xD +#define ACK_ModemFSM_FailReasonGet_S_FW_RETRY 0xE +#define ACK_ModemFSM_FailReasonGet_S_FW_HYBRID 0xF +#define ACK_ModemFSM_FailReasonGet_S_LOS 0x10 +#define ACK_ModemFSM_FailReasonGet_S_LOF 0x11 +#define ACK_ModemFSM_FailReasonGet_S_LPR 0x12 +#define ACK_ModemFSM_FailReasonGet_S_LOM 0x13 +#define ACK_ModemFSM_FailReasonGet_S_FAST_LOS 0x14 +#define ACK_ModemFSM_FailReasonGet_S_ESE 0x15 +#define ACK_ModemFSM_FailReasonGet_S_SESX 0x16 +#define ACK_ModemFSM_FailReasonGet_S_ESX 0x17 +#define ACK_ModemFSM_FailReasonGet_S_OOS0 0x18 +#define ACK_ModemFSM_FailReasonGet_S_LCD0 0x20 +#define ACK_ModemFSM_FailReasonGet_S_NCD0 0x22 +#define ACK_ModemFSM_FailReasonGet_S_CRC_DS 0x24 +#define ACK_ModemFSM_FailReasonGet_S_PP_DRIVER 0x25 +#define ACK_ModemFSM_FailReasonGet_S_INTENDED_LOCAL_SHUTDOWN 0x26 +#define ACK_ModemFSM_FailReasonGet_S_HW 0x27 +#define ACK_ModemFSM_FailReasonGet_S_CALIBRATION 0x28 +#define ACK_ModemFSM_FailReasonGet_S_PP_CLOCK_NEW 0x29 +#define ACK_ModemFSM_FailReasonGet_S_PP_ERB_INIT 0x2A +#define ACK_ModemFSM_FailReasonGet_E_OK 0x0 +#define ACK_ModemFSM_FailReasonGet_E_CONFIG 0x1 +#define ACK_ModemFSM_FailReasonGet_E_NOTFEASIBLE 0x2 +#define ACK_ModemFSM_FailReasonGet_E_COMM 0x3 +#define ACK_ModemFSM_FailReasonGet_E_COMMCRC 0x4 +#define ACK_ModemFSM_FailReasonGet_E_NOPEER 0x5 +#define ACK_ModemFSM_FailReasonGet_E_CHIPSET 0x6 +#define ACK_ModemFSM_FailReasonGet_E_UNKNOWN 0x7 +#define ACK_ModemFSM_FailReasonGet_E_RESERVED 0x8 +#define ACK_ModemFSM_FailReasonGet_E_SHOWTIME_NE 0x10 +#define ACK_ModemFSM_FailReasonGet_E_SHOWTIME_FE 0x11 +#define ACK_TxL3RequestStatusGet_L3PENDING 0 +#define ACK_TxL3RequestStatusGet_L3REJECTED 1 +#define ACK_TxL3RequestStatusGet_L3ACCEPTED 2 +#define ACK_TxL3RequestStatusGet_L3FAIL 3 +#define ACK_TxL3ReqFailReasonGet_BUSY 0x01 +#define ACK_TxL3ReqFailReasonGet_INVALID 0x02 +#define ACK_TxL3ReqFailReasonGet_STATE_NOT_DESIRED 0x03 +#define ACK_TxL3ReqFailReasonGet_NOT_L0 0x50 +#define ACK_TxL3ReqFailReasonGet_TIMEOUT 0x90 +#define CMD_ModemFSM_Freeze_FREEZE_OFF 0 +#define CMD_ModemFSM_Freeze_PERIODIC 1 +#define CMD_ModemFSM_Freeze_RP_CHDISC2 2 +#define CMD_ModemFSM_Freeze_MEDLEY 4 +#define CMD_ModemFSM_Freeze_SHOWTIME 8 +#define CMD_ModemFSM_Freeze_SHOWTIME_GI1 16 +#define ACK_FW_ImageInfoGet_STANDALONE 0x0 +#define ACK_FW_ImageInfoGet_COMBINED 0x1 +#define ACK_FW_ImageInfoGet_VDSL_FW 0x0 +#define ACK_FW_ImageInfoGet_ADSL_FW 0x1 +#define ACK_FW_ImageInfoGet_CPE_FW 0x1 +#define CMD_APS_Status_Set_1PORT 1 +#define CMD_APS_Status_Set_2PORT 2 +#define CMD_APS_Status_Set_APIDEF 0 +#define CMD_APS_Status_Set_ADSL 1 +#define CMD_APS_Status_Set_VDSL 2 +#define CMD_APS_Status_Set_FAST 3 +#define CMD_APS_Status_Set_AUTO 0 +#define CMD_APS_Status_Set_STANDARD 1 +#define CMD_APS_Status_Set_NONSTANDARD 2 +#define CMD_APS_Status_Set_GHSMODE 1 +#define CMD_APS_Status_Set_T1413MODE 2 +#define CMD_BearerCh0_DS_Set_FV 21 +#define CMD_BearerCh0_DS_Set_MAX_BER3 0 +#define CMD_BearerCh0_DS_Set_MAX_BER5 1 +#define CMD_BearerCh0_DS_Set_MAX_BER7 2 +#define ACK_BearerCh0_DS_Set_FV 21 +#define CMD_BearerCh0_US_Set_FV 21 +#define CMD_BearerCh0_US_Set_MAX_BER3 0 +#define CMD_BearerCh0_US_Set_MAX_BER5 1 +#define CMD_BearerCh0_US_Set_MAX_BER7 2 +#define ACK_BearerCh0_US_Set_FV 21 +#define CMD_InitPolicySet_MAX_NETRATE 0x0 +#define CMD_InitPolicySet_MAX_INP 0x1 +#define CMD_ErasureControlSet_MAX_NETRATE 0x0 +#define CMD_ErasureControlSet_MAX_INP 0x1 +#define CMD_Misc_ConfigSet_GHSMODE 0x0 +#define CMD_Misc_ConfigSet_T1413MODE 0x1 +#define CMD_OperatorSelect_TELCO_OFF 0 +#define CMD_OperatorSelect_TELCO_DTAG 1 +#define CMD_OperatorSelect_TELCO_BT 2 +#define CMD_OperatorSelect_TELCO_TS 3 +#define CMD_OperatorSelect_TELCO_FT 4 +#define CMD_OperatorSelect_TELCO_KPN 5 +#define CMD_OperatorSelect_TELCO_TELIA 6 +#define CMD_OperatorSelect_TELCO_FIBERHOME 7 +#define CMD_OperatorSelect_TELCO_CT 8 +#define CMD_OperatorSelect_TELCO_TW 9 +#define CMD_OperatorSelect_TELCO_VODAFONE 10 +#define CMD_OperatorSelect_TELCO_CN 11 +#define CMD_OperatorSelect_TELCO_OTE 12 +#define CMD_OperatorSelect_TELCO_TELMEX 13 +#define CMD_OperatorSelect_TELCO_ATT 14 +#define CMD_OperatorSelect_TELCO_SWISSCOM 15 +#define CMD_OperatorSelect_TELCO_NETGEAR 16 +#define CMD_OperatorSelect_TELCO_CTL 17 +#define CMD_OperatorSelect_TELCO_TI 17 +#define ACK_OperatorSelectionGet_TELCO_OFF 0 +#define ACK_OperatorSelectionGet_TELCO_DTAG 1 +#define ACK_OperatorSelectionGet_TELCO_BT 2 +#define ACK_OperatorSelectionGet_TELCO_TS 3 +#define ACK_OperatorSelectionGet_TELCO_FT 4 +#define ACK_OperatorSelectionGet_TELCO_KPN 5 +#define ACK_OperatorSelectionGet_TELCO_TELIA 6 +#define ACK_OperatorSelectionGet_TELCO_FIBERHOME 7 +#define ACK_OperatorSelectionGet_TELCO_CT 8 +#define ACK_OperatorSelectionGet_TELCO_TW 9 +#define ACK_OperatorSelectionGet_TELCO_VODAFONE 10 +#define ACK_OperatorSelectionGet_TELCO_CN 11 +#define ACK_OperatorSelectionGet_TELCO_OTE 12 +#define ACK_OperatorSelectionGet_TELCO_TELMEX 13 +#define ACK_OperatorSelectionGet_TELCO_ATT 14 +#define ACK_OperatorSelectionGet_TELCO_SWISSCOM 15 +#define ACK_OperatorSelectionGet_TELCO_NETGEAR 16 +#define ACK_OperatorSelectionGet_TELCO_CTL 17 +#define CMD_ClockSet_M1 1 +#define CMD_ClockSet_M2 2 +#define CMD_ClockSet_M3 3 +#define CMD_ClockSet_M4 4 +#define CMD_PPE_ClockConfigure_FSCALE_AUTO_OFF 0 +#define CMD_PPE_ClockConfigure_FSCALE_AUTO_A 1 +#define CMD_PPE_ClockConfigure_FSCALE_AUTO_B 2 +#define CMD_PPE_ClockConfigure_FSCALE_AUTO_C 3 +#define ACK_PPE_ClockGet_M1 1 +#define ACK_PPE_ClockGet_M2 2 +#define ACK_PPE_ClockGet_M3 3 +#define ACK_PPE_ClockGet_M4 4 +#define ACK_PPE_ClockConfigGet_FSCALE_AUTO_OFF 0 +#define ACK_PPE_ClockConfigGet_FSCALE_AUTO_A 1 +#define ACK_PPE_ClockConfigGet_FSCALE_AUTO_B 2 +#define ACK_PPE_ClockConfigGet_FSCALE_AUTO_C 3 +/* ----- Message Specific Constants Definition section (End) ----- */ + +/** Message ID for CMD_ModemFSM_StateGet */ +#define CMD_MODEMFSM_STATEGET 0x0002 + +/** + Requests information about the current state of the modem state-machine.The + command can be sent in all states of the modem state machine (see Figure 2). +*/ +typedef struct CMD_ModemFSM_StateGet CMD_ModemFSM_StateGet_t; + +/** Message ID for ACK_ModemFSM_StateGet */ +#define ACK_MODEMFSM_STATEGET 0x0002 + +/** + Returns information about the current state of the modem state-machine. +*/ +typedef struct ACK_ModemFSM_StateGet ACK_ModemFSM_StateGet_t; + +/** Message ID for EVT_ModemFSM_StateGet */ +#define EVT_MODEMFSM_STATEGET 0x0002 + +/** + Returns information about the current state of the modem state-machine. This + message is sent autonomously, if the modem enters a new state and reporting + is enabled for that state (see CMD_ModemFSM_EventConfigure). +*/ +typedef struct EVT_ModemFSM_StateGet EVT_ModemFSM_StateGet_t; + +/** Message ID for EVT_ModemReady */ +#define EVT_MODEMREADY 0xFF02 + +/** + Autonomous message indicating that the modem online code was reached and that + initialization was completed. The management entity may not perform any + query-response messaging until the EVT_ModemReady message is received. Its + generation cannot be disabled. If it is not received this indicates a + problem, possibly with the boot sequence. If the message is received, it + contains a result code that may also indicate that an error was detected by + the firmware during initialization. +*/ +typedef struct EVT_ModemReady EVT_ModemReady_t; + +/** Message ID for CMD_ModemFSM_StateSet */ +#define CMD_MODEMFSM_STATESET 0x0041 + +/** + Controls state transitions of the modem state-machine. +*/ +typedef struct CMD_ModemFSM_StateSet CMD_ModemFSM_StateSet_t; + +/** Message ID for ACK_ModemFSM_StateSet */ +#define ACK_MODEMFSM_STATESET 0x0041 + +/** + Acknowledgement for message CMD_ModemFSM_StateSet +*/ +typedef struct ACK_ModemFSM_StateSet ACK_ModemFSM_StateSet_t; + +/** Message ID for ALM_ModemFSM_FailReasonGet */ +#define ALM_MODEMFSM_FAILREASONGET 0x0502 + +/** + Reports failure information after entering FAIL state. This message is sent + autonomously without host request after entrance into FAIL was indicated by + EVT_ModemFSM_StateGet. Both messages are generated only if enabled with + CMD_ModemFSM_EventConfigure (common Bit E8 "FAIL"). +*/ +typedef struct ALM_ModemFSM_FailReasonGet ALM_ModemFSM_FailReasonGet_t; + +/** Message ID for CMD_ModemFSM_FailReasonGet */ +#define CMD_MODEMFSM_FAILREASONGET 0x0502 + +/** + Requests failure information after entering FAIL state. +*/ +typedef struct CMD_ModemFSM_FailReasonGet CMD_ModemFSM_FailReasonGet_t; + +/** Message ID for ACK_ModemFSM_FailReasonGet */ +#define ACK_MODEMFSM_FAILREASONGET 0x0502 + +/** + Returns failure information after entering FAIL state. +*/ +typedef struct ACK_ModemFSM_FailReasonGet ACK_ModemFSM_FailReasonGet_t; + +/** Message ID for CMD_ModemFSM_OptionsSet */ +#define CMD_MODEMFSM_OPTIONSSET 0x0449 + +/** + Configuration of options for the modem state machine. +*/ +typedef struct CMD_ModemFSM_OptionsSet CMD_ModemFSM_OptionsSet_t; + +/** Message ID for ACK_ModemFSM_OptionsSet */ +#define ACK_MODEMFSM_OPTIONSSET 0x0449 + +/** + Acknowledgement to CMD_ModemFSM_OptionsSet. +*/ +typedef struct ACK_ModemFSM_OptionsSet ACK_ModemFSM_OptionsSet_t; + +/** Message ID for CMD_ModemOptionsSet */ +#define CMD_MODEMOPTIONSSET 0x0062 + +/** + Configuration of options for the modem state machine. +*/ +typedef struct CMD_ModemOptionsSet CMD_ModemOptionsSet_t; + +/** Message ID for ACK_ModemOptionsSet */ +#define ACK_MODEMOPTIONSSET 0x0062 + +/** + Acknowledgement to CMD_ModemOptionsSet. +*/ +typedef struct ACK_ModemOptionsSet ACK_ModemOptionsSet_t; + +/** Message ID for CMD_ModemFSM_EventConfigure */ +#define CMD_MODEMFSM_EVENTCONFIGURE 0x0049 + +/** + Sets options for the modem state-machine. Enables/Disables autonomous + messages for specific state transitions (EVT_ModemFSM_StateGet). The EVT + message is generated after entering the particular state listed in the + parameter description of the enable bits. +*/ +typedef struct CMD_ModemFSM_EventConfigure CMD_ModemFSM_EventConfigure_t; + +/** Message ID for ACK_ModemFSM_EventConfigure */ +#define ACK_MODEMFSM_EVENTCONFIGURE 0x0049 + +/** + Acknowledgement for CMD_ModemFSM_EventConfigure. (Enabling/Disabling EVENT + messages (EVTs) for specific state transitions.) +*/ +typedef struct ACK_ModemFSM_EventConfigure ACK_ModemFSM_EventConfigure_t; + +/** Message ID for CMD_FailuresNE_AlarmConfigure */ +#define CMD_FAILURESNE_ALARMCONFIGURE 0x0149 + +/** + Enables/Disables the generation of ALARM messages (ALM) for specific near-end + line failures. If the corresponding Enable bit for a line failure is set, + then the modem firmware will send an autonomous message ALM_LineFailureNE_Get + if this failure occurs. +*/ +typedef struct CMD_FailuresNE_AlarmConfigure CMD_FailuresNE_AlarmConfigure_t; + +/** Message ID for ACK_FailuresNE_AlarmConfigure */ +#define ACK_FAILURESNE_ALARMCONFIGURE 0x0149 + +/** + Acknowledgement to CMD_FailuresNE_AlarmConfigure. +*/ +typedef struct ACK_FailuresNE_AlarmConfigure ACK_FailuresNE_AlarmConfigure_t; + +/** Message ID for CMD_FailuresFE_AlarmConfigure */ +#define CMD_FAILURESFE_ALARMCONFIGURE 0x0249 + +/** + Enables/Disables the generation of ALARM messages (ALM) for specific far-end + line failures. If the corresponding Enable bit for a line failure is set, + then the modem firmware will send an autonomous message ALM_LineFailureFE_Get + if this failure occurs. +*/ +typedef struct CMD_FailuresFE_AlarmConfigure CMD_FailuresFE_AlarmConfigure_t; + +/** Message ID for ACK_FailuresFE_AlarmConfigure */ +#define ACK_FAILURESFE_ALARMCONFIGURE 0x0249 + +/** + Acknowledgement to CMD_FailuresFE_AlarmConfigure. +*/ +typedef struct ACK_FailuresFE_AlarmConfigure ACK_FailuresFE_AlarmConfigure_t; + +/** Message ID for CMD_ReInitNE_Configure */ +#define CMD_REINITNE_CONFIGURE 0x0549 + +/** + Configures re-initialization triggers for near-end failure conditions in + modem state STEADY STATE transmission (see Figure 1). This command is + accepted in RESET state only. +*/ +typedef struct CMD_ReInitNE_Configure CMD_ReInitNE_Configure_t; + +/** Message ID for ACK_ReInitNE_Configure */ +#define ACK_REINITNE_CONFIGURE 0x0549 + +/** + Acknowledgment to CMD_ReInitNE_Configure (Configuration of re-initialization + triggers for near-end failures). +*/ +typedef struct ACK_ReInitNE_Configure ACK_ReInitNE_Configure_t; + +/** Message ID for CMD_ReinitThreshConfigure */ +#define CMD_REINITTHRESHCONFIGURE 0x1E62 + +/** + Configuration of reinitialization trigger definitions. +*/ +typedef struct CMD_ReinitThreshConfigure CMD_ReinitThreshConfigure_t; + +/** Message ID for ACK_ReinitThreshConfigure */ +#define ACK_REINITTHRESHCONFIGURE 0x1E62 + +/** + Acknowledgement for the message ACK_ReinitThreshConfigure. +*/ +typedef struct ACK_ReinitThreshConfigure ACK_ReinitThreshConfigure_t; + +/** Message ID for CMD_ShutdownRequest */ +#define CMD_SHUTDOWNREQUEST 0x0341 + +/** + Triggers a shutdown request, either as "L3 orderly shutdown" towards the + remote side or as "locally forced shutdown" to the DSL-FW without sending a + request to the remote side.After an "L3 orderly shutdown" request was + accepted by the CO, the following shall happen: The CPE-Host forces L3 entry + with transition to RESET state by applying CMD_ModemFSM_StateGet.A "locally + forced shutdown" always results in exiting Showtime. +*/ +typedef struct CMD_ShutdownRequest CMD_ShutdownRequest_t; + +/** Message ID for ACK_ShutdownRequest */ +#define ACK_SHUTDOWNREQUEST 0x0341 + +/** + Acknowledgement for CMD_ShutdownRequest. +*/ +typedef struct ACK_ShutdownRequest ACK_ShutdownRequest_t; + +/** Message ID for CMD_RxL3RequestStatusGet */ +#define CMD_RXL3REQUESTSTATUSGET 0x0402 + +/** + Requests information about L3 orderly shutdown requests initiated from the + remote side.Applying CMD_RxL3RequestStatusGet allows the host to determine + whether a near-end LOS or LOM failure is due to an L3 shutdown or an + unexpected line failure. +*/ +typedef struct CMD_RxL3RequestStatusGet CMD_RxL3RequestStatusGet_t; + +/** Message ID for ACK_RxL3RequestStatusGet */ +#define ACK_RXL3REQUESTSTATUSGET 0x0402 + +/** + Acknowledgement for CMD_RxL3RequestStatusGet.As long as the modem is in L0 + (Showtime), an ATU-R will automatically respond to any L3 request from the + ATU-C by sending an accept message. If the ATU-R is in L2 mode when it + receives the request, it will send a reject message. Upon receiving an + acceptance, the remote side should enter L3 state and shut off its + transmitter. +*/ +typedef struct ACK_RxL3RequestStatusGet ACK_RxL3RequestStatusGet_t; + +/** Message ID for CMD_TxL3RequestStatusGet */ +#define CMD_TXL3REQUESTSTATUSGET 0x1402 + +/** + Requests the status of a near-end initiated L3 shutdown request. If the + remote side accepted the request, in ADSL the host will force L3 entry using + CMD_ModemFSM_StateSet. +*/ +typedef struct CMD_TxL3RequestStatusGet CMD_TxL3RequestStatusGet_t; + +/** Message ID for ACK_TxL3RequestStatusGet */ +#define ACK_TXL3REQUESTSTATUSGET 0x1402 + +/** + Acknowledgement for CMD_TxL3RequestStatusGet. +*/ +typedef struct ACK_TxL3RequestStatusGet ACK_TxL3RequestStatusGet_t; + +/** Message ID for CMD_TxL3ReqFailReasonGet */ +#define CMD_TXL3REQFAILREASONGET 0x1502 + +/** + Requests the fail reason of a failed near-end initiated L3 request. (see also + ACK_TxL3RequestStatusGet) +*/ +typedef struct CMD_TxL3ReqFailReasonGet CMD_TxL3ReqFailReasonGet_t; + +/** Message ID for ACK_TxL3ReqFailReasonGet */ +#define ACK_TXL3REQFAILREASONGET 0x1502 + +/** + Reports the fail reason of a near-end initiated L3 request, as response to + CMD_TxL3ReqFailReasonGet. +*/ +typedef struct ACK_TxL3ReqFailReasonGet ACK_TxL3ReqFailReasonGet_t; + +/** Message ID for CMD_ModemFSM_Freeze */ +#define CMD_MODEMFSM_FREEZE 0x2C44 + +/** + The message selects and enables one of several points during the + initialization process where -after a normal link start had been triggered- + the modem FSM "freezes". Freezing means the CO can be disconnected from the + line and still the CPE continues transmitting the signal of the current + phase. To exit from the freeze a state transition to RESET state has to be + triggered. In case of a Showtime Freeze the reinit-triggers do not have any + effect. +*/ +typedef struct CMD_ModemFSM_Freeze CMD_ModemFSM_Freeze_t; + +/** Message ID for ACK_ModemFSM_Freeze */ +#define ACK_MODEMFSM_FREEZE 0x2C44 + +/** + Acknowledgement for message CMD_ModemFSM_Freeze. +*/ +typedef struct ACK_ModemFSM_Freeze ACK_ModemFSM_Freeze_t; + +/** Message ID for CMD_FW_ImageInfoGet */ +#define CMD_FW_IMAGEINFOGET 0xD103 + +/** + Requests information about the loaded FW image. This info is used e.g. for + swapping between ADSL and VDSL. +*/ +typedef struct CMD_FW_ImageInfoGet CMD_FW_ImageInfoGet_t; + +/** Message ID for ACK_FW_ImageInfoGet */ +#define ACK_FW_IMAGEINFOGET 0xD103 + +/** + Provides the information about the FW image requested by CMD_FW_ImageInfoGet +*/ +typedef struct ACK_FW_ImageInfoGet ACK_FW_ImageInfoGet_t; + +/** Message ID for CMD_APS_Status_Set */ +#define CMD_APS_STATUS_SET 0x2062 + +/** + The message informs the FW about the status of SW parameters relevant for the + multimode state machine (APS). This can be used to trace the APS behaviour + with FW tools. The message does not influence the APS behaviour. +*/ +typedef struct CMD_APS_Status_Set CMD_APS_Status_Set_t; + +/** Message ID for ACK_APS_Status_Set */ +#define ACK_APS_STATUS_SET 0x2062 + +/** + Acknowledgement for message CMD_APS_Status_Set. +*/ +typedef struct ACK_APS_Status_Set ACK_APS_Status_Set_t; + +/** Message ID for CMD_XTSE_Configure */ +#define CMD_XTSE_CONFIGURE 0x0045 + +/** + Configuration of the VTU Transmission System Enabling (XTSE).Configures the + transmission system coding types to be supported on the line (VDSL flavour + and annex support).(References: Section 7.3.1.1.1 of G.997.1 and G.994.1 Amd4 + [10] Tables "Standard information field - SPar(1) coding") +*/ +typedef struct CMD_XTSE_Configure CMD_XTSE_Configure_t; + +/** Message ID for ACK_XTSE_Configure */ +#define ACK_XTSE_CONFIGURE 0x0045 + +/** + Acknowledgement for message CMD_XTSE_Configure. +*/ +typedef struct ACK_XTSE_Configure ACK_XTSE_Configure_t; + +/** Message ID for CMD_BandControl_US_Set */ +#define CMD_BANDCONTROL_US_SET 0x2548 + +/** + Controls the upstream band usage.The message can only be used for DMTscope + tests without handshake and training phases. +*/ +typedef struct CMD_BandControl_US_Set CMD_BandControl_US_Set_t; + +/** Message ID for ACK_BandControl_US_Set */ +#define ACK_BANDCONTROL_US_SET 0x2548 + +/** + Acknowledgement for message CMD_BandControl_US_Set. +*/ +typedef struct ACK_BandControl_US_Set ACK_BandControl_US_Set_t; + +/** Message ID for CMD_PSD_Set */ +#define CMD_PSD_SET 0x2348 + +/** + Configuration of PSD and Power parameters. Only used for DMTscope tests + without handshake and training phases. +*/ +typedef struct CMD_PSD_Set CMD_PSD_Set_t; + +/** Message ID for ACK_PSD_Set */ +#define ACK_PSD_SET 0x2348 + +/** + Acknowledgement for the message CMD_PSD_Set. +*/ +typedef struct ACK_PSD_Set ACK_PSD_Set_t; + +/** Message ID for CMD_PSD_BreakpointsTxUS_Set */ +#define CMD_PSD_BREAKPOINTSTXUS_SET 0x2848 + +/** + Specifies the maximum upstream transmit PSD by means of breakpoints.To be + used only for DMTscope tests without handshake and training phases. +*/ +typedef struct CMD_PSD_BreakpointsTxUS_Set CMD_PSD_BreakpointsTxUS_Set_t; + +/** Message ID for ACK_PSD_BreakpointsTxUS_Set */ +#define ACK_PSD_BREAKPOINTSTXUS_SET 0x2848 + +/** + Acknowledgement for the message CMD_PSD_BreakpointsTxUS_Set. +*/ +typedef struct ACK_PSD_BreakpointsTxUS_Set ACK_PSD_BreakpointsTxUS_Set_t; + +/** Message ID for CMD_PSD_Calibration_DS_Set */ +#define CMD_PSD_CALIBRATION_DS_SET 0x5748 + +/** + Sends downstream calibration information for "per-tone" test parameters. It + is effective for Loop Diagnostic Mode (DELT) and Showtime. It is the + responsibility of the manufacturer to provide the data. +*/ +typedef struct CMD_PSD_Calibration_DS_Set CMD_PSD_Calibration_DS_Set_t; + +/** Message ID for ACK_PSD_Calibration_DS_Set */ +#define ACK_PSD_CALIBRATION_DS_SET 0x5748 + +/** + Acknowledgement for the message CMD_PSD_Calibration_DS_Set. +*/ +typedef struct ACK_PSD_Calibration_DS_Set ACK_PSD_Calibration_DS_Set_t; + +/** Message ID for CMD_PSD_Calibration_US_Set */ +#define CMD_PSD_CALIBRATION_US_SET 0x5848 + +/** + Sends upstream calibration information for the upstream transmit PSD. It is + effective for loop diagnostic mode (DELT) and Showtime. It is the + responsibility of the manufacturer to provide the data. +*/ +typedef struct CMD_PSD_Calibration_US_Set CMD_PSD_Calibration_US_Set_t; + +/** Message ID for ACK_PSD_Calibration_US_Set */ +#define ACK_PSD_CALIBRATION_US_SET 0x5848 + +/** + Acknowledgement for the message CMD_PSD_Calibration_US_Set. +*/ +typedef struct ACK_PSD_Calibration_US_Set ACK_PSD_Calibration_US_Set_t; + +/** Message ID for CMD_PSD_OptionsSet */ +#define CMD_PSD_OPTIONSSET 0x0262 + +/** + Configuration of PSD related options. +*/ +typedef struct CMD_PSD_OptionsSet CMD_PSD_OptionsSet_t; + +/** Message ID for ACK_PSD_OptionsSet */ +#define ACK_PSD_OPTIONSSET 0x0262 + +/** + Acknowledgement to CMD_PSD_OptionsSet. +*/ +typedef struct ACK_PSD_OptionsSet ACK_PSD_OptionsSet_t; + +/** Message ID for CMD_UPBO_KL0Get */ +#define CMD_UPBO_KL0GET 0xD603 + +/** + Requests the electrical loop length estimate kl0. +*/ +typedef struct CMD_UPBO_KL0Get CMD_UPBO_KL0Get_t; + +/** Message ID for ACK_UPBO_KL0Get */ +#define ACK_UPBO_KL0GET 0xD603 + +/** + Delivers the data requested by CMD_UPBO_KL0Get.(Section 7.5.1.23 of G.997.1 + [11]) +*/ +typedef struct ACK_UPBO_KL0Get ACK_UPBO_KL0Get_t; + +/** Message ID for CMD_PBO_AELEM_Status_Get */ +#define CMD_PBO_AELEM_STATUS_GET 0xEA03 + +/** + Requests status parameters for the Upstream Power Back-Off (UPBO) + alternative electrical length estimation method (AELEM). +*/ +typedef struct CMD_PBO_AELEM_Status_Get CMD_PBO_AELEM_Status_Get_t; + +/** Message ID for ACK_PBO_AELEM_Status_Get */ +#define ACK_PBO_AELEM_STATUS_GET 0xEA03 + +/** + Upstream Power Back-Off (UPBO) status parameters for the alternative + electrical length estimation method (AELEM) are reported. +*/ +typedef struct ACK_PBO_AELEM_Status_Get ACK_PBO_AELEM_Status_Get_t; + +/** Message ID for CMD_NoiseMarginDeltaSet */ +#define CMD_NOISEMARGINDELTASET 0x1C45 + +/** + Configuration of a target noise margin delta, which is added to the target + noise margin value configured at the CO (and in case of the CPE received from + there). The resulting value is then taken as target noise margin, e.g. for + bit loading. +*/ +typedef struct CMD_NoiseMarginDeltaSet CMD_NoiseMarginDeltaSet_t; + +/** Message ID for ACK_NoiseMarginDeltaSet */ +#define ACK_NOISEMARGINDELTASET 0x1C45 + +/** + Acknowledgement for the message CMD_NoiseMarginDeltaSet. +*/ +typedef struct ACK_NoiseMarginDeltaSet ACK_NoiseMarginDeltaSet_t; + +/** Message ID for CMD_BearerCh0_DS_Set */ +#define CMD_BEARERCH0_DS_SET 0x0048 + +/** + Sets parameters for downstream bearer channel 0 (Chapters 7.3.2.1-5 of + G.997.1 [11]). Bearer channel configuration at the CPE is optional and just + used to further limit the parameters usually configured at the CO.The mode, + ATM or PTM, is selected with the configuration controls "ATMControl" and + "PTMControl" in Parameter 2. Exactly one of them must be enabled, not both! +*/ +typedef struct CMD_BearerCh0_DS_Set CMD_BearerCh0_DS_Set_t; + +/** Message ID for ACK_BearerCh0_DS_Set */ +#define ACK_BEARERCH0_DS_SET 0x0048 + +/** + Acknowledgement for CMD_BearerCh0_DS_Set. (Configuration of bearer channel + 0). +*/ +typedef struct ACK_BearerCh0_DS_Set ACK_BearerCh0_DS_Set_t; + +/** Message ID for CMD_BearerCh0_US_Set */ +#define CMD_BEARERCH0_US_SET 0x0248 + +/** + Sets parameters for upstream bearer channel 0 (Chapters 7.3.2.1-5 of G.997.1 + [11]). Bearer channel configuration at the CPE is optional and just used to + further limit the parameters usually configured at the CO.The mode, ATM or + PTM, is selected with the configuration controls "ATMControl" and + "PTMControl" in Parameter 2. Exactly one of them must be enabled, not both! +*/ +typedef struct CMD_BearerCh0_US_Set CMD_BearerCh0_US_Set_t; + +/** Message ID for ACK_BearerCh0_US_Set */ +#define ACK_BEARERCH0_US_SET 0x0248 + +/** + Acknowledgement for CMD_BearerCh0_US_Set. (Configuration of bearer channel + 0). +*/ +typedef struct ACK_BearerCh0_US_Set ACK_BearerCh0_US_Set_t; + +/** Message ID for CMD_InitPolicySet */ +#define CMD_INITPOLICYSET 0x1A45 + +/** + The message selects the channel initialization policy (CIPOLICY) to be + applied for the tranceiver configuration. (Section 7.3.2.10 of G.997.1)In + ADSL mode, the message is applicable only for ADSL2/2+ (Section 7.10.3 of + G.992.3 Amd 3). The standard defines the parameter for the CO only. Here, the + message is applied at the ADSL-CPE, then it overrides the policy given by the + CO! +*/ +typedef struct CMD_InitPolicySet CMD_InitPolicySet_t; + +/** Message ID for ACK_InitPolicySet */ +#define ACK_INITPOLICYSET 0x1A45 + +/** + Acknowledgment for message CMD_InitPolicySet. +*/ +typedef struct ACK_InitPolicySet ACK_InitPolicySet_t; + +/** Message ID for CMD_ErasureControlSet */ +#define CMD_ERASURECONTROLSET 0x0162 + +/** + Configuration of options for the modem state machine. +*/ +typedef struct CMD_ErasureControlSet CMD_ErasureControlSet_t; + +/** Message ID for ACK_ErasureControlSet */ +#define ACK_ERASURECONTROLSET 0x0162 + +/** + Acknowledgement to CMD_ErasureControlSet. +*/ +typedef struct ACK_ErasureControlSet ACK_ErasureControlSet_t; + +/** Message ID for CMD_Misc_ConfigSet */ +#define CMD_MISC_CONFIGSET 0x3A48 + +/** + Performs some miscellaneous chip set configurations. +*/ +typedef struct CMD_Misc_ConfigSet CMD_Misc_ConfigSet_t; + +/** Message ID for ACK_Misc_ConfigSet */ +#define ACK_MISC_CONFIGSET 0x3A48 + +/** + This is the acknowledgement for ACK_Misc_ConfigSet. +*/ +typedef struct ACK_Misc_ConfigSet ACK_Misc_ConfigSet_t; + +/** Message ID for CMD_OperationOptionsSet */ +#define CMD_OPERATIONOPTIONSSET 0x0D62 + +/** + Performs some miscellaneous chip set configurations. +*/ +typedef struct CMD_OperationOptionsSet CMD_OperationOptionsSet_t; + +/** Message ID for ACK_OperationOptionsSet */ +#define ACK_OPERATIONOPTIONSSET 0x0D62 + +/** + This is the acknowledgement for CMD_OperationOptionsSet. +*/ +typedef struct ACK_OperationOptionsSet ACK_OperationOptionsSet_t; + +/** Message ID for CMD_OperatorSelect */ +#define CMD_OPERATORSELECT 0x1562 + +/** + The message selects a DSL operator. The information is used to configure + operator specific settings inside the DSL firmware. +*/ +typedef struct CMD_OperatorSelect CMD_OperatorSelect_t; + +/** Message ID for ACK_OperatorSelect */ +#define ACK_OPERATORSELECT 0x1562 + +/** + This is the acknowledgement for ACK_OperatorSelect. +*/ +typedef struct ACK_OperatorSelect ACK_OperatorSelect_t; + +/** Message ID for CMD_OperatorSelectionGet */ +#define CMD_OPERATORSELECTIONGET 0x1522 + +/** + The message reads back the selected DSL operator, as selected by + ACK_OperatorSelect. +*/ +typedef struct CMD_OperatorSelectionGet CMD_OperatorSelectionGet_t; + +/** Message ID for ACK_OperatorSelectionGet */ +#define ACK_OPERATORSELECTIONGET 0x1522 + +/** + The message provides the selected DSL operator. +*/ +typedef struct ACK_OperatorSelectionGet ACK_OperatorSelectionGet_t; + +/** Message ID for CMD_TestOptionsSet */ +#define CMD_TESTOPTIONSSET 0x1C44 + +/** + The messages configures settings for test modes. +*/ +typedef struct CMD_TestOptionsSet CMD_TestOptionsSet_t; + +/** Message ID for ACK_TestOptionsSet */ +#define ACK_TESTOPTIONSSET 0x1C44 + +/** + This is the acknowledgement for CMD_TestOptionsSet. +*/ +typedef struct ACK_TestOptionsSet ACK_TestOptionsSet_t; + +/** Message ID for CMD_ClockSet */ +#define CMD_CLOCKSET 0x0F62 + +/** + Sets the PPE clock. The message is supposed to be used for debug/test + purposes only. If applied this PPE clock is forced and will be kept + throughout the link. The PPE frequency scaling automode (see + CMD_PPE_ClockConfigure) will then not change it but behave as being disabled. +*/ +typedef struct CMD_ClockSet CMD_ClockSet_t; + +/** Message ID for ACK_ClockSet */ +#define ACK_CLOCKSET 0x0F62 + +/** + This is the acknowledgement for CMD_ClockSet. +*/ +typedef struct ACK_ClockSet ACK_ClockSet_t; + +/** Message ID for CMD_PPE_ClockConfigure */ +#define CMD_PPE_CLOCKCONFIGURE 0x2262 + +/** + Configures PPE clock options.The message CMD_ClockSet used for debug/test + purposes forces a PPE clock frequency which will be kept throughout the + link.. The PPE frequency scaling automode (see CMD_ClockSet) will then not + change it but behave as being disabled. +*/ +typedef struct CMD_PPE_ClockConfigure CMD_PPE_ClockConfigure_t; + +/** Message ID for ACK_PPE_ClockConfigure */ +#define ACK_PPE_CLOCKCONFIGURE 0x2262 + +/** + This is the acknowledgement for CMD_PPE_ClockConfigure. +*/ +typedef struct ACK_PPE_ClockConfigure ACK_PPE_ClockConfigure_t; + +/** Message ID for CMD_PPE_ClockGet */ +#define CMD_PPE_CLOCKGET 0xF403 + +/** + Reads PPE clock settings. +*/ +typedef struct CMD_PPE_ClockGet CMD_PPE_ClockGet_t; + +/** Message ID for ACK_PPE_ClockGet */ +#define ACK_PPE_CLOCKGET 0xF403 + +/** + Provides PPE clock settings. +*/ +typedef struct ACK_PPE_ClockGet ACK_PPE_ClockGet_t; + +/** Message ID for CMD_PPE_ClockConfigGet */ +#define CMD_PPE_CLOCKCONFIGGET 0x2222 + +/** + Reads back PPE clock options. +*/ +typedef struct CMD_PPE_ClockConfigGet CMD_PPE_ClockConfigGet_t; + +/** Message ID for ACK_PPE_ClockConfigGet */ +#define ACK_PPE_CLOCKCONFIGGET 0x2222 + +/** + Provides PPE clock options. +*/ +typedef struct ACK_PPE_ClockConfigGet ACK_PPE_ClockConfigGet_t; + +/** Message ID for CMD_PLL_ClockSet */ +#define CMD_PLL_CLOCKSET 0x1962 + +/** + Sets an offset for the PLL frequency compared to the crystals rated nominal + frequency of 36 MHz. This allows e.g. to fine tune the handshake tone + frequencies to exactly match the standard values. +*/ +typedef struct CMD_PLL_ClockSet CMD_PLL_ClockSet_t; + +/** Message ID for ACK_PLL_ClockSet */ +#define ACK_PLL_CLOCKSET 0x1962 + +/** + This is the acknowledgement for CMD_PLL_ClockSet. +*/ +typedef struct ACK_PLL_ClockSet ACK_PLL_ClockSet_t; + +/** + Requests information about the current state of the modem state-machine.The + command can be sent in all states of the modem state machine (see Figure 2). +*/ +struct CMD_ModemFSM_StateGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the current state of the modem state-machine. +*/ +struct ACK_ModemFSM_StateGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Modem Status */ + DSL_uint16_t ModemState; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Line Power Management State */ + DSL_uint16_t LxState : 2; + /** Last HS State or SOC Message */ + DSL_uint16_t State_HsOrSoc; + /** RX Signal */ + DSL_uint16_t RxSignal; + /** TX Signal */ + DSL_uint16_t TxSignal; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Modem Status */ + DSL_uint16_t ModemState; + /** Line Power Management State */ + DSL_uint16_t LxState : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Last HS State or SOC Message */ + DSL_uint16_t State_HsOrSoc; + /** RX Signal */ + DSL_uint16_t RxSignal; + /** TX Signal */ + DSL_uint16_t TxSignal; +#endif +} __PACKED__ ; + + +/** + Returns information about the current state of the modem state-machine. This + message is sent autonomously, if the modem enters a new state and reporting + is enabled for that state (see CMD_ModemFSM_EventConfigure). +*/ +struct EVT_ModemFSM_StateGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Modem Status */ + DSL_uint16_t ModemState; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Line Power Management State */ + DSL_uint16_t LxState : 2; + /** Last HS State or SOC Message */ + DSL_uint16_t State_HsOrSoc; + /** RX Signal */ + DSL_uint16_t RxSignal; + /** TX Signal */ + DSL_uint16_t TxSignal; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Modem Status */ + DSL_uint16_t ModemState; + /** Line Power Management State */ + DSL_uint16_t LxState : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Last HS State or SOC Message */ + DSL_uint16_t State_HsOrSoc; + /** RX Signal */ + DSL_uint16_t RxSignal; + /** TX Signal */ + DSL_uint16_t TxSignal; +#endif +} __PACKED__ ; + + +/** + Autonomous message indicating that the modem online code was reached and that + initialization was completed. The management entity may not perform any + query-response messaging until the EVT_ModemReady message is received. Its + generation cannot be disabled. If it is not received this indicates a + problem, possibly with the boot sequence. If the message is received, it + contains a result code that may also indicate that an error was detected by + the firmware during initialization. +*/ +struct EVT_ModemReady +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Error Code */ + DSL_uint8_t ErrorCode; + /** Warning Code */ + DSL_uint8_t WarningCode; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Warning Code */ + DSL_uint8_t WarningCode; + /** Error Code */ + DSL_uint8_t ErrorCode; +#endif +} __PACKED__ ; + + +/** + Controls state transitions of the modem state-machine. +*/ +struct CMD_ModemFSM_StateSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 12; + /** Link Control */ + DSL_uint16_t LinkControl : 4; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Link Control */ + DSL_uint16_t LinkControl : 4; + /** Reserved */ + DSL_uint16_t Res0 : 12; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_ModemFSM_StateSet +*/ +struct ACK_ModemFSM_StateSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports failure information after entering FAIL state. This message is sent + autonomously without host request after entrance into FAIL was indicated by + EVT_ModemFSM_StateGet. Both messages are generated only if enabled with + CMD_ModemFSM_EventConfigure (common Bit E8 "FAIL"). +*/ +struct ALM_ModemFSM_FailReasonGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** System Sub Error Code */ + DSL_uint8_t SubErrorCode; + /** System Error Code */ + DSL_uint8_t ErrorCode; + /** Failure State Information */ + DSL_uint16_t FW_FailCode; + /** Reserved */ + DSL_uint16_t Res0[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** System Error Code */ + DSL_uint8_t ErrorCode; + /** System Sub Error Code */ + DSL_uint8_t SubErrorCode; + /** Failure State Information */ + DSL_uint16_t FW_FailCode; + /** Reserved */ + DSL_uint16_t Res0[8]; +#endif +} __PACKED__ ; + + +/** + Requests failure information after entering FAIL state. +*/ +struct CMD_ModemFSM_FailReasonGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns failure information after entering FAIL state. +*/ +struct ACK_ModemFSM_FailReasonGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** System Sub Error Code */ + DSL_uint8_t SubErrorCode; + /** System Error Code */ + DSL_uint8_t ErrorCode; + /** Failure State Information */ + DSL_uint16_t FW_FailCode; + /** Reserved */ + DSL_uint16_t Res0[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** System Error Code */ + DSL_uint8_t ErrorCode; + /** System Sub Error Code */ + DSL_uint8_t SubErrorCode; + /** Failure State Information */ + DSL_uint16_t FW_FailCode; + /** Reserved */ + DSL_uint16_t Res0[8]; +#endif +} __PACKED__ ; + + +/** + Configuration of options for the modem state machine. +*/ +struct CMD_ModemFSM_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 5; + /** L2 Extensions of G.992.3 Amd4 (2011), (ADSL only), Bit 10 */ + DSL_uint16_t E10 : 1; + /** L2 Automatic Exit (ADSL only), Bit 9 */ + DSL_uint16_t E9 : 1; + /** L2 Low-Power Mode Enable (ADSL only), Bit 8 */ + DSL_uint16_t E8 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 5; + /** Loop Diagnostic Mode Control, Bit 2 */ + DSL_uint16_t E2 : 1; + /** Reserved 0 */ + DSL_uint16_t E1 : 1; + /** Automatic Re-Start Control, Bit 0 */ + DSL_uint16_t E0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Automatic Re-Start Control, Bit 0 */ + DSL_uint16_t E0 : 1; + /** Reserved 0 */ + DSL_uint16_t E1 : 1; + /** Loop Diagnostic Mode Control, Bit 2 */ + DSL_uint16_t E2 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 5; + /** L2 Low-Power Mode Enable (ADSL only), Bit 8 */ + DSL_uint16_t E8 : 1; + /** L2 Automatic Exit (ADSL only), Bit 9 */ + DSL_uint16_t E9 : 1; + /** L2 Extensions of G.992.3 Amd4 (2011), (ADSL only), Bit 10 */ + DSL_uint16_t E10 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 5; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_ModemFSM_OptionsSet. +*/ +struct ACK_ModemFSM_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of options for the modem state machine. +*/ +struct CMD_ModemOptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 10; + /** Steady-State Algorithm Control, Bit5 */ + DSL_uint16_t Trellis : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** AELEM Control (VDSL only), Bit 3 */ + DSL_uint16_t enableAelem : 1; + /** Short Init Control (ADSL only), Bit 2 */ + DSL_uint16_t shortInit : 1; + /** US Virtual Noise Support, Bit 1 */ + DSL_uint16_t enableVN_US : 1; + /** DS Virtual Noise Support, Bit 0 */ + DSL_uint16_t enableVN_DS : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** DS Virtual Noise Support, Bit 0 */ + DSL_uint16_t enableVN_DS : 1; + /** US Virtual Noise Support, Bit 1 */ + DSL_uint16_t enableVN_US : 1; + /** Short Init Control (ADSL only), Bit 2 */ + DSL_uint16_t shortInit : 1; + /** AELEM Control (VDSL only), Bit 3 */ + DSL_uint16_t enableAelem : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Steady-State Algorithm Control, Bit5 */ + DSL_uint16_t Trellis : 1; + /** Reserved */ + DSL_uint16_t Res0 : 10; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_ModemOptionsSet. +*/ +struct ACK_ModemOptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets options for the modem state-machine. Enables/Disables autonomous + messages for specific state transitions (EVT_ModemFSM_StateGet). The EVT + message is generated after entering the particular state listed in the + parameter description of the enable bits. +*/ +struct CMD_ModemFSM_EventConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Enable Bit 15 */ + DSL_uint16_t E15 : 1; + /** Enable Bit 14 */ + DSL_uint16_t E14 : 1; + /** Enable Bit 13 */ + DSL_uint16_t E13 : 1; + /** Enable Bit 12 */ + DSL_uint16_t E12 : 1; + /** Enable Bit 11 */ + DSL_uint16_t E11 : 1; + /** Enable Bit 10 */ + DSL_uint16_t E10 : 1; + /** Enable Bit 9 */ + DSL_uint16_t E9 : 1; + /** Enable Bit 8 */ + DSL_uint16_t E8 : 1; + /** Enable Bit 7 */ + DSL_uint16_t E7 : 1; + /** Enable Bit 6 */ + DSL_uint16_t E6 : 1; + /** Enable Bit 5 */ + DSL_uint16_t E5 : 1; + /** Enable Bit 4 */ + DSL_uint16_t E4 : 1; + /** Enable Bit 3 */ + DSL_uint16_t E3 : 1; + /** Enable Bit 2 */ + DSL_uint16_t E2 : 1; + /** Enable Bit 1 (ADSL only) */ + DSL_uint16_t E1 : 1; + /** Enable Bit 0 */ + DSL_uint16_t E0 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** Enable Bit 16 */ + DSL_uint16_t E16 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Enable Bit 0 */ + DSL_uint16_t E0 : 1; + /** Enable Bit 1 (ADSL only) */ + DSL_uint16_t E1 : 1; + /** Enable Bit 2 */ + DSL_uint16_t E2 : 1; + /** Enable Bit 3 */ + DSL_uint16_t E3 : 1; + /** Enable Bit 4 */ + DSL_uint16_t E4 : 1; + /** Enable Bit 5 */ + DSL_uint16_t E5 : 1; + /** Enable Bit 6 */ + DSL_uint16_t E6 : 1; + /** Enable Bit 7 */ + DSL_uint16_t E7 : 1; + /** Enable Bit 8 */ + DSL_uint16_t E8 : 1; + /** Enable Bit 9 */ + DSL_uint16_t E9 : 1; + /** Enable Bit 10 */ + DSL_uint16_t E10 : 1; + /** Enable Bit 11 */ + DSL_uint16_t E11 : 1; + /** Enable Bit 12 */ + DSL_uint16_t E12 : 1; + /** Enable Bit 13 */ + DSL_uint16_t E13 : 1; + /** Enable Bit 14 */ + DSL_uint16_t E14 : 1; + /** Enable Bit 15 */ + DSL_uint16_t E15 : 1; + /** Enable Bit 16 */ + DSL_uint16_t E16 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_ModemFSM_EventConfigure. (Enabling/Disabling EVENT + messages (EVTs) for specific state transitions.) +*/ +struct ACK_ModemFSM_EventConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Enables/Disables the generation of ALARM messages (ALM) for specific near-end + line failures. If the corresponding Enable bit for a line failure is set, + then the modem firmware will send an autonomous message ALM_LineFailureNE_Get + if this failure occurs. +*/ +struct CMD_FailuresNE_AlarmConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** Enable Bit 13 */ + DSL_uint16_t E13 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** Enable Bit3 */ + DSL_uint16_t E3 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Enable Bit1 */ + DSL_uint16_t E1 : 1; + /** Enable Bit0 */ + DSL_uint16_t E0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Enable Bit0 */ + DSL_uint16_t E0 : 1; + /** Enable Bit1 */ + DSL_uint16_t E1 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Enable Bit3 */ + DSL_uint16_t E3 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** Enable Bit 13 */ + DSL_uint16_t E13 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 2; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_FailuresNE_AlarmConfigure. +*/ +struct ACK_FailuresNE_AlarmConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Enables/Disables the generation of ALARM messages (ALM) for specific far-end + line failures. If the corresponding Enable bit for a line failure is set, + then the modem firmware will send an autonomous message ALM_LineFailureFE_Get + if this failure occurs. +*/ +struct CMD_FailuresFE_AlarmConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 12; + /** Enable Bit3 */ + DSL_uint16_t E3 : 1; + /** Enable Bit2 */ + DSL_uint16_t E2 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Enable Bit0 */ + DSL_uint16_t E0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Enable Bit0 */ + DSL_uint16_t E0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Enable Bit2 */ + DSL_uint16_t E2 : 1; + /** Enable Bit3 */ + DSL_uint16_t E3 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 12; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_FailuresFE_AlarmConfigure. +*/ +struct ACK_FailuresFE_AlarmConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configures re-initialization triggers for near-end failure conditions in + modem state STEADY STATE transmission (see Figure 1). This command is + accepted in RESET state only. +*/ +struct CMD_ReInitNE_Configure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** ESE */ + DSL_uint16_t E13 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** OOS BC0 */ + DSL_uint16_t E10 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** NCD BC0 */ + DSL_uint16_t E8 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 1; + /** LCD BC0 */ + DSL_uint16_t E6 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 2; + /** LOM */ + DSL_uint16_t E3 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 1; + /** LOF */ + DSL_uint16_t E1 : 1; + /** LOS */ + DSL_uint16_t E0 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 14; + /** ESx */ + DSL_uint16_t F1 : 1; + /** SESx */ + DSL_uint16_t F0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** LOS */ + DSL_uint16_t E0 : 1; + /** LOF */ + DSL_uint16_t E1 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 1; + /** LOM */ + DSL_uint16_t E3 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 2; + /** LCD BC0 */ + DSL_uint16_t E6 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 1; + /** NCD BC0 */ + DSL_uint16_t E8 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** OOS BC0 */ + DSL_uint16_t E10 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** ESE */ + DSL_uint16_t E13 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** SESx */ + DSL_uint16_t F0 : 1; + /** ESx */ + DSL_uint16_t F1 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 14; +#endif +} __PACKED__ ; + + +/** + Acknowledgment to CMD_ReInitNE_Configure (Configuration of re-initialization + triggers for near-end failures). +*/ +struct ACK_ReInitNE_Configure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of reinitialization trigger definitions. +*/ +struct CMD_ReinitThreshConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SESx Reinit Period */ + DSL_uint16_t SESxPeriod; + /** LOM Persistency Time for Reinit */ + DSL_uint16_t LomRiPeriod; + /** ESx Reinit Period */ + DSL_uint16_t ESxPeriod; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SESx Reinit Period */ + DSL_uint16_t SESxPeriod; + /** LOM Persistency Time for Reinit */ + DSL_uint16_t LomRiPeriod; + /** ESx Reinit Period */ + DSL_uint16_t ESxPeriod; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message ACK_ReinitThreshConfigure. +*/ +struct ACK_ReinitThreshConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Triggers a shutdown request, either as "L3 orderly shutdown" towards the + remote side or as "locally forced shutdown" to the DSL-FW without sending a + request to the remote side.After an "L3 orderly shutdown" request was + accepted by the CO, the following shall happen: The CPE-Host forces L3 entry + with transition to RESET state by applying CMD_ModemFSM_StateGet.A "locally + forced shutdown" always results in exiting Showtime. +*/ +struct CMD_ShutdownRequest +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Locally Forced Shutdown */ + DSL_uint16_t ForcedShutdown : 1; + /** L3 Orderly Shutdown Request */ + DSL_uint16_t L3shutdown : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** L3 Orderly Shutdown Request */ + DSL_uint16_t L3shutdown : 1; + /** Locally Forced Shutdown */ + DSL_uint16_t ForcedShutdown : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_ShutdownRequest. +*/ +struct ACK_ShutdownRequest +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests information about L3 orderly shutdown requests initiated from the + remote side.Applying CMD_RxL3RequestStatusGet allows the host to determine + whether a near-end LOS or LOM failure is due to an L3 shutdown or an + unexpected line failure. +*/ +struct CMD_RxL3RequestStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_RxL3RequestStatusGet.As long as the modem is in L0 + (Showtime), an ATU-R will automatically respond to any L3 request from the + ATU-C by sending an accept message. If the ATU-R is in L2 mode when it + receives the request, it will send a reject message. Upon receiving an + acceptance, the remote side should enter L3 state and shut off its + transmitter. +*/ +struct ACK_RxL3RequestStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** L3 Request Response */ + DSL_uint16_t L3ReqResponse : 1; + /** L3 Request Received */ + DSL_uint16_t L3ReqReceived : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** L3 Request Received */ + DSL_uint16_t L3ReqReceived : 1; + /** L3 Request Response */ + DSL_uint16_t L3ReqResponse : 1; +#endif +} __PACKED__ ; + + +/** + Requests the status of a near-end initiated L3 shutdown request. If the + remote side accepted the request, in ADSL the host will force L3 entry using + CMD_ModemFSM_StateSet. +*/ +struct CMD_TxL3RequestStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_TxL3RequestStatusGet. +*/ +struct ACK_TxL3RequestStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Status L3 Request */ + DSL_uint16_t L3ReqStatus : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Status L3 Request */ + DSL_uint16_t L3ReqStatus : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Requests the fail reason of a failed near-end initiated L3 request. (see also + ACK_TxL3RequestStatusGet) +*/ +struct CMD_TxL3ReqFailReasonGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the fail reason of a near-end initiated L3 request, as response to + CMD_TxL3ReqFailReasonGet. +*/ +struct ACK_TxL3ReqFailReasonGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 8; + /** L3 Fail Reason */ + DSL_uint8_t L3FailReason; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** L3 Fail Reason */ + DSL_uint8_t L3FailReason; + /** Reserved */ + DSL_uint16_t Res0 : 8; +#endif +} __PACKED__ ; + + +/** + The message selects and enables one of several points during the + initialization process where -after a normal link start had been triggered- + the modem FSM "freezes". Freezing means the CO can be disconnected from the + line and still the CPE continues transmitting the signal of the current + phase. To exit from the freeze a state transition to RESET state has to be + triggered. In case of a Showtime Freeze the reinit-triggers do not have any + effect. +*/ +struct CMD_ModemFSM_Freeze +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Freeze Points */ + DSL_uint16_t FreezePoint; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Freeze Points */ + DSL_uint16_t FreezePoint; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_ModemFSM_Freeze. +*/ +struct ACK_ModemFSM_Freeze +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests information about the loaded FW image. This info is used e.g. for + swapping between ADSL and VDSL. +*/ +struct CMD_FW_ImageInfoGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the information about the FW image requested by CMD_FW_ImageInfoGet +*/ +struct ACK_FW_ImageInfoGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** Site */ + DSL_uint16_t imageType : 1; + /** DSL mode */ + DSL_uint16_t dslMode : 1; + /** Site */ + DSL_uint16_t location : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Site */ + DSL_uint16_t location : 1; + /** DSL mode */ + DSL_uint16_t dslMode : 1; + /** Site */ + DSL_uint16_t imageType : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + The message informs the FW about the status of SW parameters relevant for the + multimode state machine (APS). This can be used to trace the APS behaviour + with FW tools. The message does not influence the APS behaviour. +*/ +struct CMD_APS_Status_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Port Mode */ + DSL_uint16_t DualPortMode; + /** NextMode */ + DSL_uint16_t NextMode; + /** Remember Function */ + DSL_uint16_t bRemember; + /** Activation Sequence */ + DSL_uint16_t ActSeq; + /** Activation Start Mode (ADSL only) */ + DSL_uint16_t ActMode; + /** nRetry */ + DSL_uint16_t nRetry; + /** nFwRetry */ + DSL_uint16_t nFwRetry; + /** nGhsRetry */ + DSL_uint16_t nGhsRetry; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Port Mode */ + DSL_uint16_t DualPortMode; + /** NextMode */ + DSL_uint16_t NextMode; + /** Remember Function */ + DSL_uint16_t bRemember; + /** Activation Sequence */ + DSL_uint16_t ActSeq; + /** Activation Start Mode (ADSL only) */ + DSL_uint16_t ActMode; + /** nRetry */ + DSL_uint16_t nRetry; + /** nFwRetry */ + DSL_uint16_t nFwRetry; + /** nGhsRetry */ + DSL_uint16_t nGhsRetry; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_APS_Status_Set. +*/ +struct ACK_APS_Status_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of the VTU Transmission System Enabling (XTSE).Configures the + transmission system coding types to be supported on the line (VDSL flavour + and annex support).(References: Section 7.3.1.1.1 of G.997.1 and G.994.1 Amd4 + [10] Tables "Standard information field - SPar(1) coding") +*/ +struct CMD_XTSE_Configure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ADSL Mode-Bit15: G.992.5, Annex A */ + DSL_uint16_t A15 : 1; + /** ADSL Mode-Bit14: G.992.5, Annex B */ + DSL_uint16_t A14 : 1; + /** ADSL Mode-Bit13: G.992.3, Annex M */ + DSL_uint16_t A13 : 1; + /** ADSL Mode-Bit12: G.992.3, Annex L, US Mask2 */ + DSL_uint16_t A12 : 1; + /** ADSL Mode-Bit11: G.992.3, Annex L, US Mask1 */ + DSL_uint16_t A11 : 1; + /** ADSL Mode-Bit10: G.992.2, Annex A */ + DSL_uint16_t A10 : 1; + /** ADSL Mode-Bit9: G.992.3, Annex B */ + DSL_uint16_t A9 : 1; + /** ADSL Mode-Bit8: G.992.3, Annex A */ + DSL_uint16_t A8 : 1; + /** ADSL Mode-Bit7: G.992.5, Annex J */ + DSL_uint16_t A7 : 1; + /** ADSL Mode-Bit6: G.992.5, Annex I */ + DSL_uint16_t A6 : 1; + /** ADSL Mode-Bit5: G.992.3, Annex J */ + DSL_uint16_t A5 : 1; + /** ADSL Mode-Bit4: G.992.3, Annex I */ + DSL_uint16_t A4 : 1; + /** ADSL Mode-Bit3: G.992.1, Annex B */ + DSL_uint16_t A3 : 1; + /** ADSL Mode-Bit2: G.992.1, Annex A */ + DSL_uint16_t A2 : 1; + /** ADSL Mode-Bit1: G.992.5, Annex M */ + DSL_uint16_t A1 : 1; + /** ADSL Mode-Bit0: T1.413 */ + DSL_uint16_t A0 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** Bit8: G.FAST */ + DSL_uint16_t F8 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 5; + /** VDSL Mode-Bit2: VDSL2 */ + DSL_uint16_t V2 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ADSL Mode-Bit0: T1.413 */ + DSL_uint16_t A0 : 1; + /** ADSL Mode-Bit1: G.992.5, Annex M */ + DSL_uint16_t A1 : 1; + /** ADSL Mode-Bit2: G.992.1, Annex A */ + DSL_uint16_t A2 : 1; + /** ADSL Mode-Bit3: G.992.1, Annex B */ + DSL_uint16_t A3 : 1; + /** ADSL Mode-Bit4: G.992.3, Annex I */ + DSL_uint16_t A4 : 1; + /** ADSL Mode-Bit5: G.992.3, Annex J */ + DSL_uint16_t A5 : 1; + /** ADSL Mode-Bit6: G.992.5, Annex I */ + DSL_uint16_t A6 : 1; + /** ADSL Mode-Bit7: G.992.5, Annex J */ + DSL_uint16_t A7 : 1; + /** ADSL Mode-Bit8: G.992.3, Annex A */ + DSL_uint16_t A8 : 1; + /** ADSL Mode-Bit9: G.992.3, Annex B */ + DSL_uint16_t A9 : 1; + /** ADSL Mode-Bit10: G.992.2, Annex A */ + DSL_uint16_t A10 : 1; + /** ADSL Mode-Bit11: G.992.3, Annex L, US Mask1 */ + DSL_uint16_t A11 : 1; + /** ADSL Mode-Bit12: G.992.3, Annex L, US Mask2 */ + DSL_uint16_t A12 : 1; + /** ADSL Mode-Bit13: G.992.3, Annex M */ + DSL_uint16_t A13 : 1; + /** ADSL Mode-Bit14: G.992.5, Annex B */ + DSL_uint16_t A14 : 1; + /** ADSL Mode-Bit15: G.992.5, Annex A */ + DSL_uint16_t A15 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 2; + /** VDSL Mode-Bit2: VDSL2 */ + DSL_uint16_t V2 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 5; + /** Bit8: G.FAST */ + DSL_uint16_t F8 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_XTSE_Configure. +*/ +struct ACK_XTSE_Configure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Controls the upstream band usage.The message can only be used for DMTscope + tests without handshake and training phases. +*/ +struct CMD_BandControl_US_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint8_t Res0; + /** Number of Upstream Bands */ + DSL_uint8_t NumBandsUS; + /** Band Descriptor US */ + VRX_ToneIndex_t band[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Upstream Bands */ + DSL_uint8_t NumBandsUS; + /** Reserved */ + DSL_uint8_t Res0; + /** Band Descriptor US */ + VRX_ToneIndex_t band[8]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_BandControl_US_Set. +*/ +struct ACK_BandControl_US_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of PSD and Power parameters. Only used for DMTscope tests + without handshake and training phases. +*/ +struct CMD_PSD_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** MAXNOMPSDus */ + DSL_uint16_t MAXNOMPSDus; + /** Reserved */ + DSL_uint16_t Res1; + /** MAXNOMATPus */ + DSL_uint16_t MAXNOMATPus; + /** Reserved */ + DSL_uint16_t Res2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** MAXNOMPSDus */ + DSL_uint16_t MAXNOMPSDus; + /** Reserved */ + DSL_uint16_t Res1; + /** MAXNOMATPus */ + DSL_uint16_t MAXNOMATPus; + /** Reserved */ + DSL_uint16_t Res2; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_PSD_Set. +*/ +struct ACK_PSD_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Specifies the maximum upstream transmit PSD by means of breakpoints.To be + used only for DMTscope tests without handshake and training phases. +*/ +struct CMD_PSD_BreakpointsTxUS_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint8_t Res0; + /** Number of Breakpoints */ + DSL_uint8_t NumBreakPts; + /** Breakpoint Descriptor TxPSDus */ + VRX_PSDbreak_t breakpoint[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint8_t NumBreakPts; + /** Reserved */ + DSL_uint8_t Res0; + /** Breakpoint Descriptor TxPSDus */ + VRX_PSDbreak_t breakpoint[32]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_PSD_BreakpointsTxUS_Set. +*/ +struct ACK_PSD_BreakpointsTxUS_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sends downstream calibration information for "per-tone" test parameters. It + is effective for Loop Diagnostic Mode (DELT) and Showtime. It is the + responsibility of the manufacturer to provide the data. +*/ +struct CMD_PSD_Calibration_DS_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint16_t NumBreakPts; + /** Breakpoint Descriptor RxPSD Compensation */ + VRX_PSD_CompBreak_t breakpoint[16]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint16_t NumBreakPts; + /** Breakpoint Descriptor RxPSD Compensation */ + VRX_PSD_CompBreak_t breakpoint[16]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_PSD_Calibration_DS_Set. +*/ +struct ACK_PSD_Calibration_DS_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sends upstream calibration information for the upstream transmit PSD. It is + effective for loop diagnostic mode (DELT) and Showtime. It is the + responsibility of the manufacturer to provide the data. +*/ +struct CMD_PSD_Calibration_US_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint16_t NumBreakPts; + /** Breakpoint Descriptor TxPSD Compensation */ + VRX_PSD_CompBreak_t breakpoint[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint16_t NumBreakPts; + /** Breakpoint Descriptor TxPSD Compensation */ + VRX_PSD_CompBreak_t breakpoint[32]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_PSD_Calibration_US_Set. +*/ +struct ACK_PSD_Calibration_US_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of PSD related options. +*/ +struct CMD_PSD_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** US TSSI Control, Bit 0 */ + DSL_uint16_t useTssiUS : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** US TSSI Control, Bit 0 */ + DSL_uint16_t useTssiUS : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_PSD_OptionsSet. +*/ +struct ACK_PSD_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the electrical loop length estimate kl0. +*/ +struct CMD_UPBO_KL0Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the data requested by CMD_UPBO_KL0Get.(Section 7.5.1.23 of G.997.1 + [11]) +*/ +struct ACK_UPBO_KL0Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Kl0 Estimate VTU-R */ + DSL_uint16_t kl0_EstimR; + /** Kl0 Estimate VTU-O */ + DSL_uint16_t kl0_EstimO; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Kl0 Estimate VTU-R */ + DSL_uint16_t kl0_EstimR; + /** Kl0 Estimate VTU-O */ + DSL_uint16_t kl0_EstimO; +#endif +} __PACKED__ ; + + +/** + Requests status parameters for the Upstream Power Back-Off (UPBO) + alternative electrical length estimation method (AELEM). +*/ +struct CMD_PBO_AELEM_Status_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Upstream Power Back-Off (UPBO) status parameters for the alternative + electrical length estimation method (AELEM) are reported. +*/ +struct ACK_PBO_AELEM_Status_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** AELE-MODE Used */ + DSL_uint16_t AeleMode; + /** Kl0 Estimate per Band VTU-R */ + DSL_uint16_t Kl0EstimRPb[4]; + /** Final Kl0 per Band VTU-O */ + DSL_uint16_t Kl0EstimOPb[4]; + /** UPBOELMT */ + DSL_uint16_t UpboElmt; + /** RXTHRSHDS */ + DSL_int16_t RxThreshDs; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** AELE-MODE Used */ + DSL_uint16_t AeleMode; + /** Kl0 Estimate per Band VTU-R */ + DSL_uint16_t Kl0EstimRPb[4]; + /** Final Kl0 per Band VTU-O */ + DSL_uint16_t Kl0EstimOPb[4]; + /** UPBOELMT */ + DSL_uint16_t UpboElmt; + /** RXTHRSHDS */ + DSL_int16_t RxThreshDs; +#endif +} __PACKED__ ; + + +/** + Configuration of a target noise margin delta, which is added to the target + noise margin value configured at the CO (and in case of the CPE received from + there). The resulting value is then taken as target noise margin, e.g. for + bit loading. +*/ +struct CMD_NoiseMarginDeltaSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Target Noise Margin Delta DS */ + DSL_int16_t deltaTARSNRMds; + /** Reserved (VDSL only) */ + DSL_uint16_t Res0 : 14; + /** Reserved (VDSL only) */ + DSL_uint16_t Res1 : 1; + /** Reserved (VDSL only) */ + DSL_uint16_t Res2 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Target Noise Margin Delta DS */ + DSL_int16_t deltaTARSNRMds; + /** Reserved (VDSL only) */ + DSL_uint16_t Res2 : 1; + /** Reserved (VDSL only) */ + DSL_uint16_t Res1 : 1; + /** Reserved (VDSL only) */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_NoiseMarginDeltaSet. +*/ +struct ACK_NoiseMarginDeltaSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets parameters for downstream bearer channel 0 (Chapters 7.3.2.1-5 of + G.997.1 [11]). Bearer channel configuration at the CPE is optional and just + used to further limit the parameters usually configured at the CO.The mode, + ATM or PTM, is selected with the configuration controls "ATMControl" and + "PTMControl" in Parameter 2. Exactly one of them must be enabled, not both! +*/ +struct CMD_BearerCh0_DS_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** Reserved (STM) */ + DSL_uint16_t Res1 : 1; + /** ATM Configuration Control */ + DSL_uint16_t ATMControl : 1; + /** PTM Configuration Control */ + DSL_uint16_t PTMControl : 1; + /** Reserved */ + DSL_uint16_t Res2; + /** Minimum Data Rate BC0 PTM DS, LSW */ + DSL_uint16_t minRate0_PTMds_LSW; + /** Minimum Data Rate BC0 PTM DS, MSW */ + DSL_uint16_t minRate0_PTMds_MSW; + /** Maximum Data Rate BC0 PTM DS, LSW */ + DSL_uint16_t maxRate0_PTMds_LSW; + /** Maximum Data Rate BC0 PTM DS, MSW */ + DSL_uint16_t maxRate0_PTMds_MSW; + /** Minimum Reserved Data Rate BC0 PTM DS, LSW */ + DSL_uint16_t minResRate0_PTMds_LSW; + /** Minimum Reserved Data Rate BC0 PTM DS, MSW */ + DSL_uint16_t minResRate0_PTMds_MSW; + /** Reserved */ + DSL_uint8_t Res3; + /** Maximum Interleaving Delay BC0 PTM DS */ + DSL_uint8_t maxDelay0_PTMds; + /** Reserved */ + DSL_uint16_t Res4 : 4; + /** OPTIONAL CIPOLICY 2, BC0 PTM DS */ + DSL_uint16_t CIPolicy2_PTMds : 1; + /** OPTIONAL CIPOLICY 1, BC0 PTM DS */ + DSL_uint16_t CIPolicy1_PTMds : 1; + /** "SHORT PACKETS" OPTION BC0 PTM DS */ + DSL_uint16_t ShortPacket_PTMds : 1; + /** "PRE-EMPTION" OPTION BC0 PTM DS */ + DSL_uint16_t Preempt_PTMds : 1; + /** Reserved */ + DSL_uint16_t Res5 : 6; + /** Maximum BER BC0 PTM DS */ + DSL_uint16_t BER_PTMds : 2; + /** Reserved */ + DSL_uint16_t Res6 : 4; + /** Minimum INP BC0 PTM DS */ + DSL_uint16_t minINP_PTMds : 12; + /** Reserved */ + DSL_uint16_t Res7; + /** Minimum Data Rate BC0 ATM DS, LSW */ + DSL_uint16_t minRate0_ATMds_LSW; + /** Minimum Data Rate BC0 ATM DS, MSW */ + DSL_uint16_t minRate0_ATMds_MSW; + /** Maximum Data Rate BC0 ATM DS, LSW */ + DSL_uint16_t maxRate0_ATMds_LSW; + /** Maximum Data Rate BC0 ATM DS, MSW */ + DSL_uint16_t maxRate0_ATMds_MSW; + /** Minimum Reserved Data Rate BC0 ATM DS, LSW */ + DSL_uint16_t minResRate0_ATMds_LSW; + /** Minimum Reserved Data Rate BC0 ATM DS, MSW */ + DSL_uint16_t minResRate0_ATMds_MSW; + /** Reserved */ + DSL_uint8_t Res8; + /** Maximum Interleaving Delay BC0 ATM DS */ + DSL_uint8_t maxDelay0_ATMds; + /** Reserved */ + DSL_uint16_t Res9 : 4; + /** OPTIONAL CIPOLICY 2, BC0 ATM DS */ + DSL_uint16_t CIPolicy2_ATMds : 1; + /** OPTIONAL CIPOLICY 1, BC0 ATM DS */ + DSL_uint16_t CIPolicy1_ATMds : 1; + /** Reserved */ + DSL_uint16_t Res10 : 8; + /** Maximum BER BC0 ATM DS */ + DSL_uint16_t BER_ATMds : 2; + /** Reserved */ + DSL_uint16_t Res11 : 4; + /** Minimum INP BC0 ATM DS */ + DSL_uint16_t minINP_ATMds : 12; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PTM Configuration Control */ + DSL_uint16_t PTMControl : 1; + /** ATM Configuration Control */ + DSL_uint16_t ATMControl : 1; + /** Reserved (STM) */ + DSL_uint16_t Res1 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** Reserved */ + DSL_uint16_t Res2; + /** Minimum Data Rate BC0 PTM DS, LSW */ + DSL_uint16_t minRate0_PTMds_LSW; + /** Minimum Data Rate BC0 PTM DS, MSW */ + DSL_uint16_t minRate0_PTMds_MSW; + /** Maximum Data Rate BC0 PTM DS, LSW */ + DSL_uint16_t maxRate0_PTMds_LSW; + /** Maximum Data Rate BC0 PTM DS, MSW */ + DSL_uint16_t maxRate0_PTMds_MSW; + /** Minimum Reserved Data Rate BC0 PTM DS, LSW */ + DSL_uint16_t minResRate0_PTMds_LSW; + /** Minimum Reserved Data Rate BC0 PTM DS, MSW */ + DSL_uint16_t minResRate0_PTMds_MSW; + /** Maximum Interleaving Delay BC0 PTM DS */ + DSL_uint8_t maxDelay0_PTMds; + /** Reserved */ + DSL_uint8_t Res3; + /** Maximum BER BC0 PTM DS */ + DSL_uint16_t BER_PTMds : 2; + /** Reserved */ + DSL_uint16_t Res5 : 6; + /** "PRE-EMPTION" OPTION BC0 PTM DS */ + DSL_uint16_t Preempt_PTMds : 1; + /** "SHORT PACKETS" OPTION BC0 PTM DS */ + DSL_uint16_t ShortPacket_PTMds : 1; + /** OPTIONAL CIPOLICY 1, BC0 PTM DS */ + DSL_uint16_t CIPolicy1_PTMds : 1; + /** OPTIONAL CIPOLICY 2, BC0 PTM DS */ + DSL_uint16_t CIPolicy2_PTMds : 1; + /** Reserved */ + DSL_uint16_t Res4 : 4; + /** Minimum INP BC0 PTM DS */ + DSL_uint16_t minINP_PTMds : 12; + /** Reserved */ + DSL_uint16_t Res6 : 4; + /** Reserved */ + DSL_uint16_t Res7; + /** Minimum Data Rate BC0 ATM DS, LSW */ + DSL_uint16_t minRate0_ATMds_LSW; + /** Minimum Data Rate BC0 ATM DS, MSW */ + DSL_uint16_t minRate0_ATMds_MSW; + /** Maximum Data Rate BC0 ATM DS, LSW */ + DSL_uint16_t maxRate0_ATMds_LSW; + /** Maximum Data Rate BC0 ATM DS, MSW */ + DSL_uint16_t maxRate0_ATMds_MSW; + /** Minimum Reserved Data Rate BC0 ATM DS, LSW */ + DSL_uint16_t minResRate0_ATMds_LSW; + /** Minimum Reserved Data Rate BC0 ATM DS, MSW */ + DSL_uint16_t minResRate0_ATMds_MSW; + /** Maximum Interleaving Delay BC0 ATM DS */ + DSL_uint8_t maxDelay0_ATMds; + /** Reserved */ + DSL_uint8_t Res8; + /** Maximum BER BC0 ATM DS */ + DSL_uint16_t BER_ATMds : 2; + /** Reserved */ + DSL_uint16_t Res10 : 8; + /** OPTIONAL CIPOLICY 1, BC0 ATM DS */ + DSL_uint16_t CIPolicy1_ATMds : 1; + /** OPTIONAL CIPOLICY 2, BC0 ATM DS */ + DSL_uint16_t CIPolicy2_ATMds : 1; + /** Reserved */ + DSL_uint16_t Res9 : 4; + /** Minimum INP BC0 ATM DS */ + DSL_uint16_t minINP_ATMds : 12; + /** Reserved */ + DSL_uint16_t Res11 : 4; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_BearerCh0_DS_Set. (Configuration of bearer channel + 0). +*/ +struct ACK_BearerCh0_DS_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets parameters for upstream bearer channel 0 (Chapters 7.3.2.1-5 of G.997.1 + [11]). Bearer channel configuration at the CPE is optional and just used to + further limit the parameters usually configured at the CO.The mode, ATM or + PTM, is selected with the configuration controls "ATMControl" and + "PTMControl" in Parameter 2. Exactly one of them must be enabled, not both! +*/ +struct CMD_BearerCh0_US_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** Reserved (STM) */ + DSL_uint16_t Res1 : 1; + /** ATM Configuration Control */ + DSL_uint16_t ATMControl : 1; + /** PTM Configuration Control */ + DSL_uint16_t PTMControl : 1; + /** Reserved */ + DSL_uint16_t Res2; + /** Minimum Data Rate BC0 PTM US, LSW */ + DSL_uint16_t minRate0_PTMus_LSW; + /** Minimum Data Rate BC0 PTM US, MSW */ + DSL_uint16_t minRate0_PTMus_MSW; + /** Maximum Data Rate BC0 PTM US, LSW */ + DSL_uint16_t maxRate0_PTMus_LSW; + /** Maximum Data Rate BC0 PTM US, MSW */ + DSL_uint16_t maxRate0_PTMus_MSW; + /** Minimum Reserved Data Rate BC0 PTM US, LSW */ + DSL_uint16_t minResRate0_PTMus_LSW; + /** Minimum Reserved Data Rate BC0 PTM US, MSW */ + DSL_uint16_t minResRate0_PTMus_MSW; + /** Reserved */ + DSL_uint8_t Res3; + /** Maximum Interleaving Delay BC0 PTM US */ + DSL_uint8_t maxDelay0_PTMus; + /** Reserved */ + DSL_uint16_t Res4 : 4; + /** OPTIONAL CIPOLICY 2, BC0 PTM US */ + DSL_uint16_t CIPolicy2_PTMus : 1; + /** OPTIONAL CIPOLICY 1, BC0 PTM US */ + DSL_uint16_t CIPolicy1_PTMus : 1; + /** "SHORT PACKETS" OPTION BC0 PTM US */ + DSL_uint16_t ShortPacket_PTMus : 1; + /** "PRE-EMPTION" OPTION BC0 PTM US */ + DSL_uint16_t Preempt_PTMus : 1; + /** Reserved */ + DSL_uint16_t Res5 : 6; + /** Maximum BER BC0 PTM US */ + DSL_uint16_t BER_PTMus : 2; + /** Reserved */ + DSL_uint16_t Res6 : 4; + /** Minimum INP BC0 PTM US */ + DSL_uint16_t minINP_PTMus : 12; + /** Reserved */ + DSL_uint16_t Res7; + /** Minimum Data Rate BC0 ATM US, LSW */ + DSL_uint16_t minRate0_ATMus_LSW; + /** Minimum Data Rate BC0 ATM US, MSW */ + DSL_uint16_t minRate0_ATMus_MSW; + /** Maximum Data Rate BC0 ATM US, LSW */ + DSL_uint16_t maxRate0_ATMus_LSW; + /** Maximum Data Rate BC0 ATM US, MSW */ + DSL_uint16_t maxRate0_ATMus_MSW; + /** Minimum Reserved Data Rate BC0 ATM US, LSW */ + DSL_uint16_t minResRate0_ATMus_LSW; + /** Minimum Reserved Data Rate BC0 ATM US, MSW */ + DSL_uint16_t minResRate0_ATMus_MSW; + /** Reserved */ + DSL_uint8_t Res8; + /** Maximum Interleaving Delay BC0 ATM US */ + DSL_uint8_t maxDelay0_ATMus; + /** Reserved */ + DSL_uint16_t Res9 : 4; + /** OPTIONAL CIPOLICY 1, BC0 ATM US */ + DSL_uint16_t CIPolicy2_ATMus : 1; + /** OPTIONAL CIPOLICY 2, BC0 ATM US */ + DSL_uint16_t CIPolicy1_ATMus : 1; + /** Reserved */ + DSL_uint16_t Res10 : 8; + /** Maximum BER BC0 ATM US */ + DSL_uint16_t BER_ATMus : 2; + /** Reserved */ + DSL_uint16_t Res11 : 4; + /** Minimum INP BC0 ATM US */ + DSL_uint16_t minINP_ATMus : 12; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PTM Configuration Control */ + DSL_uint16_t PTMControl : 1; + /** ATM Configuration Control */ + DSL_uint16_t ATMControl : 1; + /** Reserved (STM) */ + DSL_uint16_t Res1 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** Reserved */ + DSL_uint16_t Res2; + /** Minimum Data Rate BC0 PTM US, LSW */ + DSL_uint16_t minRate0_PTMus_LSW; + /** Minimum Data Rate BC0 PTM US, MSW */ + DSL_uint16_t minRate0_PTMus_MSW; + /** Maximum Data Rate BC0 PTM US, LSW */ + DSL_uint16_t maxRate0_PTMus_LSW; + /** Maximum Data Rate BC0 PTM US, MSW */ + DSL_uint16_t maxRate0_PTMus_MSW; + /** Minimum Reserved Data Rate BC0 PTM US, LSW */ + DSL_uint16_t minResRate0_PTMus_LSW; + /** Minimum Reserved Data Rate BC0 PTM US, MSW */ + DSL_uint16_t minResRate0_PTMus_MSW; + /** Maximum Interleaving Delay BC0 PTM US */ + DSL_uint8_t maxDelay0_PTMus; + /** Reserved */ + DSL_uint8_t Res3; + /** Maximum BER BC0 PTM US */ + DSL_uint16_t BER_PTMus : 2; + /** Reserved */ + DSL_uint16_t Res5 : 6; + /** "PRE-EMPTION" OPTION BC0 PTM US */ + DSL_uint16_t Preempt_PTMus : 1; + /** "SHORT PACKETS" OPTION BC0 PTM US */ + DSL_uint16_t ShortPacket_PTMus : 1; + /** OPTIONAL CIPOLICY 1, BC0 PTM US */ + DSL_uint16_t CIPolicy1_PTMus : 1; + /** OPTIONAL CIPOLICY 2, BC0 PTM US */ + DSL_uint16_t CIPolicy2_PTMus : 1; + /** Reserved */ + DSL_uint16_t Res4 : 4; + /** Minimum INP BC0 PTM US */ + DSL_uint16_t minINP_PTMus : 12; + /** Reserved */ + DSL_uint16_t Res6 : 4; + /** Reserved */ + DSL_uint16_t Res7; + /** Minimum Data Rate BC0 ATM US, LSW */ + DSL_uint16_t minRate0_ATMus_LSW; + /** Minimum Data Rate BC0 ATM US, MSW */ + DSL_uint16_t minRate0_ATMus_MSW; + /** Maximum Data Rate BC0 ATM US, LSW */ + DSL_uint16_t maxRate0_ATMus_LSW; + /** Maximum Data Rate BC0 ATM US, MSW */ + DSL_uint16_t maxRate0_ATMus_MSW; + /** Minimum Reserved Data Rate BC0 ATM US, LSW */ + DSL_uint16_t minResRate0_ATMus_LSW; + /** Minimum Reserved Data Rate BC0 ATM US, MSW */ + DSL_uint16_t minResRate0_ATMus_MSW; + /** Maximum Interleaving Delay BC0 ATM US */ + DSL_uint8_t maxDelay0_ATMus; + /** Reserved */ + DSL_uint8_t Res8; + /** Maximum BER BC0 ATM US */ + DSL_uint16_t BER_ATMus : 2; + /** Reserved */ + DSL_uint16_t Res10 : 8; + /** OPTIONAL CIPOLICY 2, BC0 ATM US */ + DSL_uint16_t CIPolicy1_ATMus : 1; + /** OPTIONAL CIPOLICY 1, BC0 ATM US */ + DSL_uint16_t CIPolicy2_ATMus : 1; + /** Reserved */ + DSL_uint16_t Res9 : 4; + /** Minimum INP BC0 ATM US */ + DSL_uint16_t minINP_ATMus : 12; + /** Reserved */ + DSL_uint16_t Res11 : 4; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_BearerCh0_US_Set. (Configuration of bearer channel + 0). +*/ +struct ACK_BearerCh0_US_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message selects the channel initialization policy (CIPOLICY) to be + applied for the tranceiver configuration. (Section 7.3.2.10 of G.997.1)In + ADSL mode, the message is applicable only for ADSL2/2+ (Section 7.10.3 of + G.992.3 Amd 3). The standard defines the parameter for the CO only. Here, the + message is applied at the ADSL-CPE, then it overrides the policy given by the + CO! +*/ +struct CMD_InitPolicySet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Reserved for Init Policy BC1 */ + DSL_uint16_t Res1 : 1; + /** Init Policy BC0 */ + DSL_uint16_t policy0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Init Policy BC0 */ + DSL_uint16_t policy0 : 1; + /** Reserved for Init Policy BC1 */ + DSL_uint16_t Res1 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Acknowledgment for message CMD_InitPolicySet. +*/ +struct ACK_InitPolicySet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of options for the modem state machine. +*/ +struct CMD_ErasureControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** "Trust-Me"-Bit, Bit 2 (ADSL only) */ + DSL_uint16_t trustMe : 1; + /** Erasure Policy, Bit 1 */ + DSL_uint16_t erasurePolicy : 1; + /** Reserved, Bit0 */ + DSL_uint16_t Res1 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved, Bit0 */ + DSL_uint16_t Res1 : 1; + /** Erasure Policy, Bit 1 */ + DSL_uint16_t erasurePolicy : 1; + /** "Trust-Me"-Bit, Bit 2 (ADSL only) */ + DSL_uint16_t trustMe : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_ErasureControlSet. +*/ +struct ACK_ErasureControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Performs some miscellaneous chip set configurations. +*/ +struct CMD_Misc_ConfigSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** TPS-TC Type Event Enable */ + DSL_uint16_t TcTypeEvt : 1; + /** Hlog Invalidation */ + DSL_uint16_t HlogValidation : 1; + /** Short CLR for ADSL2+ */ + DSL_uint16_t ShortClrA2p : 1; + /** Short CLR for ADSL2 */ + DSL_uint16_t ShortClrA2 : 1; + /** Short CLR for ADSL1 */ + DSL_uint16_t ShortClrA1 : 1; + /** INP Protection Improvement (VDSL only) */ + DSL_uint16_t FrameParams : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Activation Start Mode (ADSL only) */ + DSL_uint16_t StartMode : 1; + /** Non-standard GHS-ANSI Activation (ADSL only) */ + DSL_uint16_t GhsAnsiSeq : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Non-standard GHS-ANSI Activation (ADSL only) */ + DSL_uint16_t GhsAnsiSeq : 1; + /** Activation Start Mode (ADSL only) */ + DSL_uint16_t StartMode : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** INP Protection Improvement (VDSL only) */ + DSL_uint16_t FrameParams : 1; + /** Short CLR for ADSL1 */ + DSL_uint16_t ShortClrA1 : 1; + /** Short CLR for ADSL2 */ + DSL_uint16_t ShortClrA2 : 1; + /** Short CLR for ADSL2+ */ + DSL_uint16_t ShortClrA2p : 1; + /** Hlog Invalidation */ + DSL_uint16_t HlogValidation : 1; + /** TPS-TC Type Event Enable */ + DSL_uint16_t TcTypeEvt : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for ACK_Misc_ConfigSet. +*/ +struct ACK_Misc_ConfigSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Performs some miscellaneous chip set configurations. +*/ +struct CMD_OperationOptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** VRX_ENABLE, Fixed value */ + DSL_uint16_t Mfd : 1; + /** Enhanced Upstream Framing (ADSL-Only) */ + DSL_uint16_t UsFramingExt : 1; + /** NTR (currently VDSL-Only) */ + DSL_uint16_t Ntr : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** NTR (currently VDSL-Only) */ + DSL_uint16_t Ntr : 1; + /** Enhanced Upstream Framing (ADSL-Only) */ + DSL_uint16_t UsFramingExt : 1; + /** VRX_ENABLE, Fixed value */ + DSL_uint16_t Mfd : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_OperationOptionsSet. +*/ +struct ACK_OperationOptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message selects a DSL operator. The information is used to configure + operator specific settings inside the DSL firmware. +*/ +struct CMD_OperatorSelect +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** DSL Operator Selection */ + DSL_uint16_t DslOperator; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** DSL Operator Selection */ + DSL_uint16_t DslOperator; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for ACK_OperatorSelect. +*/ +struct ACK_OperatorSelect +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message reads back the selected DSL operator, as selected by + ACK_OperatorSelect. +*/ +struct CMD_OperatorSelectionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message provides the selected DSL operator. +*/ +struct ACK_OperatorSelectionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Selected DSL Operator */ + DSL_uint16_t DslOperator; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Selected DSL Operator */ + DSL_uint16_t DslOperator; +#endif +} __PACKED__ ; + + +/** + The messages configures settings for test modes. +*/ +struct CMD_TestOptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 11; + /** ATTNDR Improved Method Support (VDSL only) */ + DSL_uint16_t AttndrImproved : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** US Finegain Control */ + DSL_uint16_t FgainControlUs : 1; + /** DS Finegain Control */ + DSL_uint16_t FgainControlDs : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** DS Finegain Control */ + DSL_uint16_t FgainControlDs : 1; + /** US Finegain Control */ + DSL_uint16_t FgainControlUs : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** ATTNDR Improved Method Support (VDSL only) */ + DSL_uint16_t AttndrImproved : 1; + /** Reserved */ + DSL_uint16_t Res0 : 11; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_TestOptionsSet. +*/ +struct ACK_TestOptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets the PPE clock. The message is supposed to be used for debug/test + purposes only. If applied this PPE clock is forced and will be kept + throughout the link. The PPE frequency scaling automode (see + CMD_PPE_ClockConfigure) will then not change it but behave as being disabled. +*/ +struct CMD_ClockSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 11; + /** Clock Change Trigger */ + DSL_uint16_t ppeClkSet : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** PPE Clock */ + DSL_uint16_t ppeClock : 3; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE Clock */ + DSL_uint16_t ppeClock : 3; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Clock Change Trigger */ + DSL_uint16_t ppeClkSet : 1; + /** Reserved */ + DSL_uint16_t Res0 : 11; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_ClockSet. +*/ +struct ACK_ClockSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configures PPE clock options.The message CMD_ClockSet used for debug/test + purposes forces a PPE clock frequency which will be kept throughout the + link.. The PPE frequency scaling automode (see CMD_ClockSet) will then not + change it but behave as being disabled. +*/ +struct CMD_PPE_ClockConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE Frequency Scaling Mode */ + DSL_uint16_t FreqScaleMode; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE Frequency Scaling Mode */ + DSL_uint16_t FreqScaleMode; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_PPE_ClockConfigure. +*/ +struct ACK_PPE_ClockConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reads PPE clock settings. +*/ +struct CMD_PPE_ClockGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides PPE clock settings. +*/ +struct ACK_PPE_ClockGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** PPE Clock */ + DSL_uint16_t ppeClock : 3; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE Clock */ + DSL_uint16_t ppeClock : 3; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + Reads back PPE clock options. +*/ +struct CMD_PPE_ClockConfigGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides PPE clock options. +*/ +struct ACK_PPE_ClockConfigGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE Frequency Scaling Mode */ + DSL_uint16_t FreqScaleMode; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE Frequency Scaling Mode */ + DSL_uint16_t FreqScaleMode; +#endif +} __PACKED__ ; + + +/** + Sets an offset for the PLL frequency compared to the crystals rated nominal + frequency of 36 MHz. This allows e.g. to fine tune the handshake tone + frequencies to exactly match the standard values. +*/ +struct CMD_PLL_ClockSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PLL Clock Offset in ppm */ + DSL_int16_t pllClockOffset; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PLL Clock Offset in ppm */ + DSL_int16_t pllClockOffset; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_PLL_ClockSet. +*/ +struct ACK_PLL_ClockSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_CONFIG_PMD_H_*/ diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_const.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_const.h new file mode 100644 index 0000000000000000000000000000000000000000..9803f2290e130d1d073c2bc002502b57ccaf249d --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_const.h @@ -0,0 +1,611 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_CONST_H_ +#define _DRV_DSL_CPE_VRX_MSG_CONST_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _CONST_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Common Constants Definition section ----- */ +/** Disable a functionality or state */ +#define VRX_DISABLE 0 +/** Enable a functionality or state */ +#define VRX_ENABLE 1 +/** Disable a functionality or state */ +#define VRX_DISABLE_N 1 +/** Enable a functionality or state */ +#define VRX_ENABLE_N 0 +/** Logical value TRUE */ +#define VRX_TRUE 1 +/** Logical value FALSE */ +#define VRX_FALSE 0 +/** Functionality is supported */ +#define SUPPORTED 1 +/** Functionality is not supported */ +#define NOT_SUPPORTED 0 +/** Counter value is below threshold */ +#define CNTR_OK 0 +/** Counter threshold met or exceeded */ +#define CNTR_THRESH_HIT 1 +/** Fixed Value of 0; Used for numbering parameters (like Array Index number or Length number) */ +#define FV0 0 +/** Fixed Value of 1; Used for numbering parameters (like Array Index number or Length number) */ +#define FV1 1 +/** Fixed Value of 2; Used for numbering parameters (like Array Index number or Length number) */ +#define FV2 2 +/** Fixed Value of 3; Used for numbering parameters (like Array Index number or Length number) */ +#define FV3 3 +/** Fixed Value of 4; Used for numbering parameters (like Array Index number or Length number) */ +#define FV4 4 +/** Fixed Value of 5; Used for numbering parameters (like Array Index number or Length number) */ +#define FV5 5 +/** Fixed Value of 6; Used for numbering parameters (like Array Index number or Length number) */ +#define FV6 6 +/** Fixed Value of 7; Used for numbering parameters (like Array Index number or Length number) */ +#define FV7 7 +/** Fixed Value of 8; Used for numbering parameters (like Array Index number or Length number) */ +#define FV8 8 +/** Fixed Value of 9; Used for numbering parameters (like Array Index number or Length number) */ +#define FV9 9 +/** Fixed Value of 10; Used for numbering parameters (like Array Index number or Length number) */ +#define FV10 10 +/** Fixed Value of 11; Used for numbering parameters (like Array Index number or Length number) */ +#define FV11 11 +/** Fixed Value of 12; Used for numbering parameters (like Array Index number or Length number) */ +#define FV12 12 +/** Fixed Value of 13; Used for numbering parameters (like Array Index number or Length number) */ +#define FV13 13 +/** Fixed Value of 15; Used for numbering parameters (like Array Index number or Length number) */ +#define FV15 15 +/** Fixed Value of 16; Used for numbering parameters (like Array Index number or Length number) */ +#define FV16 16 +/** Fixed Value of 17; Used for numbering parameters (like Array Index number or Length number) */ +#define FV17 17 +/** Fixed Value of 20; Used for numbering parameters (like Array Index number or Length number) */ +#define FV20 20 +/** Fixed Value of 32; Used for numbering parameters (like Array Index number or Length number) */ +#define FV32 32 +/** Fixed Value of 127; Used for numbering parameters (like Array Index number or Length number) */ +#define FV127 127 +/** Fixed Value of 128; Used for numbering parameters (like Array Index number or Length number) */ +#define FV128 128 +/** Fixed Value of 256; Used for numbering parameters (like Array Index number or Length number) */ +#define FV256 256 +/** Link 0 is selected */ +#define LINK0 0x0 +/** Link 1 is selected */ +#define LINK1 0x1 +/** No Failure */ +#define VRX_OK 0x0 +/** Failure */ +#define VRX_FAIL 0x1 +/** EOC Failure */ +#define VRX_EOCFAIL 0x2 +/** Request was rejected */ +#define VRX_REJECTED 0x1 +/* ----- Common Constants Definition section (End) ----- */ +/* ----- Message Specific Constants Definition section ----- */ +/* ----- Message Specific Constants Definition section (End) ----- */ +/** + +*/ +typedef struct VRX_BAT_TableEntry VRX_BAT_TableEntry_t; + +/** + +*/ +typedef struct VRX_ToneIndex VRX_ToneIndex_t; + +/** + +*/ +typedef struct VRX_PSDbreak VRX_PSDbreak_t; + +/** + +*/ +typedef struct VRX_PSD_TxDS VRX_PSD_TxDS_t; + +/** + +*/ +typedef struct VRX_PSDbreak2 VRX_PSDbreak2_t; + +/** + +*/ +typedef struct VRX_PSD_CompBreak VRX_PSD_CompBreak_t; + +/** + +*/ +typedef struct VRX_RxRef2PSD VRX_RxRef2PSD_t; + +/** + +*/ +typedef struct VRX_LineStatus_pb VRX_LineStatus_pb_t; + +/** + +*/ +typedef struct VRX_TSSIbreak VRX_TSSIbreak_t; + +/** + +*/ +typedef struct VRX_TSSI VRX_TSSI_t; + +/** + +*/ +typedef struct VRX_QLN_NE VRX_QLN_NE_t; + +/** + +*/ +typedef struct VRX_TestParam VRX_TestParam_t; + +/** + +*/ +typedef struct VRX_SNR VRX_SNR_t; + +/** + +*/ +typedef struct VRX_HLIN VRX_HLIN_t; + +/** + +*/ +typedef struct VRX_ClearEOC VRX_ClearEOC_t; + +/** + +*/ +typedef struct VRX_UER VRX_UER_t; + +/** + +*/ +typedef struct VRX_TIME VRX_TIME_t; + +/** + +*/ +typedef struct VRX_ATMcell VRX_ATMcell_t; + +/** + +*/ +struct VRX_BAT_TableEntry +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Bit Allocation */ + DSL_uint8_t data_01; + /** Bit Allocation */ + DSL_uint8_t data_00; +#else + /** Bit Allocation */ + DSL_uint8_t data_00; + /** Bit Allocation */ + DSL_uint8_t data_01; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_ToneIndex +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** First Tone Index */ + DSL_uint16_t first; + /** Last Tone Index */ + DSL_uint16_t last; +#else + /** First Tone Index */ + DSL_uint16_t first; + /** Last Tone Index */ + DSL_uint16_t last; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_PSDbreak +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex; + /** PSD Level of Breakpoint */ + DSL_uint16_t level; + /** Reserved */ + DSL_uint16_t Res0; +#else + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex; + /** PSD Level of Breakpoint */ + DSL_uint16_t level; + /** Reserved */ + DSL_uint16_t Res0; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_PSD_TxDS +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Reserved */ + DSL_uint8_t Res0; + /** Number of Breakpoints */ + DSL_uint8_t NumBreakPts; + /** Breakpoint Descriptor TxPSDds */ + VRX_PSDbreak_t breakpoint[48]; +#else + /** Number of Breakpoints */ + DSL_uint8_t NumBreakPts; + /** Reserved */ + DSL_uint8_t Res0; + /** Breakpoint Descriptor TxPSDds */ + VRX_PSDbreak_t breakpoint[48]; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_PSDbreak2 +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex; + /** PSD Level of Breakpoint */ + DSL_uint16_t level; +#else + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex; + /** PSD Level of Breakpoint */ + DSL_uint16_t level; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_PSD_CompBreak +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex; + /** Compensation Level of Breakpoint */ + DSL_int16_t level; +#else + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex; + /** Compensation Level of Breakpoint */ + DSL_int16_t level; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_RxRef2PSD +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** UPBO RxRefPSD Parameter "a" */ + DSL_int16_t a; + /** UPBO RxRefPSD Parameter "b" */ + DSL_int16_t b; +#else + /** UPBO RxRefPSD Parameter "a" */ + DSL_int16_t a; + /** UPBO RxRefPSD Parameter "b" */ + DSL_int16_t b; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_LineStatus_pb +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** LATN per Band */ + DSL_uint16_t LATNpb; + /** SATN per Band */ + DSL_uint16_t SATNpb; + /** SNRM per Band */ + DSL_uint16_t SNRMpb; +#else + /** LATN per Band */ + DSL_uint16_t LATNpb; + /** SATN per Band */ + DSL_uint16_t SATNpb; + /** SNRM per Band */ + DSL_uint16_t SNRMpb; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_TSSIbreak +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Supported Set Status */ + DSL_uint16_t supset : 1; + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex : 15; + /** Transmit Spectrum Shaping Value of Breakpoint */ + DSL_uint16_t level; +#else + /** Tone Index of Breakpoint */ + DSL_uint16_t toneIndex : 15; + /** Supported Set Status */ + DSL_uint16_t supset : 1; + /** Transmit Spectrum Shaping Value of Breakpoint */ + DSL_uint16_t level; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_TSSI +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Number of breakpoints */ + DSL_uint16_t Num; + /** TSSI breakpoints */ + VRX_TSSIbreak_t TSSIbrkp[64]; +#else + /** Number of breakpoints */ + DSL_uint16_t Num; + /** TSSI breakpoints */ + VRX_TSSIbreak_t TSSIbrkp[64]; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_QLN_NE +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** QLN per Subcarrier Group */ + DSL_uint8_t qln_01; + /** QLN per Subcarrier Group */ + DSL_uint8_t qln_00; +#else + /** QLN per Subcarrier Group */ + DSL_uint8_t qln_00; + /** QLN per Subcarrier Group */ + DSL_uint8_t qln_01; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_TestParam +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** HLOG per Subcarrier Group */ + DSL_uint16_t hlog; + /** SNR per Subcarrier Group */ + DSL_uint8_t snr; + /** QLN per Subcarrier Group */ + DSL_uint8_t qln; +#else + /** HLOG per Subcarrier Group */ + DSL_uint16_t hlog; + /** QLN per Subcarrier Group */ + DSL_uint8_t qln; + /** SNR per Subcarrier Group */ + DSL_uint8_t snr; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_SNR +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** SNR per Subcarrier Group */ + DSL_uint8_t snr_01; + /** SNR per Subcarrier Group */ + DSL_uint8_t snr_00; +#else + /** SNR per Subcarrier Group */ + DSL_uint8_t snr_00; + /** SNR per Subcarrier Group */ + DSL_uint8_t snr_01; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_HLIN +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** HLIN per Subcarrier Group, Real Part */ + DSL_int16_t hlin_real; + /** HLIN per Subcarrier Group, Imaginary Part */ + DSL_int16_t hlin_imag; +#else + /** HLIN per Subcarrier Group, Real Part */ + DSL_int16_t hlin_real; + /** HLIN per Subcarrier Group, Imaginary Part */ + DSL_int16_t hlin_imag; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_ClearEOC +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** Length of the Clear EOC Message */ + DSL_uint16_t Length : 10; + /** Protocol Identifier */ + DSL_uint16_t ProtIdent; + /** Clear EOC data field */ + DSL_uint8_t Data[508]; +#else + /** Length of the Clear EOC Message */ + DSL_uint16_t Length : 10; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** Protocol Identifier */ + DSL_uint16_t ProtIdent; + /** Clear EOC data field */ + DSL_uint8_t Data[508]; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_UER +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** UERps Real Part, LSW */ + DSL_uint16_t UER_Real_LSW; + /** UERps Real Part, MSW */ + DSL_uint16_t UER_Real_MSW; + /** UERps Imaginary Part, LSW */ + DSL_uint16_t UER_Imag_LSW; + /** UERps Imaginary Part, MSW */ + DSL_uint16_t UER_Imag_MSW; +#else + /** UERps Real Part, LSW */ + DSL_uint16_t UER_Real_LSW; + /** UERps Real Part, MSW */ + DSL_uint16_t UER_Real_MSW; + /** UERps Imaginary Part, LSW */ + DSL_uint16_t UER_Imag_LSW; + /** UERps Imaginary Part, MSW */ + DSL_uint16_t UER_Imag_MSW; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_TIME +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Hours */ + DSL_uint8_t hours; + /** Minutes */ + DSL_uint8_t minutes; + /** Seconds */ + DSL_uint8_t seconds; + /** Reserved */ + DSL_uint8_t Res0; +#else + /** Minutes */ + DSL_uint8_t minutes; + /** Hours */ + DSL_uint8_t hours; + /** Reserved */ + DSL_uint8_t Res0; + /** Seconds */ + DSL_uint8_t seconds; +#endif +} __PACKED__ ; + + +/** + +*/ +struct VRX_ATMcell +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** ATM cell (53 bytes) */ + DSL_uint8_t ATMcell[53]; + /** Reserved */ + DSL_uint8_t Res0[3]; +#else + /** ATM cell (53 bytes) */ + DSL_uint8_t ATMcell[53]; + /** Reserved */ + DSL_uint8_t Res0[3]; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_CONST_H_*/ diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_dmt_scope.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_dmt_scope.h new file mode 100644 index 0000000000000000000000000000000000000000..c8822230a17c4038542781972abe465f49472ee9 --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_dmt_scope.h @@ -0,0 +1,571 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_DMT_SCOPE_H_ +#define _DRV_DSL_CPE_VRX_MSG_DMT_SCOPE_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _DMT_SCOPE_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Message Specific Constants Definition section ----- */ +#define CMD_TEST_AFE_LoopControl_NO_LOOP 0x0 +#define CMD_TEST_AFE_LoopControl_ALOOP 0x1 +#define CMD_TEST_TxControlSet_SEND_QUIET 0 +#define CMD_TEST_TxControlSet_SEND_REVERB 1 +#define CMD_TEST_TxControlSet_SEND_SEGUE 2 +#define CMD_TEST_TxControlSet_SEND_MEDLEY 3 +#define CMD_TEST_RxControlSet_MEASURE_PSD 14 +#define CMD_TEST_RxControlSet_FDQ_TRAINING 16 +#define CMD_TEST_RxControlSet_MEASURE_SNR 17 +#define CMD_TEST_RxControlSet_PGA_TRAINING 19 +#define CMD_TEST_RxPSD_MeasureModeSet_AVERAGE 0x0 +#define CMD_TEST_RxPSD_MeasureModeSet_PEAKHOLD 0x1 +#define CMD_TEST_RxPSD_MeasureModeSet_BOTTOMHOLD 0x2 +#define CMD_TEST_RxGainControl_DEFGAIN 0x0 +#define CMD_TEST_RxGainControl_MAXGAIN 0x1 +/* ----- Message Specific Constants Definition section (End) ----- */ + +/** Message ID for CMD_TEST_AFE_LoopControl */ +#define CMD_TEST_AFE_LOOPCONTROL 0x0156 + +/** + This message can be used to enable or disable the (analog) loop within the + Analog Front-End (AFE) to loop back data from the transmit to the receive + part. +*/ +typedef struct CMD_TEST_AFE_LoopControl CMD_TEST_AFE_LoopControl_t; + +/** Message ID for ACK_TEST_AFE_LoopControl */ +#define ACK_TEST_AFE_LOOPCONTROL 0x0156 + +/** + This message acknowledges the message CMD_TEST_AFE_LoopControl.For TEST state + only! +*/ +typedef struct ACK_TEST_AFE_LoopControl ACK_TEST_AFE_LoopControl_t; + +/** Message ID for CMD_TEST_TxControlSet */ +#define CMD_TEST_TXCONTROLSET 0x0844 + +/** + The message controls the transmit signal in TEST state. Each setting is valid + until either another value is set with this message that requires the + previous setting to be overwritten or until TEST state is left. +*/ +typedef struct CMD_TEST_TxControlSet CMD_TEST_TxControlSet_t; + +/** Message ID for ACK_TEST_TxControlSet */ +#define ACK_TEST_TXCONTROLSET 0x0844 + +/** + Acknowledgement for message CMD_TEST_TxControlSet. +*/ +typedef struct ACK_TEST_TxControlSet ACK_TEST_TxControlSet_t; + +/** Message ID for CMD_TEST_CarrierMaskingTxSet */ +#define CMD_TEST_CARRIERMASKINGTXSET 0x0256 + +/** + Masks out every 100th subcarrier starting from an arbitrary index number + 1...99.The carrier-mask is applied to signals in the frequency domain ("Send + REVERB" and "Send MEDLEY"). The signal must be activated before! +*/ +typedef struct CMD_TEST_CarrierMaskingTxSet CMD_TEST_CarrierMaskingTxSet_t; + +/** Message ID for ACK_TEST_CarrierMaskingTxSet */ +#define ACK_TEST_CARRIERMASKINGTXSET 0x0256 + +/** + Acknowledgement for message CMD_TEST_CarrierMaskingTxSet. +*/ +typedef struct ACK_TEST_CarrierMaskingTxSet ACK_TEST_CarrierMaskingTxSet_t; + +/** Message ID for CMD_TEST_RxControlSet */ +#define CMD_TEST_RXCONTROLSET 0x0944 + +/** + The message triggers measurements of the receive signal. +*/ +typedef struct CMD_TEST_RxControlSet CMD_TEST_RxControlSet_t; + +/** Message ID for ACK_TEST_RxControlSet */ +#define ACK_TEST_RXCONTROLSET 0x0944 + +/** + Acknowledgement for message CMD_TEST_RxControlSet. +*/ +typedef struct ACK_TEST_RxControlSet ACK_TEST_RxControlSet_t; + +/** Message ID for CMD_TEST_RxPSD_TableEntriesGet */ +#define CMD_TEST_RXPSD_TABLEENTRIESGET 0x5403 + +/** + The message requests information about the receive PSD per subcarrier + available at the near-end side, which means for downstream direction at the + CPE. It is the hosts responsibility to select the tone indices accordingly. +*/ +typedef struct CMD_TEST_RxPSD_TableEntriesGet CMD_TEST_RxPSD_TableEntriesGet_t; + +/** Message ID for ACK_TEST_RxPSD_TableEntriesGet */ +#define ACK_TEST_RXPSD_TABLEENTRIESGET 0x5403 + +/** + Returns information about the receive PSD per subcarrier available at the + near-end side, which means for downstream direction at the CPE. +*/ +typedef struct ACK_TEST_RxPSD_TableEntriesGet ACK_TEST_RxPSD_TableEntriesGet_t; + +/** Message ID for CMD_TEST_RxPSD_Calibrate */ +#define CMD_TEST_RXPSD_CALIBRATE 0x0356 + +/** + Sets the board specific calibration factor necessary to calculate the + absolute PSD value per subcarrier.Attention: The command needs to be applied + only once after power-up for a calibration value determined according to the + sequence described below ("Getting the calibration value:"). Applying the + command a second time requires another determination of the calibration value + too, because the shift is always relative to the current values. +*/ +typedef struct CMD_TEST_RxPSD_Calibrate CMD_TEST_RxPSD_Calibrate_t; + +/** Message ID for ACK_TEST_RxPSD_Calibrate */ +#define ACK_TEST_RXPSD_CALIBRATE 0x0356 + +/** + Acknowledgement to CMD_TEST_RxPSD_Calibrate. +*/ +typedef struct ACK_TEST_RxPSD_Calibrate ACK_TEST_RxPSD_Calibrate_t; + +/** Message ID for CMD_TEST_RxPSD_MeasureModeSet */ +#define CMD_TEST_RXPSD_MEASUREMODESET 0x0456 + +/** + Configures options for the measurement of the PSD value per subcarrier. +*/ +typedef struct CMD_TEST_RxPSD_MeasureModeSet CMD_TEST_RxPSD_MeasureModeSet_t; + +/** Message ID for ACK_TEST_RxPSD_MeasureModeSet */ +#define ACK_TEST_RXPSD_MEASUREMODESET 0x0456 + +/** + Acknowledgement to CMD_TEST_RxPSD_MeasureModeSet. +*/ +typedef struct ACK_TEST_RxPSD_MeasureModeSet ACK_TEST_RxPSD_MeasureModeSet_t; + +/** Message ID for CMD_TEST_RxGainControl */ +#define CMD_TEST_RXGAINCONTROL 0x0556 + +/** + Sets the gains in the receive path (AGC, ACE, PREFI). +*/ +typedef struct CMD_TEST_RxGainControl CMD_TEST_RxGainControl_t; + +/** Message ID for ACK_TEST_RxGainControl */ +#define ACK_TEST_RXGAINCONTROL 0x0556 + +/** + Acknowledgement to CMD_TEST_RxGainControl. +*/ +typedef struct ACK_TEST_RxGainControl ACK_TEST_RxGainControl_t; + +/** + This message can be used to enable or disable the (analog) loop within the + Analog Front-End (AFE) to loop back data from the transmit to the receive + part. +*/ +struct CMD_TEST_AFE_LoopControl +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** AFE Loop Control */ + DSL_uint32_t loopControl; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** AFE Loop Control */ + DSL_uint32_t loopControl; +#endif +} __PACKED__ ; + + +/** + This message acknowledges the message CMD_TEST_AFE_LoopControl.For TEST state + only! +*/ +struct ACK_TEST_AFE_LoopControl +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message controls the transmit signal in TEST state. Each setting is valid + until either another value is set with this message that requires the + previous setting to be overwritten or until TEST state is left. +*/ +struct CMD_TEST_TxControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TEST State's Transmit Signal Control */ + DSL_uint16_t TxControl; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TEST State's Transmit Signal Control */ + DSL_uint16_t TxControl; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_TEST_TxControlSet. +*/ +struct ACK_TEST_TxControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Masks out every 100th subcarrier starting from an arbitrary index number + 1...99.The carrier-mask is applied to signals in the frequency domain ("Send + REVERB" and "Send MEDLEY"). The signal must be activated before! +*/ +struct CMD_TEST_CarrierMaskingTxSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** First Masked Tone */ + DSL_uint32_t MaskTone0; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** First Masked Tone */ + DSL_uint32_t MaskTone0; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_TEST_CarrierMaskingTxSet. +*/ +struct ACK_TEST_CarrierMaskingTxSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message triggers measurements of the receive signal. +*/ +struct CMD_TEST_RxControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TEST State's Receive Control */ + DSL_uint16_t RxControl; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TEST State's Receive Control */ + DSL_uint16_t RxControl; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_TEST_RxControlSet. +*/ +struct ACK_TEST_RxControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message requests information about the receive PSD per subcarrier + available at the near-end side, which means for downstream direction at the + CPE. It is the hosts responsibility to select the tone indices accordingly. +*/ +struct CMD_TEST_RxPSD_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the receive PSD per subcarrier available at the + near-end side, which means for downstream direction at the CPE. +*/ +struct ACK_TEST_RxPSD_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Receive PSD */ + DSL_uint16_t PSDps[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Receive PSD */ + DSL_uint16_t PSDps[128]; +#endif +} __PACKED__ ; + + +/** + Sets the board specific calibration factor necessary to calculate the + absolute PSD value per subcarrier.Attention: The command needs to be applied + only once after power-up for a calibration value determined according to the + sequence described below ("Getting the calibration value:"). Applying the + command a second time requires another determination of the calibration value + too, because the shift is always relative to the current values. +*/ +struct CMD_TEST_RxPSD_Calibrate +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RxPSD Calibration Value */ + DSL_uint32_t calibration; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RxPSD Calibration Value */ + DSL_uint32_t calibration; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_TEST_RxPSD_Calibrate. +*/ +struct ACK_TEST_RxPSD_Calibrate +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configures options for the measurement of the PSD value per subcarrier. +*/ +struct CMD_TEST_RxPSD_MeasureModeSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RxPSD Measurement Mode */ + DSL_uint32_t MeasureMode; + /** Number of Frames */ + DSL_uint32_t numOfFrames; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RxPSD Measurement Mode */ + DSL_uint32_t MeasureMode; + /** Number of Frames */ + DSL_uint32_t numOfFrames; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_TEST_RxPSD_MeasureModeSet. +*/ +struct ACK_TEST_RxPSD_MeasureModeSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets the gains in the receive path (AGC, ACE, PREFI). +*/ +struct CMD_TEST_RxGainControl +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Rx Gain Level */ + DSL_uint32_t RxGainLevel; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Rx Gain Level */ + DSL_uint32_t RxGainLevel; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_TEST_RxGainControl. +*/ +struct ACK_TEST_RxGainControl +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_DMT_SCOPE_H_*/ diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_ghs_status.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_ghs_status.h new file mode 100644 index 0000000000000000000000000000000000000000..737930b8e8c64b11f37a676b9bb55b0430d01132 --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_ghs_status.h @@ -0,0 +1,5422 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_GHS_STATUS_H_ +#define _DRV_DSL_CPE_VRX_MSG_GHS_STATUS_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _GHS_STATUS_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Message Specific Constants Definition section ----- */ +#define ACK_T1413_RevNo_O_Get_T1413REV1 0x0 +#define ACK_T1413_RevNo_O_Get_T1413REV2 0x1 +#define ACK_T1413_RevNo_R_Get_T1413REV1 0x0 +#define ACK_T1413_RevNo_R_Get_T1413REV2 0x1 +#define CMD_RFI_BandControlGet_FV 33 +#define ACK_RFI_BandControlGet_FV 33 +#define CMD_LineStatusPerBandDS_Get_FV 25 +#define ACK_LineStatusPerBandDS_Get_FV 25 +#define CMD_LineStatusPerBandUS_Get_FV 25 +#define ACK_LineStatusPerBandUS_Get_FV 25 +#define CMD_PSD_BreakpointsUS_Get_FV 97 +#define ACK_PSD_BreakpointsUS_Get_FV 97 +#define CMD_BearerChsDS_Get_FV 18 +#define ACK_BearerChsDS_Get_FV 18 +#define CMD_BearerChsUS_Get_FV 18 +#define ACK_BearerChsUS_Get_FV 18 +#define CMD_FrameDataExt2DS_Get_FV 42 +#define ACK_FrameDataExt2DS_Get_FV 42 +#define CMD_FrameDataExt2US_Get_FV 42 +#define ACK_FrameDataExt2US_Get_FV 42 +#define ACK_HybridGet_POTS 0x1 +#define ACK_HybridGet_ISDN_B 0x2 +#define ACK_HybridGet_ISDN_BJ 0x3 +#define ACK_HybridGet_UNIVERSAL 0x4 +#define ACK_MFD_ResultsGet_NONLNF 0x0 +#define ACK_MFD_ResultsGet_NLNFTRIGGERED 0x1 +#define ACK_MFD_ResultsGet_NLNFSTARTED 0x2 +#define ACK_MFD_ResultsGet_NLNFDONE 0x3 +#define ACK_MFD_ResultsGet_NORANGE 0x0 +#define ACK_MFD_ResultsGet_SHORTRANGE 0x1 +#define ACK_MFD_ResultsGet_MIDRANGE 0x2 +#define ACK_MFD_ResultsGet_LONGRANGE 0x3 +#define ACK_MFD_ResultsGet_READY 0x1 +#define ACK_MFD_ResultsGet_NOT_READY 0x0 +/* ----- Message Specific Constants Definition section (End) ----- */ + +/** Message ID for CMD_HS_ToneGroupSet */ +#define CMD_HS_TONEGROUPSET 0x2D48 + +/** + Selects one or more groups of tones to be used during the handshake phase. + (See G.994.1 Amendment 2 [8], Table 1/G.994.1). +*/ +typedef struct CMD_HS_ToneGroupSet CMD_HS_ToneGroupSet_t; + +/** Message ID for ACK_HS_ToneGroupSet */ +#define ACK_HS_TONEGROUPSET 0x2D48 + +/** + Acknowledgement to CMD_HS_ToneGroupSet. +*/ +typedef struct ACK_HS_ToneGroupSet ACK_HS_ToneGroupSet_t; + +/** Message ID for CMD_HS_VDSL2ProfileControl */ +#define CMD_HS_VDSL2PROFILECONTROL 0x2C48 + +/** + Configures the profile settings to be used for the handshake phase. (See + G.994.1 Amendment 4 [10], NPAR(3) coding). +*/ +typedef struct CMD_HS_VDSL2ProfileControl CMD_HS_VDSL2ProfileControl_t; + +/** Message ID for ACK_HS_VDSL2ProfileControl */ +#define ACK_HS_VDSL2PROFILECONTROL 0x2C48 + +/** + Acknowledgement to CMD_HS_VDSL2ProfileControl. +*/ +typedef struct ACK_HS_VDSL2ProfileControl ACK_HS_VDSL2ProfileControl_t; + +/** Message ID for CMD_HS_StandardInfoFE_VDSL2Get */ +#define CMD_HS_STANDARDINFOFE_VDSL2GET 0xCC03 + +/** + Requests the VDSL2 far-end Standard Info (See G.994.1 Amendment 4 [10], + NPAR(3) coding). +*/ +typedef struct CMD_HS_StandardInfoFE_VDSL2Get CMD_HS_StandardInfoFE_VDSL2Get_t; + +/** Message ID for ACK_HS_StandardInfoFE_VDSL2Get */ +#define ACK_HS_STANDARDINFOFE_VDSL2GET 0xCC03 + +/** + Delivers the VDSL2 far-end info as requested by + CMD_HS_StandardInfoFE_VDSL2Get (see G.994.1 Amendment 4 [10], NPAR(3) + coding). +*/ +typedef struct ACK_HS_StandardInfoFE_VDSL2Get ACK_HS_StandardInfoFE_VDSL2Get_t; + +/** Message ID for CMD_HS_SelectedProfileVDSL2Get */ +#define CMD_HS_SELECTEDPROFILEVDSL2GET 0xCD03 + +/** + Requests the actual selected VDSL2 Profile (See G.994.1 Amendment 4 [10], + NPAR(3) coding). +*/ +typedef struct CMD_HS_SelectedProfileVDSL2Get CMD_HS_SelectedProfileVDSL2Get_t; + +/** Message ID for ACK_HS_SelectedProfileVDSL2Get */ +#define ACK_HS_SELECTEDPROFILEVDSL2GET 0xCD03 + +/** + Provides the actual selected VDSL2 Profile as requested by + CMD_HS_SelectedProfileVDSL2Get (see G.994.1 Amendment 4 [10], NPAR(3) + coding). +*/ +typedef struct ACK_HS_SelectedProfileVDSL2Get ACK_HS_SelectedProfileVDSL2Get_t; + +/** Message ID for CMD_HS_StandardInfoFE_SPAR1Get */ +#define CMD_HS_STANDARDINFOFE_SPAR1GET 0xCB03 + +/** + Requests the handshake information about the far-end operating mode (See + G.994.1 [6] and Amendments 1-4 [7]-[10], standard information fields- SPAR(1) + coding). +*/ +typedef struct CMD_HS_StandardInfoFE_SPAR1Get CMD_HS_StandardInfoFE_SPAR1Get_t; + +/** Message ID for ACK_HS_StandardInfoFE_SPAR1Get */ +#define ACK_HS_STANDARDINFOFE_SPAR1GET 0xCB03 + +/** + Provides the handshake information about the far-end operating mode (See + G.994.1 [6] and Amendments 1-4 [7]-[10], Standard information field - SPAR(1) + coding). The bit numbering per octet below follows the standard (starting + with "1"). +*/ +typedef struct ACK_HS_StandardInfoFE_SPAR1Get ACK_HS_StandardInfoFE_SPAR1Get_t; + +/** Message ID for CMD_SysVendorID_R_Set */ +#define CMD_SYSVENDORID_R_SET 0x3C43 + +/** + Sets the in System Vendor ID at the xTU-R. (Section 7.4.4 of G.997.1 [11]) +*/ +typedef struct CMD_SysVendorID_R_Set CMD_SysVendorID_R_Set_t; + +/** Message ID for ACK_SysVendorID_R_Set */ +#define ACK_SYSVENDORID_R_SET 0x3C43 + +/** + Acknowledgement to CMD_SysVendorID_R_Set. +*/ +typedef struct ACK_SysVendorID_R_Set ACK_SysVendorID_R_Set_t; + +/** Message ID for CMD_SysVendorVersionNum_R_Set */ +#define CMD_SYSVENDORVERSIONNUM_R_SET 0x3D43 + +/** + Sets the system vendor version number at the xTU-R. (Section 7.4.6 of G.997.1 + [11]) +*/ +typedef struct CMD_SysVendorVersionNum_R_Set CMD_SysVendorVersionNum_R_Set_t; + +/** Message ID for ACK_SysVendorVersionNum_R_Set */ +#define ACK_SYSVENDORVERSIONNUM_R_SET 0x3D43 + +/** + Acknowledgement to CMD_SysVendorVersionNum_R_Set. +*/ +typedef struct ACK_SysVendorVersionNum_R_Set ACK_SysVendorVersionNum_R_Set_t; + +/** Message ID for CMD_SysVendorSerialNum_R_Set */ +#define CMD_SYSVENDORSERIALNUM_R_SET 0x3E43 + +/** + Sets the system vendor serial number at the xTU-R. (Section 7.4.8 of G.997.1 + [11]) +*/ +typedef struct CMD_SysVendorSerialNum_R_Set CMD_SysVendorSerialNum_R_Set_t; + +/** Message ID for ACK_SysVendorSerialNum_R_Set */ +#define ACK_SYSVENDORSERIALNUM_R_SET 0x3E43 + +/** + Acknowledgement to CMD_SysVendorSerialNum_R_Set. +*/ +typedef struct ACK_SysVendorSerialNum_R_Set ACK_SysVendorSerialNum_R_Set_t; + +/** Message ID for CMD_AuxInventoryInfo_R_Set */ +#define CMD_AUXINVENTORYINFO_R_SET 0x4343 + +/** + Sets auxiliary inventory information at the VTU-R (Section 11.2.3.2.4 of + G993.2 [5]). +*/ +typedef struct CMD_AuxInventoryInfo_R_Set CMD_AuxInventoryInfo_R_Set_t; + +/** Message ID for ACK_AuxInventoryInfo_R_Set */ +#define ACK_AUXINVENTORYINFO_R_SET 0x4343 + +/** + Acknowledgement to CMD_AuxInventoryInfo_R_Set. +*/ +typedef struct ACK_AuxInventoryInfo_R_Set ACK_AuxInventoryInfo_R_Set_t; + +/** Message ID for CMD_VendorID_O_Get */ +#define CMD_VENDORID_O_GET 0x4003 + +/** + Requests the xTU-C Vendor ID. (Section 7.4.1 of G.997.1 [11]) +*/ +typedef struct CMD_VendorID_O_Get CMD_VendorID_O_Get_t; + +/** Message ID for ACK_VendorID_O_Get */ +#define ACK_VENDORID_O_GET 0x4003 + +/** + Provides the xTU-C Vendor ID as requested by CMD_VendorID_O_Get. +*/ +typedef struct ACK_VendorID_O_Get ACK_VendorID_O_Get_t; + +/** Message ID for CMD_VendorID_R_Get */ +#define CMD_VENDORID_R_GET 0x4103 + +/** + Requests the xTU-R Vendor ID. (Section 7.4.2 of G.997.1 [11]) +*/ +typedef struct CMD_VendorID_R_Get CMD_VendorID_R_Get_t; + +/** Message ID for ACK_VendorID_R_Get */ +#define ACK_VENDORID_R_GET 0x4103 + +/** + Provides the xTU-R Vendor ID as requested by CMD_VendorID_R_Get. +*/ +typedef struct ACK_VendorID_R_Get ACK_VendorID_R_Get_t; + +/** Message ID for CMD_SysVendorID_O_Get */ +#define CMD_SYSVENDORID_O_GET 0x3803 + +/** + Requests the xTU-C System Vendor ID. (Section 7.4.3 of G.997.1 [11]) +*/ +typedef struct CMD_SysVendorID_O_Get CMD_SysVendorID_O_Get_t; + +/** Message ID for ACK_SysVendorID_O_Get */ +#define ACK_SYSVENDORID_O_GET 0x3803 + +/** + Delivers the xTU-C System Vendor ID as requested by CMD_SysVendorID_O_Get. +*/ +typedef struct ACK_SysVendorID_O_Get ACK_SysVendorID_O_Get_t; + +/** Message ID for CMD_SysVendorID_R_Get */ +#define CMD_SYSVENDORID_R_GET 0x3C03 + +/** + Requests the xTU-R System Vendor ID. (Section 7.4.4 of G.997.1 [11]) +*/ +typedef struct CMD_SysVendorID_R_Get CMD_SysVendorID_R_Get_t; + +/** Message ID for ACK_SysVendorID_R_Get */ +#define ACK_SYSVENDORID_R_GET 0x3C03 + +/** + Delivers the xTU-R System Vendor ID as requested by CMD_SysVendorID_R_Get. +*/ +typedef struct ACK_SysVendorID_R_Get ACK_SysVendorID_R_Get_t; + +/** Message ID for CMD_SysVendorVersionNumO_Get */ +#define CMD_SYSVENDORVERSIONNUMO_GET 0x3A03 + +/** + Requests the xTU-C system vendor version number. (Section 7.4.5 of G.997.1 + [11]) +*/ +typedef struct CMD_SysVendorVersionNumO_Get CMD_SysVendorVersionNumO_Get_t; + +/** Message ID for ACK_SysVendorVersionNum_O_Get */ +#define ACK_SYSVENDORVERSIONNUM_O_GET 0x3A03 + +/** + Delivers the xTU-C system vendor version number as requested by + CMD_SysVendorVersionNumO_Get. +*/ +typedef struct ACK_SysVendorVersionNum_O_Get ACK_SysVendorVersionNum_O_Get_t; + +/** Message ID for CMD_SysVendorVersionNum_R_Get */ +#define CMD_SYSVENDORVERSIONNUM_R_GET 0x3D03 + +/** + Requests the xTU-R system vendor version number. (Section 7.4.6 of G.997.1 + [11]) +*/ +typedef struct CMD_SysVendorVersionNum_R_Get CMD_SysVendorVersionNum_R_Get_t; + +/** Message ID for ACK_SysVendorVersionNum_R_Get */ +#define ACK_SYSVENDORVERSIONNUM_R_GET 0x3D03 + +/** + Delivers the xTU-R system vendor version number as requested by + CMD_SysVendorVersionNum_R_Get. +*/ +typedef struct ACK_SysVendorVersionNum_R_Get ACK_SysVendorVersionNum_R_Get_t; + +/** Message ID for CMD_SysVendorSerialNum_O_Get */ +#define CMD_SYSVENDORSERIALNUM_O_GET 0x3903 + +/** + Requests the xTU-C system vendor serial number. (Section 7.4.7 of G.997.1 + [11]) +*/ +typedef struct CMD_SysVendorSerialNum_O_Get CMD_SysVendorSerialNum_O_Get_t; + +/** Message ID for ACK_SysVendorSerialNum_O_Get */ +#define ACK_SYSVENDORSERIALNUM_O_GET 0x3903 + +/** + Delivers the xTU-C system vendor serial number as requested by + CMD_SysVendorSerialNum_O_Get. +*/ +typedef struct ACK_SysVendorSerialNum_O_Get ACK_SysVendorSerialNum_O_Get_t; + +/** Message ID for CMD_SysVendorSerialNum_R_Get */ +#define CMD_SYSVENDORSERIALNUM_R_GET 0x3E03 + +/** + Requests the xTU-R system vendor serial number. (Section 7.4.8 of G.997.1 + [11]) +*/ +typedef struct CMD_SysVendorSerialNum_R_Get CMD_SysVendorSerialNum_R_Get_t; + +/** Message ID for ACK_SysVendorSerialNum_R_Get */ +#define ACK_SYSVENDORSERIALNUM_R_GET 0x3E03 + +/** + Delivers the xTU-R system vendor version number as requested by + CMD_SysVendorSerialNum_R_Get. +*/ +typedef struct ACK_SysVendorSerialNum_R_Get ACK_SysVendorSerialNum_R_Get_t; + +/** Message ID for CMD_AuxInventoryInfo_O_Get */ +#define CMD_AUXINVENTORYINFO_O_GET 0x4203 + +/** + Requests VTU-O auxiliary inventory information (Section 11.2.3.2.4 of G993.2 + [5]). +*/ +typedef struct CMD_AuxInventoryInfo_O_Get CMD_AuxInventoryInfo_O_Get_t; + +/** Message ID for ACK_AuxInventoryInfo_O_Get */ +#define ACK_AUXINVENTORYINFO_O_GET 0x4203 + +/** + Delivers the VTU-O auxiliary inventory information as requested by + CMD_AuxInventoryInfo_O_Get. +*/ +typedef struct ACK_AuxInventoryInfo_O_Get ACK_AuxInventoryInfo_O_Get_t; + +/** Message ID for CMD_AuxInventoryInfo_R_Get */ +#define CMD_AUXINVENTORYINFO_R_GET 0x4303 + +/** + Requests VTU-R auxiliary inventory information (Section 11.2.3.2.4 of G993.2 + [5]). +*/ +typedef struct CMD_AuxInventoryInfo_R_Get CMD_AuxInventoryInfo_R_Get_t; + +/** Message ID for ACK_AuxInventoryInfo_R_Get */ +#define ACK_AUXINVENTORYINFO_R_GET 0x4303 + +/** + Delivers the VTU-R auxiliary inventory information as requested by + CMD_AuxInventoryInfo_R_Get. +*/ +typedef struct ACK_AuxInventoryInfo_R_Get ACK_AuxInventoryInfo_R_Get_t; + +/** Message ID for CMD_T1413_VendorID_O_Get */ +#define CMD_T1413_VENDORID_O_GET 0x7C03 + +/** + Requests the ATU-C's T1.413 Vendor identification. (Section 9.6.4.2 of ANSI + T1.413 [16]) +*/ +typedef struct CMD_T1413_VendorID_O_Get CMD_T1413_VendorID_O_Get_t; + +/** Message ID for ACK_T1413_VendorID_O_Get */ +#define ACK_T1413_VENDORID_O_GET 0x7C03 + +/** + Delivers the ATU-C's T1.413 vendor identification number. +*/ +typedef struct ACK_T1413_VendorID_O_Get ACK_T1413_VendorID_O_Get_t; + +/** Message ID for CMD_T1413_VendorID_R_Get */ +#define CMD_T1413_VENDORID_R_GET 0x7D03 + +/** + Requests the ATU-R's T1.413 Vendor identification. (Section 9.6.4.2 of ANSI + T1.413 [16]) +*/ +typedef struct CMD_T1413_VendorID_R_Get CMD_T1413_VendorID_R_Get_t; + +/** Message ID for ACK_T1413_VendorID_R_Get */ +#define ACK_T1413_VENDORID_R_GET 0x7D03 + +/** + Reports the ATU-R's T1.413 vendor identification number. +*/ +typedef struct ACK_T1413_VendorID_R_Get ACK_T1413_VendorID_R_Get_t; + +/** Message ID for CMD_T1413_RevNo_O_Get */ +#define CMD_T1413_REVNO_O_GET 0x7E03 + +/** + Requests the xTU-C's T1.413 revision number. (Section 9.6.4.3 of ANSI T1.413 + [16]) +*/ +typedef struct CMD_T1413_RevNo_O_Get CMD_T1413_RevNo_O_Get_t; + +/** Message ID for ACK_T1413_RevNo_O_Get */ +#define ACK_T1413_REVNO_O_GET 0x7E03 + +/** + Delivers the xTU-C's T1.413 revision number. +*/ +typedef struct ACK_T1413_RevNo_O_Get ACK_T1413_RevNo_O_Get_t; + +/** Message ID for CMD_T1413_RevNo_R_Get */ +#define CMD_T1413_REVNO_R_GET 0x7F03 + +/** + Requests the xTU-R's T1.413 revision number. (Section 9.7.6.2 of ANSI T1.413 + [16]) +*/ +typedef struct CMD_T1413_RevNo_R_Get CMD_T1413_RevNo_R_Get_t; + +/** Message ID for ACK_T1413_RevNo_R_Get */ +#define ACK_T1413_REVNO_R_GET 0x7F03 + +/** + Delivers the xTU-R's T1.413 revision number. +*/ +typedef struct ACK_T1413_RevNo_R_Get ACK_T1413_RevNo_R_Get_t; + +/** Message ID for CMD_T1413_VendorRevNo_O_Get */ +#define CMD_T1413_VENDORREVNO_O_GET 0x8003 + +/** + Requests the xTU-C's T1.413 vendor revision number. (Section 9.6.4.4 of ANSI + T1.413 [16]) +*/ +typedef struct CMD_T1413_VendorRevNo_O_Get CMD_T1413_VendorRevNo_O_Get_t; + +/** Message ID for ACK_T1413_VendorRevNo_O_Get */ +#define ACK_T1413_VENDORREVNO_O_GET 0x8003 + +/** + Delivers the xTU-C's T1.413 vendor revision number. +*/ +typedef struct ACK_T1413_VendorRevNo_O_Get ACK_T1413_VendorRevNo_O_Get_t; + +/** Message ID for CMD_T1413_VendorRevNo_R_Get */ +#define CMD_T1413_VENDORREVNO_R_GET 0x8103 + +/** + Requests the xTU-R's T1.413 vendor revision number. (Section 9.7.6.3 of ANSI + T1.413 [16]) +*/ +typedef struct CMD_T1413_VendorRevNo_R_Get CMD_T1413_VendorRevNo_R_Get_t; + +/** Message ID for ACK_T1413_VendorRevNo_R_Get */ +#define ACK_T1413_VENDORREVNO_R_GET 0x8103 + +/** + Delivers the xTU-R's T1.413 vendor revision number. +*/ +typedef struct ACK_T1413_VendorRevNo_R_Get ACK_T1413_VendorRevNo_R_Get_t; + +/** Message ID for CMD_XTSE_StatusGet */ +#define CMD_XTSE_STATUSGET 0x0102 + +/** + Requests the transmission system in use on the line (DSL flavour). (Section + 7.5.1.1. of G.997.1 [11]) See note at ACK_XTSE_StatusGet about the expected + behaviour. +*/ +typedef struct CMD_XTSE_StatusGet CMD_XTSE_StatusGet_t; + +/** Message ID for ACK_XTSE_StatusGet */ +#define ACK_XTSE_STATUSGET 0x0102 + +/** + Reports the transmission system mode in use as requested by + CMD_XTSE_StatusGet.The information is set by the FW after mode select (MS) + during the handshake phase or during T1.413 state. Before mode selection the + value "0" is reported (=none), after selection of a common mode exactly this + single mode must be indicated. If there is a common mode but it requires + another FW to be loaded (e.g. ADSL instead of VDSL), this does not happen + ("0" is reported ), then the FW goes to FAIL state and indicates a specific + suberror code (S_XDSL_MODE). If there is no common mode, "0" is to be + reported (here modem enters FAIL state). +*/ +typedef struct ACK_XTSE_StatusGet ACK_XTSE_StatusGet_t; + +/** Message ID for CMD_BandControl_DS_Get */ +#define CMD_BANDCONTROL_DS_GET 0xC803 + +/** + Reads the used downstream band configuration. +*/ +typedef struct CMD_BandControl_DS_Get CMD_BandControl_DS_Get_t; + +/** Message ID for ACK_BandControl_DS_Get */ +#define ACK_BANDCONTROL_DS_GET 0xC803 + +/** + Acknowledgement for message CMD_BandControl_DS_Get. +*/ +typedef struct ACK_BandControl_DS_Get ACK_BandControl_DS_Get_t; + +/** Message ID for CMD_BandControl_US_Get */ +#define CMD_BANDCONTROL_US_GET 0xC903 + +/** + Reads the used upstream band configuration. +*/ +typedef struct CMD_BandControl_US_Get CMD_BandControl_US_Get_t; + +/** Message ID for ACK_BandControl_US_Get */ +#define ACK_BANDCONTROL_US_GET 0xC903 + +/** + Acknowledgement for message CMD_BandControl_US_Get. +*/ +typedef struct ACK_BandControl_US_Get ACK_BandControl_US_Get_t; + +/** Message ID for CMD_RFI_BandControlGet */ +#define CMD_RFI_BANDCONTROLGET 0xCA03 + +/** + Reads the RFI band configuration. +*/ +typedef struct CMD_RFI_BandControlGet CMD_RFI_BandControlGet_t; + +/** Message ID for ACK_RFI_BandControlGet */ +#define ACK_RFI_BANDCONTROLGET 0xCA03 + +/** + Acknowledgement for message CMD_RFI_BandControlGet. +*/ +typedef struct ACK_RFI_BandControlGet ACK_RFI_BandControlGet_t; + +/** Message ID for CMD_LineStatusDS_Get */ +#define CMD_LINESTATUSDS_GET 0x4403 + +/** + This message requests data about the line status (like noise margin) for + downstream direction. +*/ +typedef struct CMD_LineStatusDS_Get CMD_LineStatusDS_Get_t; + +/** Message ID for ACK_LineStatusDS_Get */ +#define ACK_LINESTATUSDS_GET 0x4403 + +/** + The message delivers the line status data for downstream direction requested + by CMD_LineStatusDS_Get. +*/ +typedef struct ACK_LineStatusDS_Get ACK_LineStatusDS_Get_t; + +/** Message ID for CMD_LineStatusUS_Get */ +#define CMD_LINESTATUSUS_GET 0x4503 + +/** + This message requests data about the upstream line status (like noise + margin). +*/ +typedef struct CMD_LineStatusUS_Get CMD_LineStatusUS_Get_t; + +/** Message ID for ACK_LineStatusUS_Get */ +#define ACK_LINESTATUSUS_GET 0x4503 + +/** + The message delivers the line status data for upstream direction requested by + CMD_LineStatusUS_Get. +*/ +typedef struct ACK_LineStatusUS_Get ACK_LineStatusUS_Get_t; + +/** Message ID for CMD_LineStatusPerBandDS_Get */ +#define CMD_LINESTATUSPERBANDDS_GET 0xD203 + +/** + This message requests data about the line status (noise margin, line + attenuation and signal attenuation) for downstream direction in a "per band" + granularity. +*/ +typedef struct CMD_LineStatusPerBandDS_Get CMD_LineStatusPerBandDS_Get_t; + +/** Message ID for ACK_LineStatusPerBandDS_Get */ +#define ACK_LINESTATUSPERBANDDS_GET 0xD203 + +/** + The message delivers the line status data (line attenuation, signal + attenuation and noise margin) for downstream direction in a "per band" + granularity as requested by CMD_LineStatusPerBandDS_Get. +*/ +typedef struct ACK_LineStatusPerBandDS_Get ACK_LineStatusPerBandDS_Get_t; + +/** Message ID for CMD_LineStatusPerBandUS_Get */ +#define CMD_LINESTATUSPERBANDUS_GET 0xD303 + +/** + This message requests data about the line status (noise margin, line - and + signal attenuation) for upstream direction in a "per band" granularity. +*/ +typedef struct CMD_LineStatusPerBandUS_Get CMD_LineStatusPerBandUS_Get_t; + +/** Message ID for ACK_LineStatusPerBandUS_Get */ +#define ACK_LINESTATUSPERBANDUS_GET 0xD303 + +/** + The message delivers the line status data (line attenuation, signal + attenuation and noise margin) for upstream direction in a "per band" + granularity as requested by CMD_LineStatusPerBandUS_Get. +*/ +typedef struct ACK_LineStatusPerBandUS_Get ACK_LineStatusPerBandUS_Get_t; + +/** Message ID for CMD_AttndrStatusGet */ +#define CMD_ATTNDRSTATUSGET 0xF003 + +/** + Requests parameters used for the calculation of the downstream attainable net + data rate (ATTNDRds). +*/ +typedef struct CMD_AttndrStatusGet CMD_AttndrStatusGet_t; + +/** Message ID for ACK_AttndrStatusGet */ +#define ACK_ATTNDRSTATUSGET 0xF003 + +/** + Delivers the data requested by CMD_AttndrStatusGet.(Section 7.5.1.41 of + G.997.1 [12]). +*/ +typedef struct ACK_AttndrStatusGet ACK_AttndrStatusGet_t; + +/** Message ID for CMD_PSD_BreakpointsDS_Get */ +#define CMD_PSD_BREAKPOINTSDS_GET 0xD403 + +/** + Requests the breakpoints of the actual PSD for the downstream direction. PSDs + consisting of more than 42 PSD breakpoints must be read with 2 messages due + to the the mailbox size. (The first parameter in the retrieved data structure + contains the "Number of Breakpoints" parameter.) +*/ +typedef struct CMD_PSD_BreakpointsDS_Get CMD_PSD_BreakpointsDS_Get_t; + +/** Message ID for ACK_PSD_BreakpointsDS_Get */ +#define ACK_PSD_BREAKPOINTSDS_GET 0xD403 + +/** + Delivers the breakpoints of the actual PSD for the downstream direction as + requested by CMD_PSD_BreakpointsDS_Get. +*/ +typedef struct ACK_PSD_BreakpointsDS_Get ACK_PSD_BreakpointsDS_Get_t; + +/** Message ID for CMD_PSD_BreakpointsUS_Get */ +#define CMD_PSD_BREAKPOINTSUS_GET 0xD503 + +/** + Requests the breakpoints of the actual PSD for the upstream direction. +*/ +typedef struct CMD_PSD_BreakpointsUS_Get CMD_PSD_BreakpointsUS_Get_t; + +/** Message ID for ACK_PSD_BreakpointsUS_Get */ +#define ACK_PSD_BREAKPOINTSUS_GET 0xD503 + +/** + Delivers the breakpoints of the actual PSD for the upstream direction as + requested by CMD_PSD_BreakpointsUS_Get. +*/ +typedef struct ACK_PSD_BreakpointsUS_Get ACK_PSD_BreakpointsUS_Get_t; + +/** Message ID for CMD_TssiDS_VDSL2_Get */ +#define CMD_TSSIDS_VDSL2_GET 0x2803 + +/** + The Downstream TSSI Breakpoints are specified by the transmitter (VTU-O) and + communicated to the receiver (VTU-R) via the O-PRM message. The TSSI + Breakpoints are used to shape the O-P-TEQ signal. This message provides read + only access to the DS TSSI Breakpoints. The DS TSSI Breakpoints are not + configurable via messages. +*/ +typedef struct CMD_TssiDS_VDSL2_Get CMD_TssiDS_VDSL2_Get_t; + +/** Message ID for ACK_TssiDS_VDSL2_Get */ +#define ACK_TSSIDS_VDSL2_GET 0x2803 + +/** + This is the acknowledgement of CMD_TssiDS_VDSL2_Get. +*/ +typedef struct ACK_TssiDS_VDSL2_Get ACK_TssiDS_VDSL2_Get_t; + +/** Message ID for CMD_TssiUS_VDSL2_Get */ +#define CMD_TSSIUS_VDSL2_GET 0x2903 + +/** + The Upstream TSSI Breakpoints are specified by the transmitter (VTU-R) and + communicated to the receiver (VTU-O) via the R-PRM message. The TSSI + Breakpoints are used to shape the R-P-TEQ signal. The TSSI Breakpoints can + be read only but are not configurable via messages. +*/ +typedef struct CMD_TssiUS_VDSL2_Get CMD_TssiUS_VDSL2_Get_t; + +/** Message ID for ACK_TssiUS_VDSL2_Get */ +#define ACK_TSSIUS_VDSL2_GET 0x2903 + +/** + This is the acknowledgement of CMD_TssiUS_VDSL2_Get. +*/ +typedef struct ACK_TssiUS_VDSL2_Get ACK_TssiUS_VDSL2_Get_t; + +/** Message ID for CMD_ADSL_PCB_Get */ +#define CMD_ADSL_PCB_GET 0x000E + +/** + Reads the actual power cutback value. +*/ +typedef struct CMD_ADSL_PCB_Get CMD_ADSL_PCB_Get_t; + +/** Message ID for ACK_ADSL_PCB_Get */ +#define ACK_ADSL_PCB_GET 0x000E + +/** + Provides the actual power cutback values requested with CMD_ADSL_PCB_Get. +*/ +typedef struct ACK_ADSL_PCB_Get ACK_ADSL_PCB_Get_t; + +/** Message ID for CMD_ActualPSD_Get */ +#define CMD_ACTUALPSD_GET 0xD803 + +/** + Requests the PSD and power parameter values actually used by the firmware. +*/ +typedef struct CMD_ActualPSD_Get CMD_ActualPSD_Get_t; + +/** Message ID for ACK_ActualPSD_Get */ +#define ACK_ACTUALPSD_GET 0xD803 + +/** + Provides actually used PSD and power parameters as requested by + CMD_ActualPSD_Get. +*/ +typedef struct ACK_ActualPSD_Get ACK_ActualPSD_Get_t; + +/** Message ID for CMD_ADSL_MJ_UsMaskGet */ +#define CMD_ADSL_MJ_USMASKGET 0x1802 + +/** + Requests the actually used ADSL upstream mask for ADSL2/2+ Annexes M and J. + To be applied only in combination with G.992.3/5 Annex M support in + ACK_XTSE_StatusGet. +*/ +typedef struct CMD_ADSL_MJ_UsMaskGet CMD_ADSL_MJ_UsMaskGet_t; + +/** Message ID for ACK_ADSL_MJ_UsMaskGet */ +#define ACK_ADSL_MJ_USMASKGET 0x1802 + +/** + Provides the actually used ADSL upstream mask for ADSL2/2+ Annexes M and J. +*/ +typedef struct ACK_ADSL_MJ_UsMaskGet ACK_ADSL_MJ_UsMaskGet_t; + +/** Message ID for CMD_PSDMASK_DS_Get */ +#define CMD_PSDMASK_DS_GET 0xF203 + +/** + Reports the downstream transmit PSD mask (PSDMASKds) which is received from + CO with O-SIGNATURE message. +*/ +typedef struct CMD_PSDMASK_DS_Get CMD_PSDMASK_DS_Get_t; + +/** Message ID for ACK_PSDMASK_DS_Get */ +#define ACK_PSDMASK_DS_GET 0xF203 + +/** + Reports the downstream transmit PSD mask (PSDMASKds) for both passbands and + stopbands, which is received from CO with O-SIGNATURE message. (Format is now + as absolute value without the offset.) +*/ +typedef struct ACK_PSDMASK_DS_Get ACK_PSDMASK_DS_Get_t; + +/** Message ID for CMD_RxPSD_TableEntriesGet */ +#define CMD_RXPSD_TABLEENTRIESGET 0x5403 + +/** + The message requests information about the receive PSD per subcarrier + available at the near-end side, which means for downstream direction at the + CPE. It is the hosts responsibility to select the tone indices accordingly.In + Showtime the message reports the receive PSD measured in Channel Discovery + phase after the final hybrid training (no Showtime update). +*/ +typedef struct CMD_RxPSD_TableEntriesGet CMD_RxPSD_TableEntriesGet_t; + +/** Message ID for ACK_RxPSD_TableEntriesGet */ +#define ACK_RXPSD_TABLEENTRIESGET 0x5403 + +/** + Returns information about the receive PSD per subcarrier available at the + near-end side, which means for downstream direction at the CPE.In Showtime + the message reports the receive PSD measured in Channel Discovery phase after + the final hybrid training (no Showtime update). +*/ +typedef struct ACK_RxPSD_TableEntriesGet ACK_RxPSD_TableEntriesGet_t; + +/** Message ID for CMD_BearerChsDS_Get */ +#define CMD_BEARERCHSDS_GET 0x0106 + +/** + Requests status information for the downstream bearer channels. +*/ +typedef struct CMD_BearerChsDS_Get CMD_BearerChsDS_Get_t; + +/** Message ID for ACK_BearerChsDS_Get */ +#define ACK_BEARERCHSDS_GET 0x0106 + +/** + Delivers status information for the downstream bearer channels. **: The terms + "LP0/Interleaved Path" and "LP1/Fast Path" below refer to the terminology + used in ITU DSL standards [1],[2], [3], [5] which means:- LP0 or LP1 in case + of VDSL2, ADSL2/2+- "Interleaved Path" or "Fast Path" in case of ADSL1/ADSL1 + Lite.Attention: In VRX Device1 the "LP1/Fast Path" parameters are populated + only in ADSL1 and ADSL1 Lilte mode with selected fast path. +*/ +typedef struct ACK_BearerChsDS_Get ACK_BearerChsDS_Get_t; + +/** Message ID for CMD_BearerChsUS_Get */ +#define CMD_BEARERCHSUS_GET 0x0006 + +/** + Requests status information for the upstream bearer channels. +*/ +typedef struct CMD_BearerChsUS_Get CMD_BearerChsUS_Get_t; + +/** Message ID for ACK_BearerChsUS_Get */ +#define ACK_BEARERCHSUS_GET 0x0006 + +/** + Delivers status information for the upstream bearer channels. **: The terms + "LP0/Interleaved Path" and "LP1/Fast Path" below refer to the terminology + used in ITU DSL standards [1],[2], [3], [5] which means:- LP0 or LP1 in case + of VDSL2, ADSL2/2+- "Interleaved Path" or "Fast Path" in case of ADSL1/ADSL1 + Lite.Attention: In VRX Device1 the "LP1/Fast Path" parameters are populated + only in ADSL1 and ADSL1 Lite mode with selected fast path. +*/ +typedef struct ACK_BearerChsUS_Get ACK_BearerChsUS_Get_t; + +/** Message ID for CMD_FrameDataExt2DS_Get */ +#define CMD_FRAMEDATAEXT2DS_GET 0x2203 + +/** + Requests an extended set of VDSL2 framing parameters for the downstream + direction. +*/ +typedef struct CMD_FrameDataExt2DS_Get CMD_FrameDataExt2DS_Get_t; + +/** Message ID for ACK_FrameDataExt2DS_Get */ +#define ACK_FRAMEDATAEXT2DS_GET 0x2203 + +/** + Delivers an extended set of VDSL2 framing parameters for the downstream + direction requested by CMD_FrameDataExt2DS_Get. (Sections 7.5.2.6 of G.997.1 + and 9.5 & 9.6 of G.993.2 [5]) +*/ +typedef struct ACK_FrameDataExt2DS_Get ACK_FrameDataExt2DS_Get_t; + +/** Message ID for CMD_FrameDataExt2US_Get */ +#define CMD_FRAMEDATAEXT2US_GET 0x2303 + +/** + Requests an extended set of VDSL2 framing parameters for the upstream + direction. +*/ +typedef struct CMD_FrameDataExt2US_Get CMD_FrameDataExt2US_Get_t; + +/** Message ID for ACK_FrameDataExt2US_Get */ +#define ACK_FRAMEDATAEXT2US_GET 0x2303 + +/** + Delivers an extended set of VDSL2 framing parameters for the upstream + direction requested by CMD_FrameDataExt2US_Get. (Sections 7.5.2.6 of G.997.1 + and 9.5 & 9.6 of G.993.2 [5]) +*/ +typedef struct ACK_FrameDataExt2US_Get ACK_FrameDataExt2US_Get_t; + +/** Message ID for CMD_ADSL_FrameDataDS_LP0Get */ +#define CMD_ADSL_FRAMEDATADS_LP0GET 0x010E + +/** + Requests ADSL framing parameters for the downstream direction, latency path + 0/Interleaved Path. +*/ +typedef struct CMD_ADSL_FrameDataDS_LP0Get CMD_ADSL_FrameDataDS_LP0Get_t; + +/** Message ID for ACK_ADSL_FrameDataDS_LP0Get */ +#define ACK_ADSL_FRAMEDATADS_LP0GET 0x010E + +/** + Delivers the ADSL framing parameters for the downstream direction, + LP0/Interleaved path, as requested by CMD_ADSL_FrameDataDS_LP0Get. (Sections + 7.5 & 7.6 of G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +typedef struct ACK_ADSL_FrameDataDS_LP0Get ACK_ADSL_FrameDataDS_LP0Get_t; + +/** Message ID for CMD_ADSL_FrameDataUS_LP0Get */ +#define CMD_ADSL_FRAMEDATAUS_LP0GET 0x020E + +/** + Requests ADSL framing parameters for the upstream direction, latency path + 0/Interleaved path. +*/ +typedef struct CMD_ADSL_FrameDataUS_LP0Get CMD_ADSL_FrameDataUS_LP0Get_t; + +/** Message ID for ACK_ADSL_FrameDataUS_LP0Get */ +#define ACK_ADSL_FRAMEDATAUS_LP0GET 0x020E + +/** + Delivers the ADSL framing parameters for the upstream direction, latency path + 0/Interleaved path, as requested by CMD_ADSL_FrameDataUS_LP0Get. (Sections + 7.5 & 7.6 of G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +typedef struct ACK_ADSL_FrameDataUS_LP0Get ACK_ADSL_FrameDataUS_LP0Get_t; + +/** Message ID for CMD_ADSL_FrameDataDS_LP1Get */ +#define CMD_ADSL_FRAMEDATADS_LP1GET 0x030E + +/** + Requests ADSL framing parameters for the downstream direction, latency path 1 + (LP1)/ Fast path.In VRX Rev. 1.x to be used for ADSL1, "fast path" only. +*/ +typedef struct CMD_ADSL_FrameDataDS_LP1Get CMD_ADSL_FrameDataDS_LP1Get_t; + +/** Message ID for ACK_ADSL_FrameDataDS_LP1Get */ +#define ACK_ADSL_FRAMEDATADS_LP1GET 0x030E + +/** + Delivers the ADSL framing parameters for the downstream direction, LP1/Fast + path, as requested by CMD_ADSL_FrameDataDS_LP1Get. (Sections 7.5 & 7.6 of + G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +typedef struct ACK_ADSL_FrameDataDS_LP1Get ACK_ADSL_FrameDataDS_LP1Get_t; + +/** Message ID for CMD_ADSL_FrameDataUS_LP1Get */ +#define CMD_ADSL_FRAMEDATAUS_LP1GET 0x040E + +/** + Requests ADSL framing parameters for the upstream direction, latency path 1 + (LP1)/Fast path.In VRX Rev. 1.x to be used for ADSL1, "fast path" only. +*/ +typedef struct CMD_ADSL_FrameDataUS_LP1Get CMD_ADSL_FrameDataUS_LP1Get_t; + +/** Message ID for ACK_ADSL_FrameDataUS_LP1Get */ +#define ACK_ADSL_FRAMEDATAUS_LP1GET 0x040E + +/** + Delivers the ADSL framing parameters for the upstream direction, LP1/Fast + path, as requested by CMD_ADSL_FrameDataUS_LP1Get. (Sections 7.5 & 7.6 of + G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +typedef struct ACK_ADSL_FrameDataUS_LP1Get ACK_ADSL_FrameDataUS_LP1Get_t; + +/** Message ID for CMD_HybridGet */ +#define CMD_HYBRIDGET 0x0922 + +/** + Reads the connected hybrid type. +*/ +typedef struct CMD_HybridGet CMD_HybridGet_t; + +/** Message ID for ACK_HybridGet */ +#define ACK_HYBRIDGET 0x0922 + +/** + Contains the connected hybrid type. +*/ +typedef struct ACK_HybridGet ACK_HybridGet_t; + +/** Message ID for CMD_PilotTonesGet */ +#define CMD_PILOTTONESGET 0x0322 + +/** + Requests the pilot tones used in Showtime. +*/ +typedef struct CMD_PilotTonesGet CMD_PilotTonesGet_t; + +/** Message ID for ACK_PilotTonesGet */ +#define ACK_PILOTTONESGET 0x0322 + +/** + Provides the Showtime pilot tones as requested by CMD_PilotTonesGet. +*/ +typedef struct ACK_PilotTonesGet ACK_PilotTonesGet_t; + +/** Message ID for CMD_MFD_ResultsGet */ +#define CMD_MFD_RESULTSGET 0x1022 + +/** + Requests the results of the micro filter detection (MFD) function. Valid + information in Showtime and FAIL will be available only if the microfilter + detection mechanism has been run before. +*/ +typedef struct CMD_MFD_ResultsGet CMD_MFD_ResultsGet_t; + +/** Message ID for ACK_MFD_ResultsGet */ +#define ACK_MFD_RESULTSGET 0x1022 + +/** + Reports the results of the micro filter detection (MFD) function. +*/ +typedef struct ACK_MFD_ResultsGet ACK_MFD_ResultsGet_t; + +/** Message ID for CMD_MFD_LooplengthGet */ +#define CMD_MFD_LOOPLENGTHGET 0x1122 + +/** + Requests the loop length estimates done by the microfilter detection + function.In Showtime the data are always available.The availability of data + is indicated by the flag TrainingLoopLengthReady in ACK_MFD_ResultsGet.In + Showtime the data are always available. +*/ +typedef struct CMD_MFD_LooplengthGet CMD_MFD_LooplengthGet_t; + +/** Message ID for ACK_MFD_LooplengthGet */ +#define ACK_MFD_LOOPLENGTHGET 0x1122 + +/** + Reports the loop length estimates done by the microfilter detection (MFD) + function. +*/ +typedef struct ACK_MFD_LooplengthGet ACK_MFD_LooplengthGet_t; + +/** Message ID for CMD_MFD_HybridInfoGet */ +#define CMD_MFD_HYBRIDINFOGET 0x1222 + +/** + Requests hybrid information used by the microfilter detection function.In + Showtime the data are always available.The availability of data is indicated + by the flag TrainingHybridInfoReady in ACK_MFD_ResultsGet. In Showtime the + data are always available. +*/ +typedef struct CMD_MFD_HybridInfoGet CMD_MFD_HybridInfoGet_t; + +/** Message ID for ACK_MFD_HybridInfoGet */ +#define ACK_MFD_HYBRIDINFOGET 0x1222 + +/** + Reports the hybrid information used by the microfilter detection function. +*/ +typedef struct ACK_MFD_HybridInfoGet ACK_MFD_HybridInfoGet_t; + +/** + Selects one or more groups of tones to be used during the handshake phase. + (See G.994.1 Amendment 2 [8], Table 1/G.994.1). +*/ +struct CMD_HS_ToneGroupSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** Tone Group 8: CAR_SET_V43I */ + DSL_uint16_t Group8 : 1; + /** Tone Group 7: CAR_SET_V43P */ + DSL_uint16_t Group7 : 1; + /** Tone Group 6: CAR_SET_V43 */ + DSL_uint16_t Group6 : 1; + /** Tone Group 5: CAR_SET_J43 */ + DSL_uint16_t Group5 : 1; + /** Tone Group 4: CAR_SET_C43 */ + DSL_uint16_t Group4 : 1; + /** Tone Group 3: CAR_SET_B43C */ + DSL_uint16_t Group3 : 1; + /** Tone Group 2: CAR_SET_B43 */ + DSL_uint16_t Group2 : 1; + /** Tone Group 1: CAR_SET_A43C */ + DSL_uint16_t Group1 : 1; + /** Tone Group 0: CAR_SET_A43 */ + DSL_uint16_t Group0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Tone Group 0: CAR_SET_A43 */ + DSL_uint16_t Group0 : 1; + /** Tone Group 1: CAR_SET_A43C */ + DSL_uint16_t Group1 : 1; + /** Tone Group 2: CAR_SET_B43 */ + DSL_uint16_t Group2 : 1; + /** Tone Group 3: CAR_SET_B43C */ + DSL_uint16_t Group3 : 1; + /** Tone Group 4: CAR_SET_C43 */ + DSL_uint16_t Group4 : 1; + /** Tone Group 5: CAR_SET_J43 */ + DSL_uint16_t Group5 : 1; + /** Tone Group 6: CAR_SET_V43 */ + DSL_uint16_t Group6 : 1; + /** Tone Group 7: CAR_SET_V43P */ + DSL_uint16_t Group7 : 1; + /** Tone Group 8: CAR_SET_V43I */ + DSL_uint16_t Group8 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_HS_ToneGroupSet. +*/ +struct ACK_HS_ToneGroupSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configures the profile settings to be used for the handshake phase. (See + G.994.1 Amendment 4 [10], NPAR(3) coding). +*/ +struct CMD_HS_VDSL2ProfileControl +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** 35b, Profile Support Bit 8 */ + DSL_uint16_t profileSup8 : 1; + /** 30a, Profile Support Bit 7 */ + DSL_uint16_t profileSup7 : 1; + /** 17a, Profile Support Bit 6 */ + DSL_uint16_t profileSup6 : 1; + /** 12b, Profile Support Bit 5 */ + DSL_uint16_t profileSup5 : 1; + /** 12a, Profile Support Bit 4 */ + DSL_uint16_t profileSup4 : 1; + /** 8d, Profile Support Bit 3 */ + DSL_uint16_t profileSup3 : 1; + /** 8c, Profile Support Bit 2 */ + DSL_uint16_t profileSup2 : 1; + /** 8b, Profile Support Bit 1 */ + DSL_uint16_t profileSup1 : 1; + /** 8a, Profile Support Bit 0 */ + DSL_uint16_t profileSup0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** 35b, Profile Preferred Bit 8 */ + DSL_uint16_t profilePref8 : 1; + /** 30a, Profile Preferred Bit 7 */ + DSL_uint16_t profilePref7 : 1; + /** 17a, Profile Preferred Bit 6 */ + DSL_uint16_t profilePref6 : 1; + /** 12b, Profile Preferred Bit 5 */ + DSL_uint16_t profilePref5 : 1; + /** 12a, Profile Preferred Bit 4 */ + DSL_uint16_t profilePref4 : 1; + /** 8d, Profile Preferred Bit 3 */ + DSL_uint16_t profilePref3 : 1; + /** 8c, Profile Preferred Bit 2 */ + DSL_uint16_t profilePref2 : 1; + /** 8b, Profile Preferred Bit 1 */ + DSL_uint16_t profilePref1 : 1; + /** 8a, Profile Preferred Bit 0 */ + DSL_uint16_t profilePref0 : 1; + /** ADLU-56, Annex A US0 PSDs Supported Bit 15 */ + DSL_uint16_t A_US0PsdSup15 : 1; + /** ADLU-52, Annex A US0 PSDs Supported Bit 14 */ + DSL_uint16_t A_US0PsdSup14 : 1; + /** ADLU-48, Annex A US0 PSDs Supported Bit 13 */ + DSL_uint16_t A_US0PsdSup13 : 1; + /** ADLU-44, Annex A US0 PSDs Supported Bit 12 */ + DSL_uint16_t A_US0PsdSup12 : 1; + /** ADLU-40, Annex A US0 PSDs Supported Bit 11 */ + DSL_uint16_t A_US0PsdSup11 : 1; + /** ADLU-36, Annex A US0 PSDs Supported Bit 10 */ + DSL_uint16_t A_US0PsdSup10 : 1; + /** ADLU-32, Annex A US0 PSDs Supported Bit 9 */ + DSL_uint16_t A_US0PsdSup9 : 1; + /** EU-64, Annex A US0 PSDs Supported Bit 8 */ + DSL_uint16_t A_US0PsdSup8 : 1; + /** EU-60, Annex A US0 PSDs Supported Bit 7 */ + DSL_uint16_t A_US0PsdSup7 : 1; + /** EU-56, Annex A US0 PSDs Supported Bit 6 */ + DSL_uint16_t A_US0PsdSup6 : 1; + /** EU-52, Annex A US0 PSDs Supported Bit 5 */ + DSL_uint16_t A_US0PsdSup5 : 1; + /** EU-48, Annex A US0 PSDs Supported Bit 4 */ + DSL_uint16_t A_US0PsdSup4 : 1; + /** EU-44, Annex A US0 PSDs Supported Bit 3 */ + DSL_uint16_t A_US0PsdSup3 : 1; + /** EU-40, Annex A US0 PSDs Supported Bit 2 */ + DSL_uint16_t A_US0PsdSup2 : 1; + /** EU-36, Annex A US0 PSDs Supported Bit 1 */ + DSL_uint16_t A_US0PsdSup1 : 1; + /** EU-32, Annex A US0 PSDs Supported Bit 0 */ + DSL_uint16_t A_US0PsdSup0 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 10; + /** ADLU-128, Annex A US0 PSDs Supported Bit 21 */ + DSL_uint16_t A_US0PsdSup21 : 1; + /** EU-128, Annex A US0 PSDs Supported Bit 20 */ + DSL_uint16_t A_US0PsdSup20 : 1; + /** 17a Profile, Annex A US0 PSDs Supported Bit 19 */ + DSL_uint16_t A_US0PsdSup19 : 1; + /** 12b Profile, Annex A US0 PSDs Supported Bit 18 */ + DSL_uint16_t A_US0PsdSup18 : 1; + /** ADLU-64, Annex A US0 PSDs Supported Bit 17 */ + DSL_uint16_t A_US0PsdSup17 : 1; + /** ADLU-60, Annex A US0 PSDs Supported Bit 16 */ + DSL_uint16_t A_US0PsdSup16 : 1; + /** Reserved */ + DSL_uint16_t Res3[2]; + /** Reserved */ + DSL_uint16_t Res4 : 11; + /** 17a Profile, Annex B US0 PSDs Supported Bit 4 */ + DSL_uint16_t B_US0PsdSup4 : 1; + /** 12b Profile, Annex B US0 PSDs Supported Bit 3 */ + DSL_uint16_t B_US0PsdSup3 : 1; + /** US0 In 120 to 276 kHz, Annex B US0 PSDs Supported Bit 2 */ + DSL_uint16_t B_US0PsdSup2 : 1; + /** US0 In 25 to 276 kHz, Annex B US0 PSDs Supported Bit 1 */ + DSL_uint16_t B_US0PsdSup1 : 1; + /** US0 In 25 to 138 kHz, Annex B US0 PSDs Supported Bit 0 */ + DSL_uint16_t B_US0PsdSup0 : 1; + /** Reserved */ + DSL_uint16_t Res5; + /** Reserved */ + DSL_uint16_t Res6 : 2; + /** 17a Profile, Annex C US0 PSDs Supported Bit 13 */ + DSL_uint16_t C_US0PsdSup13 : 1; + /** 12b Profile, Annex C US0 PSDs Supported Bit 12 */ + DSL_uint16_t C_US0PsdSup12 : 1; + /** Reserved */ + DSL_uint16_t Res7 : 6; + /** US0 In 25 to 276 kHz, Annex C US0 PSDs Supported Bit 5 */ + DSL_uint16_t C_US0PsdSup5 : 1; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 4 */ + DSL_uint16_t C_US0PsdSup4 : 1; + /** Reserved */ + DSL_uint16_t Res8 : 2; + /** US0 In 25 to 276kHz, Annex C US0 PSDs Supported Bit 1 */ + DSL_uint16_t C_US0PsdSup1 : 1; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 0 */ + DSL_uint16_t C_US0PsdSup0 : 1; + /** Reserved */ + DSL_uint16_t Res9; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** 8a, Profile Support Bit 0 */ + DSL_uint16_t profileSup0 : 1; + /** 8b, Profile Support Bit 1 */ + DSL_uint16_t profileSup1 : 1; + /** 8c, Profile Support Bit 2 */ + DSL_uint16_t profileSup2 : 1; + /** 8d, Profile Support Bit 3 */ + DSL_uint16_t profileSup3 : 1; + /** 12a, Profile Support Bit 4 */ + DSL_uint16_t profileSup4 : 1; + /** 12b, Profile Support Bit 5 */ + DSL_uint16_t profileSup5 : 1; + /** 17a, Profile Support Bit 6 */ + DSL_uint16_t profileSup6 : 1; + /** 30a, Profile Support Bit 7 */ + DSL_uint16_t profileSup7 : 1; + /** 35b, Profile Support Bit 8 */ + DSL_uint16_t profileSup8 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** 8a, Profile Preferred Bit 0 */ + DSL_uint16_t profilePref0 : 1; + /** 8b, Profile Preferred Bit 1 */ + DSL_uint16_t profilePref1 : 1; + /** 8c, Profile Preferred Bit 2 */ + DSL_uint16_t profilePref2 : 1; + /** 8d, Profile Preferred Bit 3 */ + DSL_uint16_t profilePref3 : 1; + /** 12a, Profile Preferred Bit 4 */ + DSL_uint16_t profilePref4 : 1; + /** 12b, Profile Preferred Bit 5 */ + DSL_uint16_t profilePref5 : 1; + /** 17a, Profile Preferred Bit 6 */ + DSL_uint16_t profilePref6 : 1; + /** 30a, Profile Preferred Bit 7 */ + DSL_uint16_t profilePref7 : 1; + /** 35b, Profile Preferred Bit 8 */ + DSL_uint16_t profilePref8 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** EU-32, Annex A US0 PSDs Supported Bit 0 */ + DSL_uint16_t A_US0PsdSup0 : 1; + /** EU-36, Annex A US0 PSDs Supported Bit 1 */ + DSL_uint16_t A_US0PsdSup1 : 1; + /** EU-40, Annex A US0 PSDs Supported Bit 2 */ + DSL_uint16_t A_US0PsdSup2 : 1; + /** EU-44, Annex A US0 PSDs Supported Bit 3 */ + DSL_uint16_t A_US0PsdSup3 : 1; + /** EU-48, Annex A US0 PSDs Supported Bit 4 */ + DSL_uint16_t A_US0PsdSup4 : 1; + /** EU-52, Annex A US0 PSDs Supported Bit 5 */ + DSL_uint16_t A_US0PsdSup5 : 1; + /** EU-56, Annex A US0 PSDs Supported Bit 6 */ + DSL_uint16_t A_US0PsdSup6 : 1; + /** EU-60, Annex A US0 PSDs Supported Bit 7 */ + DSL_uint16_t A_US0PsdSup7 : 1; + /** EU-64, Annex A US0 PSDs Supported Bit 8 */ + DSL_uint16_t A_US0PsdSup8 : 1; + /** ADLU-32, Annex A US0 PSDs Supported Bit 9 */ + DSL_uint16_t A_US0PsdSup9 : 1; + /** ADLU-36, Annex A US0 PSDs Supported Bit 10 */ + DSL_uint16_t A_US0PsdSup10 : 1; + /** ADLU-40, Annex A US0 PSDs Supported Bit 11 */ + DSL_uint16_t A_US0PsdSup11 : 1; + /** ADLU-44, Annex A US0 PSDs Supported Bit 12 */ + DSL_uint16_t A_US0PsdSup12 : 1; + /** ADLU-48, Annex A US0 PSDs Supported Bit 13 */ + DSL_uint16_t A_US0PsdSup13 : 1; + /** ADLU-52, Annex A US0 PSDs Supported Bit 14 */ + DSL_uint16_t A_US0PsdSup14 : 1; + /** ADLU-56, Annex A US0 PSDs Supported Bit 15 */ + DSL_uint16_t A_US0PsdSup15 : 1; + /** ADLU-60, Annex A US0 PSDs Supported Bit 16 */ + DSL_uint16_t A_US0PsdSup16 : 1; + /** ADLU-64, Annex A US0 PSDs Supported Bit 17 */ + DSL_uint16_t A_US0PsdSup17 : 1; + /** 12b Profile, Annex A US0 PSDs Supported Bit 18 */ + DSL_uint16_t A_US0PsdSup18 : 1; + /** 17a Profile, Annex A US0 PSDs Supported Bit 19 */ + DSL_uint16_t A_US0PsdSup19 : 1; + /** EU-128, Annex A US0 PSDs Supported Bit 20 */ + DSL_uint16_t A_US0PsdSup20 : 1; + /** ADLU-128, Annex A US0 PSDs Supported Bit 21 */ + DSL_uint16_t A_US0PsdSup21 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 10; + /** Reserved */ + DSL_uint16_t Res3[2]; + /** US0 In 25 to 138 kHz, Annex B US0 PSDs Supported Bit 0 */ + DSL_uint16_t B_US0PsdSup0 : 1; + /** US0 In 25 to 276 kHz, Annex B US0 PSDs Supported Bit 1 */ + DSL_uint16_t B_US0PsdSup1 : 1; + /** US0 In 120 to 276 kHz, Annex B US0 PSDs Supported Bit 2 */ + DSL_uint16_t B_US0PsdSup2 : 1; + /** 12b Profile, Annex B US0 PSDs Supported Bit 3 */ + DSL_uint16_t B_US0PsdSup3 : 1; + /** 17a Profile, Annex B US0 PSDs Supported Bit 4 */ + DSL_uint16_t B_US0PsdSup4 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 11; + /** Reserved */ + DSL_uint16_t Res5; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 0 */ + DSL_uint16_t C_US0PsdSup0 : 1; + /** US0 In 25 to 276kHz, Annex C US0 PSDs Supported Bit 1 */ + DSL_uint16_t C_US0PsdSup1 : 1; + /** Reserved */ + DSL_uint16_t Res8 : 2; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 4 */ + DSL_uint16_t C_US0PsdSup4 : 1; + /** US0 In 25 to 276 kHz, Annex C US0 PSDs Supported Bit 5 */ + DSL_uint16_t C_US0PsdSup5 : 1; + /** Reserved */ + DSL_uint16_t Res7 : 6; + /** 12b Profile, Annex C US0 PSDs Supported Bit 12 */ + DSL_uint16_t C_US0PsdSup12 : 1; + /** 17a Profile, Annex C US0 PSDs Supported Bit 13 */ + DSL_uint16_t C_US0PsdSup13 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 2; + /** Reserved */ + DSL_uint16_t Res9; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_HS_VDSL2ProfileControl. +*/ +struct ACK_HS_VDSL2ProfileControl +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the VDSL2 far-end Standard Info (See G.994.1 Amendment 4 [10], + NPAR(3) coding). +*/ +struct CMD_HS_StandardInfoFE_VDSL2Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the VDSL2 far-end info as requested by + CMD_HS_StandardInfoFE_VDSL2Get (see G.994.1 Amendment 4 [10], NPAR(3) + coding). +*/ +struct ACK_HS_StandardInfoFE_VDSL2Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** 35b, Profile Support Bit 8 */ + DSL_uint16_t profileSup8 : 1; + /** 30a, Profile Support Bit 7 */ + DSL_uint16_t profileSup7 : 1; + /** 17a, Profile Support Bit 6 */ + DSL_uint16_t profileSup6 : 1; + /** 12b, Profile Support Bit 5 */ + DSL_uint16_t profileSup5 : 1; + /** 12a, Profile Support Bit 4 */ + DSL_uint16_t profileSup4 : 1; + /** 8d, Profile Support Bit 3 */ + DSL_uint16_t profileSup3 : 1; + /** 8c, Profile Support Bit 2 */ + DSL_uint16_t profileSup2 : 1; + /** 8b, Profile Support Bit 1 */ + DSL_uint16_t profileSup1 : 1; + /** 8a, Profile Support Bit 0 */ + DSL_uint16_t profileSup0 : 1; + /** ADLU-56, Annex A US0 PSDs Supported Bit 15 */ + DSL_uint16_t A_US0PsdSup15 : 1; + /** ADLU-52, Annex A US0 PSDs Supported Bit 14 */ + DSL_uint16_t A_US0PsdSup14 : 1; + /** ADLU-48, Annex A US0 PSDs Supported Bit 13 */ + DSL_uint16_t A_US0PsdSup13 : 1; + /** ADLU-44, Annex A US0 PSDs Supported Bit 12 */ + DSL_uint16_t A_US0PsdSup12 : 1; + /** ADLU-40, Annex A US0 PSDs Supported Bit 11 */ + DSL_uint16_t A_US0PsdSup11 : 1; + /** ADLU-36, Annex A US0 PSDs Supported Bit 10 */ + DSL_uint16_t A_US0PsdSup10 : 1; + /** ADLU-32, Annex A US0 PSDs Supported Bit 9 */ + DSL_uint16_t A_US0PsdSup9 : 1; + /** EU-64, Annex A US0 PSDs Supported Bit 8 */ + DSL_uint16_t A_US0PsdSup8 : 1; + /** EU-60, Annex A US0 PSDs Supported Bit 7 */ + DSL_uint16_t A_US0PsdSup7 : 1; + /** EU-56, Annex A US0 PSDs Supported Bit 6 */ + DSL_uint16_t A_US0PsdSup6 : 1; + /** EU-52, Annex A US0 PSDs Supported Bit 5 */ + DSL_uint16_t A_US0PsdSup5 : 1; + /** EU-48, Annex A US0 PSDs Supported Bit 4 */ + DSL_uint16_t A_US0PsdSup4 : 1; + /** EU-44, Annex A US0 PSDs Supported Bit 3 */ + DSL_uint16_t A_US0PsdSup3 : 1; + /** EU-40, Annex A US0 PSDs Supported Bit 2 */ + DSL_uint16_t A_US0PsdSup2 : 1; + /** EU-36, Annex A US0 PSDs Supported Bit 1 */ + DSL_uint16_t A_US0PsdSup1 : 1; + /** EU-32, Annex A US0 PSDs Supported Bit 0 */ + DSL_uint16_t A_US0PsdSup0 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 10; + /** ADLU-128 Annex A US0 PSDs Supported Bit 21 */ + DSL_uint16_t A_US0PsdSup21 : 1; + /** EU-128, Annex A US0 PSDs Supported Bit 20 */ + DSL_uint16_t A_US0PsdSup20 : 1; + /** 17a Profile, Annex A US0 PSDs Supported Bit 19 */ + DSL_uint16_t A_US0PsdSup19 : 1; + /** 12b Profile, Annex A US0 PSDs Supported Bit 18 */ + DSL_uint16_t A_US0PsdSup18 : 1; + /** ADLU-64, Annex A US0 PSDs Supported Bit 17 */ + DSL_uint16_t A_US0PsdSup17 : 1; + /** ADLU-60, Annex A US0 PSDs Supported Bit 16 */ + DSL_uint16_t A_US0PsdSup16 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 11; + /** 17a Profile, Annex B US0 PSDs Supported Bit 4 */ + DSL_uint16_t B_US0PsdSup4 : 1; + /** 12b Profile, Annex B US0 PSDs Supported Bit 3 */ + DSL_uint16_t B_US0PsdSup3 : 1; + /** US0 In 138 to 276 kHz, Annex B US0 PSDs Supported Bit 2 */ + DSL_uint16_t B_US0PsdSup2 : 1; + /** US0 In 25 to 276 kHz, Annex B US0 PSDs Supported Bit 1 */ + DSL_uint16_t B_US0PsdSup1 : 1; + /** US0 In 25 to 138 kHz, Annex B US0 PSDs Supported Bit 0 */ + DSL_uint16_t B_US0PsdSup0 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 2; + /** 17a Profile, Annex C US0 PSDs Supported Bit 13 */ + DSL_uint16_t C_US0PsdSup13 : 1; + /** 12b Profile, Annex C US0 PSDs Supported Bit 12 */ + DSL_uint16_t C_US0PsdSup12 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 6; + /** US0 In 25 to 276 kHz, Annex C US0 PSDs Supported Bit 5 */ + DSL_uint16_t C_US0PsdSup5 : 1; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 4 */ + DSL_uint16_t C_US0PsdSup4 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 2; + /** US0 In 25 to 276kHz, Annex C US0 PSDs Supported Bit 1 */ + DSL_uint16_t C_US0PsdSup1 : 1; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 0 */ + DSL_uint16_t C_US0PsdSup0 : 1; + /** Reserved */ + DSL_uint16_t Res7 : 7; + /** G.998.4 Anx D Supported Bit 8 (VDSL only) */ + DSL_uint16_t RtxExtMemSup8 : 1; + /** Reserved */ + DSL_uint16_t Res8 : 2; + /** O-P-VECTOR1 Flag Tones Only, Supported Bit 5 (VDSL only) */ + DSL_uint16_t OpVect1FlagTonesSup5 : 1; + /** Extended O-P-VECTOR1, Supported Bit 4 (VDSL only) */ + DSL_uint16_t ExtOpVect1Sup4 : 1; + /** Upstream FDPS, Supported Bit 3 (VDSL only) */ + DSL_uint16_t FdpsUsSup3 : 1; + /** Pilot Sequence Length Multiple of 4, Supported Bit 2 (VDSL only) */ + DSL_uint16_t PilotLen4xSup2 : 1; + /** Upstream Vectoring Supported Bit 1 (VDSL only) */ + DSL_uint16_t VectUsSup1 : 1; + /** Downstream Vectoring Supported Bit 0 (VDSL only) */ + DSL_uint16_t VectDsSup0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** 8a, Profile Support Bit 0 */ + DSL_uint16_t profileSup0 : 1; + /** 8b, Profile Support Bit 1 */ + DSL_uint16_t profileSup1 : 1; + /** 8c, Profile Support Bit 2 */ + DSL_uint16_t profileSup2 : 1; + /** 8d, Profile Support Bit 3 */ + DSL_uint16_t profileSup3 : 1; + /** 12a, Profile Support Bit 4 */ + DSL_uint16_t profileSup4 : 1; + /** 12b, Profile Support Bit 5 */ + DSL_uint16_t profileSup5 : 1; + /** 17a, Profile Support Bit 6 */ + DSL_uint16_t profileSup6 : 1; + /** 30a, Profile Support Bit 7 */ + DSL_uint16_t profileSup7 : 1; + /** 35b, Profile Support Bit 8 */ + DSL_uint16_t profileSup8 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** EU-32, Annex A US0 PSDs Supported Bit 0 */ + DSL_uint16_t A_US0PsdSup0 : 1; + /** EU-36, Annex A US0 PSDs Supported Bit 1 */ + DSL_uint16_t A_US0PsdSup1 : 1; + /** EU-40, Annex A US0 PSDs Supported Bit 2 */ + DSL_uint16_t A_US0PsdSup2 : 1; + /** EU-44, Annex A US0 PSDs Supported Bit 3 */ + DSL_uint16_t A_US0PsdSup3 : 1; + /** EU-48, Annex A US0 PSDs Supported Bit 4 */ + DSL_uint16_t A_US0PsdSup4 : 1; + /** EU-52, Annex A US0 PSDs Supported Bit 5 */ + DSL_uint16_t A_US0PsdSup5 : 1; + /** EU-56, Annex A US0 PSDs Supported Bit 6 */ + DSL_uint16_t A_US0PsdSup6 : 1; + /** EU-60, Annex A US0 PSDs Supported Bit 7 */ + DSL_uint16_t A_US0PsdSup7 : 1; + /** EU-64, Annex A US0 PSDs Supported Bit 8 */ + DSL_uint16_t A_US0PsdSup8 : 1; + /** ADLU-32, Annex A US0 PSDs Supported Bit 9 */ + DSL_uint16_t A_US0PsdSup9 : 1; + /** ADLU-36, Annex A US0 PSDs Supported Bit 10 */ + DSL_uint16_t A_US0PsdSup10 : 1; + /** ADLU-40, Annex A US0 PSDs Supported Bit 11 */ + DSL_uint16_t A_US0PsdSup11 : 1; + /** ADLU-44, Annex A US0 PSDs Supported Bit 12 */ + DSL_uint16_t A_US0PsdSup12 : 1; + /** ADLU-48, Annex A US0 PSDs Supported Bit 13 */ + DSL_uint16_t A_US0PsdSup13 : 1; + /** ADLU-52, Annex A US0 PSDs Supported Bit 14 */ + DSL_uint16_t A_US0PsdSup14 : 1; + /** ADLU-56, Annex A US0 PSDs Supported Bit 15 */ + DSL_uint16_t A_US0PsdSup15 : 1; + /** ADLU-60, Annex A US0 PSDs Supported Bit 16 */ + DSL_uint16_t A_US0PsdSup16 : 1; + /** ADLU-64, Annex A US0 PSDs Supported Bit 17 */ + DSL_uint16_t A_US0PsdSup17 : 1; + /** 12b Profile, Annex A US0 PSDs Supported Bit 18 */ + DSL_uint16_t A_US0PsdSup18 : 1; + /** 17a Profile, Annex A US0 PSDs Supported Bit 19 */ + DSL_uint16_t A_US0PsdSup19 : 1; + /** EU-128, Annex A US0 PSDs Supported Bit 20 */ + DSL_uint16_t A_US0PsdSup20 : 1; + /** ADLU-128 Annex A US0 PSDs Supported Bit 21 */ + DSL_uint16_t A_US0PsdSup21 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 10; + /** US0 In 25 to 138 kHz, Annex B US0 PSDs Supported Bit 0 */ + DSL_uint16_t B_US0PsdSup0 : 1; + /** US0 In 25 to 276 kHz, Annex B US0 PSDs Supported Bit 1 */ + DSL_uint16_t B_US0PsdSup1 : 1; + /** US0 In 138 to 276 kHz, Annex B US0 PSDs Supported Bit 2 */ + DSL_uint16_t B_US0PsdSup2 : 1; + /** 12b Profile, Annex B US0 PSDs Supported Bit 3 */ + DSL_uint16_t B_US0PsdSup3 : 1; + /** 17a Profile, Annex B US0 PSDs Supported Bit 4 */ + DSL_uint16_t B_US0PsdSup4 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 11; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 0 */ + DSL_uint16_t C_US0PsdSup0 : 1; + /** US0 In 25 to 276kHz, Annex C US0 PSDs Supported Bit 1 */ + DSL_uint16_t C_US0PsdSup1 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 2; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Supported Bit 4 */ + DSL_uint16_t C_US0PsdSup4 : 1; + /** US0 In 25 to 276 kHz, Annex C US0 PSDs Supported Bit 5 */ + DSL_uint16_t C_US0PsdSup5 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 6; + /** 12b Profile, Annex C US0 PSDs Supported Bit 12 */ + DSL_uint16_t C_US0PsdSup12 : 1; + /** 17a Profile, Annex C US0 PSDs Supported Bit 13 */ + DSL_uint16_t C_US0PsdSup13 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 2; + /** Downstream Vectoring Supported Bit 0 (VDSL only) */ + DSL_uint16_t VectDsSup0 : 1; + /** Upstream Vectoring Supported Bit 1 (VDSL only) */ + DSL_uint16_t VectUsSup1 : 1; + /** Pilot Sequence Length Multiple of 4, Supported Bit 2 (VDSL only) */ + DSL_uint16_t PilotLen4xSup2 : 1; + /** Upstream FDPS, Supported Bit 3 (VDSL only) */ + DSL_uint16_t FdpsUsSup3 : 1; + /** Extended O-P-VECTOR1, Supported Bit 4 (VDSL only) */ + DSL_uint16_t ExtOpVect1Sup4 : 1; + /** O-P-VECTOR1 Flag Tones Only, Supported Bit 5 (VDSL only) */ + DSL_uint16_t OpVect1FlagTonesSup5 : 1; + /** Reserved */ + DSL_uint16_t Res8 : 2; + /** G.998.4 Anx D Supported Bit 8 (VDSL only) */ + DSL_uint16_t RtxExtMemSup8 : 1; + /** Reserved */ + DSL_uint16_t Res7 : 7; +#endif +} __PACKED__ ; + + +/** + Requests the actual selected VDSL2 Profile (See G.994.1 Amendment 4 [10], + NPAR(3) coding). +*/ +struct CMD_HS_SelectedProfileVDSL2Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the actual selected VDSL2 Profile as requested by + CMD_HS_SelectedProfileVDSL2Get (see G.994.1 Amendment 4 [10], NPAR(3) + coding). +*/ +struct ACK_HS_SelectedProfileVDSL2Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 4; + /** O-P-VECTOR1 Flag Tones Only, Selected Bit 11 */ + DSL_uint16_t dsmSel11 : 1; + /** Extended O-P-VECTOR1,Selected Bit 10 */ + DSL_uint16_t dsmSel10 : 1; + /** Upstream FDPS, Selected Bit 9 */ + DSL_uint16_t dsmSel9 : 1; + /** Pilot Sequence Length Multiple of 4, Selected Bit 8 */ + DSL_uint16_t dsmSel8 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 4; + /** G.993.2 Annex X, Selected Bit 3 */ + DSL_uint16_t dsmSel3 : 1; + /** G.993.2 Annex Y, Selected Bit 2 */ + DSL_uint16_t dsmSel2 : 1; + /** G.993.5 DS Vectoring, Selected Bit 1 */ + DSL_uint16_t dsmSel1 : 1; + /** G.993.5 DS+US Vectoring, Selected Bit 0 */ + DSL_uint16_t dsmSel0 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 7; + /** 35b, Profile Selected Bit 8 */ + DSL_uint16_t profileSel8 : 1; + /** 30a, Profile Selected Bit 7 */ + DSL_uint16_t profileSel7 : 1; + /** 17a, Profile Selected Bit 6 */ + DSL_uint16_t profileSel6 : 1; + /** 12b, Profile Selected Bit 5 */ + DSL_uint16_t profileSel5 : 1; + /** 12a, Profile Selected Bit 4 */ + DSL_uint16_t profileSel4 : 1; + /** 8d, Profile Selected Bit 3 */ + DSL_uint16_t profileSel3 : 1; + /** 8c, Profile Selected Bit 2 */ + DSL_uint16_t profileSel2 : 1; + /** 8b, Profile Selected Bit 1 */ + DSL_uint16_t profileSel1 : 1; + /** 8a, Profile Selected Bit 0 */ + DSL_uint16_t profileSel0 : 1; + /** ADLU-56, Annex A US0 PSDs Selected Bit 15 */ + DSL_uint16_t A_US0PsdSel15 : 1; + /** ADLU-52, Annex A US0 PSDs Selected Bit 14 */ + DSL_uint16_t A_US0PsdSel14 : 1; + /** ADLU-48, Annex A US0 PSDs Selected Bit 13 */ + DSL_uint16_t A_US0PsdSel13 : 1; + /** ADLU-44, Annex A US0 PSDs Selected Bit 12 */ + DSL_uint16_t A_US0PsdSel12 : 1; + /** ADLU-40, Annex A US0 PSDs Selected Bit 11 */ + DSL_uint16_t A_US0PsdSel11 : 1; + /** ADLU-36, Annex A US0 PSDs Selected Bit 10 */ + DSL_uint16_t A_US0PsdSel10 : 1; + /** ADLU-32, Annex A US0 PSDs Selected Bit 9 */ + DSL_uint16_t A_US0PsdSel9 : 1; + /** EU-64, Annex A US0 PSDs Selected Bit 8 */ + DSL_uint16_t A_US0PsdSel8 : 1; + /** EU-60, Annex A US0 PSDs Selected Bit 7 */ + DSL_uint16_t A_US0PsdSel7 : 1; + /** EU-56, Annex A US0 PSDs Selected Bit 6 */ + DSL_uint16_t A_US0PsdSel6 : 1; + /** EU-52, Annex A US0 PSDs Selected Bit 5 */ + DSL_uint16_t A_US0PsdSel5 : 1; + /** EU-48, Annex A US0 PSDs Selected Bit 4 */ + DSL_uint16_t A_US0PsdSel4 : 1; + /** EU-44, Annex A US0 PSDs Selected Bit 3 */ + DSL_uint16_t A_US0PsdSel3 : 1; + /** EU-40, Annex A US0 PSDs Selected Bit 2 */ + DSL_uint16_t A_US0PsdSel2 : 1; + /** EU-36, Annex A US0 PSDs Selected Bit 1 */ + DSL_uint16_t A_US0PsdSel1 : 1; + /** EU-32, Annex A US0 PSDs Selected Bit 0 */ + DSL_uint16_t A_US0PsdSel0 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 10; + /** ADLU-128 Annex A US0 PSDs Selected Bit 21 */ + DSL_uint16_t A_US0PsdSel21 : 1; + /** EU-128, Annex A US0 PSDs Selected Bit 20 */ + DSL_uint16_t A_US0PsdSel20 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 2; + /** ADLU-64, Annex A US0 PSDs Selected Bit 17 */ + DSL_uint16_t A_US0PsdSel17 : 1; + /** ADLU-60, Annex A US0 PSDs Selected Bit 16 */ + DSL_uint16_t A_US0PsdSel16 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 13; + /** US0 In 120 to 276 kHz, Annex B US0 PSDs Selected Bit 2 */ + DSL_uint16_t B_US0PsdSel2 : 1; + /** US0 In 25 to 276 kHz, Annex B US0 PSDs Selected Bit 1 */ + DSL_uint16_t B_US0PsdSel1 : 1; + /** US0 In 25 to 138 kHz, Annex B US0 PSDs Selected Bit 0 */ + DSL_uint16_t B_US0PsdSel0 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 10; + /** US0 In 25 to 276 kHz, Annex C US0 PSDs Selected Bit 5 */ + DSL_uint16_t C_US0PsdSel5 : 1; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Selected Bit 4 */ + DSL_uint16_t C_US0PsdSel4 : 1; + /** Reserved */ + DSL_uint16_t Res7 : 2; + /** US0 In 25 to 276kHz, Annex C US0 PSDs Selected Bit 1 */ + DSL_uint16_t C_US0PsdSel1 : 1; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Selected Bit 0 */ + DSL_uint16_t C_US0PsdSel0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** G.993.5 DS+US Vectoring, Selected Bit 0 */ + DSL_uint16_t dsmSel0 : 1; + /** G.993.5 DS Vectoring, Selected Bit 1 */ + DSL_uint16_t dsmSel1 : 1; + /** G.993.2 Annex Y, Selected Bit 2 */ + DSL_uint16_t dsmSel2 : 1; + /** G.993.2 Annex X, Selected Bit 3 */ + DSL_uint16_t dsmSel3 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 4; + /** Pilot Sequence Length Multiple of 4, Selected Bit 8 */ + DSL_uint16_t dsmSel8 : 1; + /** Upstream FDPS, Selected Bit 9 */ + DSL_uint16_t dsmSel9 : 1; + /** Extended O-P-VECTOR1,Selected Bit 10 */ + DSL_uint16_t dsmSel10 : 1; + /** O-P-VECTOR1 Flag Tones Only, Selected Bit 11 */ + DSL_uint16_t dsmSel11 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 4; + /** 8a, Profile Selected Bit 0 */ + DSL_uint16_t profileSel0 : 1; + /** 8b, Profile Selected Bit 1 */ + DSL_uint16_t profileSel1 : 1; + /** 8c, Profile Selected Bit 2 */ + DSL_uint16_t profileSel2 : 1; + /** 8d, Profile Selected Bit 3 */ + DSL_uint16_t profileSel3 : 1; + /** 12a, Profile Selected Bit 4 */ + DSL_uint16_t profileSel4 : 1; + /** 12b, Profile Selected Bit 5 */ + DSL_uint16_t profileSel5 : 1; + /** 17a, Profile Selected Bit 6 */ + DSL_uint16_t profileSel6 : 1; + /** 30a, Profile Selected Bit 7 */ + DSL_uint16_t profileSel7 : 1; + /** 35b, Profile Selected Bit 8 */ + DSL_uint16_t profileSel8 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 7; + /** EU-32, Annex A US0 PSDs Selected Bit 0 */ + DSL_uint16_t A_US0PsdSel0 : 1; + /** EU-36, Annex A US0 PSDs Selected Bit 1 */ + DSL_uint16_t A_US0PsdSel1 : 1; + /** EU-40, Annex A US0 PSDs Selected Bit 2 */ + DSL_uint16_t A_US0PsdSel2 : 1; + /** EU-44, Annex A US0 PSDs Selected Bit 3 */ + DSL_uint16_t A_US0PsdSel3 : 1; + /** EU-48, Annex A US0 PSDs Selected Bit 4 */ + DSL_uint16_t A_US0PsdSel4 : 1; + /** EU-52, Annex A US0 PSDs Selected Bit 5 */ + DSL_uint16_t A_US0PsdSel5 : 1; + /** EU-56, Annex A US0 PSDs Selected Bit 6 */ + DSL_uint16_t A_US0PsdSel6 : 1; + /** EU-60, Annex A US0 PSDs Selected Bit 7 */ + DSL_uint16_t A_US0PsdSel7 : 1; + /** EU-64, Annex A US0 PSDs Selected Bit 8 */ + DSL_uint16_t A_US0PsdSel8 : 1; + /** ADLU-32, Annex A US0 PSDs Selected Bit 9 */ + DSL_uint16_t A_US0PsdSel9 : 1; + /** ADLU-36, Annex A US0 PSDs Selected Bit 10 */ + DSL_uint16_t A_US0PsdSel10 : 1; + /** ADLU-40, Annex A US0 PSDs Selected Bit 11 */ + DSL_uint16_t A_US0PsdSel11 : 1; + /** ADLU-44, Annex A US0 PSDs Selected Bit 12 */ + DSL_uint16_t A_US0PsdSel12 : 1; + /** ADLU-48, Annex A US0 PSDs Selected Bit 13 */ + DSL_uint16_t A_US0PsdSel13 : 1; + /** ADLU-52, Annex A US0 PSDs Selected Bit 14 */ + DSL_uint16_t A_US0PsdSel14 : 1; + /** ADLU-56, Annex A US0 PSDs Selected Bit 15 */ + DSL_uint16_t A_US0PsdSel15 : 1; + /** ADLU-60, Annex A US0 PSDs Selected Bit 16 */ + DSL_uint16_t A_US0PsdSel16 : 1; + /** ADLU-64, Annex A US0 PSDs Selected Bit 17 */ + DSL_uint16_t A_US0PsdSel17 : 1; + /** Reserved */ + DSL_uint16_t Res4 : 2; + /** EU-128, Annex A US0 PSDs Selected Bit 20 */ + DSL_uint16_t A_US0PsdSel20 : 1; + /** ADLU-128 Annex A US0 PSDs Selected Bit 21 */ + DSL_uint16_t A_US0PsdSel21 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 10; + /** US0 In 25 to 138 kHz, Annex B US0 PSDs Selected Bit 0 */ + DSL_uint16_t B_US0PsdSel0 : 1; + /** US0 In 25 to 276 kHz, Annex B US0 PSDs Selected Bit 1 */ + DSL_uint16_t B_US0PsdSel1 : 1; + /** US0 In 120 to 276 kHz, Annex B US0 PSDs Selected Bit 2 */ + DSL_uint16_t B_US0PsdSel2 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 13; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Selected Bit 0 */ + DSL_uint16_t C_US0PsdSel0 : 1; + /** US0 In 25 to 276kHz, Annex C US0 PSDs Selected Bit 1 */ + DSL_uint16_t C_US0PsdSel1 : 1; + /** Reserved */ + DSL_uint16_t Res7 : 2; + /** US0 In 25 to 138 kHz, Annex C US0 PSDs Selected Bit 4 */ + DSL_uint16_t C_US0PsdSel4 : 1; + /** US0 In 25 to 276 kHz, Annex C US0 PSDs Selected Bit 5 */ + DSL_uint16_t C_US0PsdSel5 : 1; + /** Reserved */ + DSL_uint16_t Res6 : 10; +#endif +} __PACKED__ ; + + +/** + Requests the handshake information about the far-end operating mode (See + G.994.1 [6] and Amendments 1-4 [7]-[10], standard information fields- SPAR(1) + coding). +*/ +struct CMD_HS_StandardInfoFE_SPAR1Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the handshake information about the far-end operating mode (See + G.994.1 [6] and Amendments 1-4 [7]-[10], Standard information field - SPAR(1) + coding). The bit numbering per octet below follows the standard (starting + with "1"). +*/ +struct ACK_HS_StandardInfoFE_SPAR1Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 1; + /** Octet 2, Bit 7: Committee T1 enhanced SHDSL */ + DSL_uint16_t Oct2B7 : 1; + /** Octet 2, Bit 6: ETSI SCM VDSL */ + DSL_uint16_t Oct2B6 : 1; + /** Octet 2, Bit 5: ETSI MCM VDSL */ + DSL_uint16_t Oct2B5 : 1; + /** Octet 2, Bit 4: T1E1 Trial-use SCM VDSL */ + DSL_uint16_t Oct2B4 : 1; + /** Octet 2, Bit 3: T1E1 Trial-use MCM VDSL */ + DSL_uint16_t Oct2B3 : 1; + /** Octet 2, Bit 2: G991.2 Annex B/G */ + DSL_uint16_t Oct2B2 : 1; + /** Octet 2, Bit 1: G991.2 Annex A/F */ + DSL_uint16_t Oct2B1 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Octet 1, Bit 7: G992.1 Annex I */ + DSL_uint16_t Oct1B7 : 1; + /** Octet 1, Bit 6: G992.1 Annex H */ + DSL_uint16_t Oct1B6 : 1; + /** Octet 1, Bit 5: G992.2 Annex C */ + DSL_uint16_t Oct1B5 : 1; + /** Octet 1, Bit 4: G992.2 Annex A/B */ + DSL_uint16_t Oct1B4 : 1; + /** Octet 1, Bit 3: G992.1 Annex C */ + DSL_uint16_t Oct1B3 : 1; + /** Octet 1, Bit 2: G992.1 Annex B */ + DSL_uint16_t Oct1B2 : 1; + /** Octet 1, Bit 1: G992.1 Annex A */ + DSL_uint16_t Oct1B1 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Octet 4, Bit 7: IEEE 802.3ah 2BASE-TS */ + DSL_uint16_t Oct4B7 : 1; + /** Octet 4, Bit 6: IEEE 802.3ah 2BASE-TL */ + DSL_uint16_t Oct4B6 : 1; + /** Octet 4, Bit 5: G992.5 Annex J */ + DSL_uint16_t Oct4B5 : 1; + /** Octet 4, Bit 4: G992.3 Annex M */ + DSL_uint16_t Oct4B4 : 1; + /** Octet 4, Bit 3: G992.5 Annex I */ + DSL_uint16_t Oct4B3 : 1; + /** Octet 4, Bit 2: G992.5 Annex B */ + DSL_uint16_t Oct4B2 : 1; + /** Octet 4, Bit 1: G992.5 Annex A */ + DSL_uint16_t Oct4B1 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 1; + /** Octet 3, Bit 7: G992.3 Annex C */ + DSL_uint16_t Oct3B7 : 1; + /** Octet 3, Bit 6: G992.4 Annex I */ + DSL_uint16_t Oct3B6 : 1; + /** Octet 3, Bit 5: G992.4 Annex A */ + DSL_uint16_t Oct3B5 : 1; + /** Octet 3, Bit 4: G992.3 Annex J */ + DSL_uint16_t Oct3B4 : 1; + /** Octet 3, Bit 3: G992.3 Annex I */ + DSL_uint16_t Oct3B3 : 1; + /** Octet 3, Bit 2: G992.3 Annex B */ + DSL_uint16_t Oct3B2 : 1; + /** Octet 3, Bit 1: G992.3 Annex A/L */ + DSL_uint16_t Oct3B1 : 1; + /** Reserved */ + DSL_uint8_t Res4; + /** Reserved */ + DSL_uint16_t Res5 : 1; + /** Octet 5, Bit 6: G.FAST */ + DSL_uint16_t Oct5B7 : 1; + /** Octet 5, Bit 5: G993.2 */ + DSL_uint16_t Oct5B6 : 1; + /** Octet 5, Bit 4: G992.5 Annex C */ + DSL_uint16_t Oct5B5 : 1; + /** Octet 5, Bit 3: Variable Silence Period */ + DSL_uint16_t Oct5B4 : 1; + /** Octet 5, Bit 2: G992.1 Annex I / T1E1 TRQ 12 */ + DSL_uint16_t Oct5B3 : 1; + /** Octet 5, Bit 1: G993.1 / ANSI T1.424 */ + DSL_uint16_t Oct5B2 : 1; + /** Octet 5, Bit 0: G992.5 Annex M */ + DSL_uint16_t Oct5B1 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Octet 1, Bit 1: G992.1 Annex A */ + DSL_uint16_t Oct1B1 : 1; + /** Octet 1, Bit 2: G992.1 Annex B */ + DSL_uint16_t Oct1B2 : 1; + /** Octet 1, Bit 3: G992.1 Annex C */ + DSL_uint16_t Oct1B3 : 1; + /** Octet 1, Bit 4: G992.2 Annex A/B */ + DSL_uint16_t Oct1B4 : 1; + /** Octet 1, Bit 5: G992.2 Annex C */ + DSL_uint16_t Oct1B5 : 1; + /** Octet 1, Bit 6: G992.1 Annex H */ + DSL_uint16_t Oct1B6 : 1; + /** Octet 1, Bit 7: G992.1 Annex I */ + DSL_uint16_t Oct1B7 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Octet 2, Bit 1: G991.2 Annex A/F */ + DSL_uint16_t Oct2B1 : 1; + /** Octet 2, Bit 2: G991.2 Annex B/G */ + DSL_uint16_t Oct2B2 : 1; + /** Octet 2, Bit 3: T1E1 Trial-use MCM VDSL */ + DSL_uint16_t Oct2B3 : 1; + /** Octet 2, Bit 4: T1E1 Trial-use SCM VDSL */ + DSL_uint16_t Oct2B4 : 1; + /** Octet 2, Bit 5: ETSI MCM VDSL */ + DSL_uint16_t Oct2B5 : 1; + /** Octet 2, Bit 6: ETSI SCM VDSL */ + DSL_uint16_t Oct2B6 : 1; + /** Octet 2, Bit 7: Committee T1 enhanced SHDSL */ + DSL_uint16_t Oct2B7 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 1; + /** Octet 3, Bit 1: G992.3 Annex A/L */ + DSL_uint16_t Oct3B1 : 1; + /** Octet 3, Bit 2: G992.3 Annex B */ + DSL_uint16_t Oct3B2 : 1; + /** Octet 3, Bit 3: G992.3 Annex I */ + DSL_uint16_t Oct3B3 : 1; + /** Octet 3, Bit 4: G992.3 Annex J */ + DSL_uint16_t Oct3B4 : 1; + /** Octet 3, Bit 5: G992.4 Annex A */ + DSL_uint16_t Oct3B5 : 1; + /** Octet 3, Bit 6: G992.4 Annex I */ + DSL_uint16_t Oct3B6 : 1; + /** Octet 3, Bit 7: G992.3 Annex C */ + DSL_uint16_t Oct3B7 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 1; + /** Octet 4, Bit 1: G992.5 Annex A */ + DSL_uint16_t Oct4B1 : 1; + /** Octet 4, Bit 2: G992.5 Annex B */ + DSL_uint16_t Oct4B2 : 1; + /** Octet 4, Bit 3: G992.5 Annex I */ + DSL_uint16_t Oct4B3 : 1; + /** Octet 4, Bit 4: G992.3 Annex M */ + DSL_uint16_t Oct4B4 : 1; + /** Octet 4, Bit 5: G992.5 Annex J */ + DSL_uint16_t Oct4B5 : 1; + /** Octet 4, Bit 6: IEEE 802.3ah 2BASE-TL */ + DSL_uint16_t Oct4B6 : 1; + /** Octet 4, Bit 7: IEEE 802.3ah 2BASE-TS */ + DSL_uint16_t Oct4B7 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Octet 5, Bit 0: G992.5 Annex M */ + DSL_uint16_t Oct5B1 : 1; + /** Octet 5, Bit 1: G993.1 / ANSI T1.424 */ + DSL_uint16_t Oct5B2 : 1; + /** Octet 5, Bit 2: G992.1 Annex I / T1E1 TRQ 12 */ + DSL_uint16_t Oct5B3 : 1; + /** Octet 5, Bit 3: Variable Silence Period */ + DSL_uint16_t Oct5B4 : 1; + /** Octet 5, Bit 4: G992.5 Annex C */ + DSL_uint16_t Oct5B5 : 1; + /** Octet 5, Bit 5: G993.2 */ + DSL_uint16_t Oct5B6 : 1; + /** Octet 5, Bit 6: G.FAST */ + DSL_uint16_t Oct5B7 : 1; + /** Reserved */ + DSL_uint16_t Res5 : 1; + /** Reserved */ + DSL_uint8_t Res4; +#endif +} __PACKED__ ; + + +/** + Sets the in System Vendor ID at the xTU-R. (Section 7.4.4 of G.997.1 [11]) +*/ +struct CMD_SysVendorID_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor ID */ + DSL_uint16_t sysVendorID[4]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor ID */ + DSL_uint16_t sysVendorID[4]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_SysVendorID_R_Set. +*/ +struct ACK_SysVendorID_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets the system vendor version number at the xTU-R. (Section 7.4.6 of G.997.1 + [11]) +*/ +struct CMD_SysVendorVersionNum_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Version Number */ + DSL_uint16_t versionNum[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Version Number */ + DSL_uint16_t versionNum[8]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_SysVendorVersionNum_R_Set. +*/ +struct ACK_SysVendorVersionNum_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets the system vendor serial number at the xTU-R. (Section 7.4.8 of G.997.1 + [11]) +*/ +struct CMD_SysVendorSerialNum_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Serial Number */ + DSL_uint16_t serialNum[16]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Serial Number */ + DSL_uint16_t serialNum[16]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_SysVendorSerialNum_R_Set. +*/ +struct ACK_SysVendorSerialNum_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets auxiliary inventory information at the VTU-R (Section 11.2.3.2.4 of + G993.2 [5]). +*/ +struct CMD_AuxInventoryInfo_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** VTU-R Auxiliary Inventory Information */ + DSL_uint16_t auxInfo[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** VTU-R Auxiliary Inventory Information */ + DSL_uint16_t auxInfo[32]; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_AuxInventoryInfo_R_Set. +*/ +struct ACK_AuxInventoryInfo_R_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-C Vendor ID. (Section 7.4.1 of G.997.1 [11]) +*/ +struct CMD_VendorID_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the xTU-C Vendor ID as requested by CMD_VendorID_O_Get. +*/ +struct ACK_VendorID_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C G.994.1 Vendor ID */ + DSL_uint16_t vendorID[4]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C G.994.1 Vendor ID */ + DSL_uint16_t vendorID[4]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-R Vendor ID. (Section 7.4.2 of G.997.1 [11]) +*/ +struct CMD_VendorID_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the xTU-R Vendor ID as requested by CMD_VendorID_R_Get. +*/ +struct ACK_VendorID_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R G.994.1 Vendor ID */ + DSL_uint16_t vendorID[4]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R G.994.1 Vendor ID */ + DSL_uint16_t vendorID[4]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-C System Vendor ID. (Section 7.4.3 of G.997.1 [11]) +*/ +struct CMD_SysVendorID_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-C System Vendor ID as requested by CMD_SysVendorID_O_Get. +*/ +struct ACK_SysVendorID_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C System Vendor ID */ + DSL_uint16_t sysVendorID[4]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C System Vendor ID */ + DSL_uint16_t sysVendorID[4]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-R System Vendor ID. (Section 7.4.4 of G.997.1 [11]) +*/ +struct CMD_SysVendorID_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-R System Vendor ID as requested by CMD_SysVendorID_R_Get. +*/ +struct ACK_SysVendorID_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor ID */ + DSL_uint16_t sysVendorID[4]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor ID */ + DSL_uint16_t sysVendorID[4]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-C system vendor version number. (Section 7.4.5 of G.997.1 + [11]) +*/ +struct CMD_SysVendorVersionNumO_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-C system vendor version number as requested by + CMD_SysVendorVersionNumO_Get. +*/ +struct ACK_SysVendorVersionNum_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C System Vendor Version Number */ + DSL_uint16_t versionNum[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C System Vendor Version Number */ + DSL_uint16_t versionNum[8]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-R system vendor version number. (Section 7.4.6 of G.997.1 + [11]) +*/ +struct CMD_SysVendorVersionNum_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-R system vendor version number as requested by + CMD_SysVendorVersionNum_R_Get. +*/ +struct ACK_SysVendorVersionNum_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Version Number */ + DSL_uint16_t versionNum[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Version Number */ + DSL_uint16_t versionNum[8]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-C system vendor serial number. (Section 7.4.7 of G.997.1 + [11]) +*/ +struct CMD_SysVendorSerialNum_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-C system vendor serial number as requested by + CMD_SysVendorSerialNum_O_Get. +*/ +struct ACK_SysVendorSerialNum_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C System Vendor Serial Number */ + DSL_uint16_t serialNum[16]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-C System Vendor Serial Number */ + DSL_uint16_t serialNum[16]; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-R system vendor serial number. (Section 7.4.8 of G.997.1 + [11]) +*/ +struct CMD_SysVendorSerialNum_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-R system vendor version number as requested by + CMD_SysVendorSerialNum_R_Get. +*/ +struct ACK_SysVendorSerialNum_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Serial Number */ + DSL_uint16_t serialNum[16]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** xTU-R System Vendor Serial Number */ + DSL_uint16_t serialNum[16]; +#endif +} __PACKED__ ; + + +/** + Requests VTU-O auxiliary inventory information (Section 11.2.3.2.4 of G993.2 + [5]). +*/ +struct CMD_AuxInventoryInfo_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the VTU-O auxiliary inventory information as requested by + CMD_AuxInventoryInfo_O_Get. +*/ +struct ACK_AuxInventoryInfo_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** VTU-O Auxiliary Inventory Information */ + DSL_uint16_t auxInfo[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** VTU-O Auxiliary Inventory Information */ + DSL_uint16_t auxInfo[32]; +#endif +} __PACKED__ ; + + +/** + Requests VTU-R auxiliary inventory information (Section 11.2.3.2.4 of G993.2 + [5]). +*/ +struct CMD_AuxInventoryInfo_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the VTU-R auxiliary inventory information as requested by + CMD_AuxInventoryInfo_R_Get. +*/ +struct ACK_AuxInventoryInfo_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** VTU-O Auxiliary Inventory Information */ + DSL_uint16_t auxInfo[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** VTU-O Auxiliary Inventory Information */ + DSL_uint16_t auxInfo[32]; +#endif +} __PACKED__ ; + + +/** + Requests the ATU-C's T1.413 Vendor identification. (Section 9.6.4.2 of ANSI + T1.413 [16]) +*/ +struct CMD_T1413_VendorID_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the ATU-C's T1.413 vendor identification number. +*/ +struct ACK_T1413_VendorID_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor ID */ + DSL_uint16_t T1413VendorID; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor ID */ + DSL_uint16_t T1413VendorID; +#endif +} __PACKED__ ; + + +/** + Requests the ATU-R's T1.413 Vendor identification. (Section 9.6.4.2 of ANSI + T1.413 [16]) +*/ +struct CMD_T1413_VendorID_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the ATU-R's T1.413 vendor identification number. +*/ +struct ACK_T1413_VendorID_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor ID */ + DSL_uint16_t T1413VendorID; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor ID */ + DSL_uint16_t T1413VendorID; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-C's T1.413 revision number. (Section 9.6.4.3 of ANSI T1.413 + [16]) +*/ +struct CMD_T1413_RevNo_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-C's T1.413 revision number. +*/ +struct ACK_T1413_RevNo_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Revision Number */ + DSL_uint16_t T1413RevNo; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Revision Number */ + DSL_uint16_t T1413RevNo; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-R's T1.413 revision number. (Section 9.7.6.2 of ANSI T1.413 + [16]) +*/ +struct CMD_T1413_RevNo_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-R's T1.413 revision number. +*/ +struct ACK_T1413_RevNo_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Revision Number */ + DSL_uint16_t T1413RevNo; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Revision Number */ + DSL_uint16_t T1413RevNo; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-C's T1.413 vendor revision number. (Section 9.6.4.4 of ANSI + T1.413 [16]) +*/ +struct CMD_T1413_VendorRevNo_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-C's T1.413 vendor revision number. +*/ +struct ACK_T1413_VendorRevNo_O_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor Revision Number */ + DSL_uint16_t T1413VendorRevNo; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor Revision Number */ + DSL_uint16_t T1413VendorRevNo; +#endif +} __PACKED__ ; + + +/** + Requests the xTU-R's T1.413 vendor revision number. (Section 9.7.6.3 of ANSI + T1.413 [16]) +*/ +struct CMD_T1413_VendorRevNo_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the xTU-R's T1.413 vendor revision number. +*/ +struct ACK_T1413_VendorRevNo_R_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor Revision Number */ + DSL_uint16_t T1413VendorRevNo; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** T1.413 Vendor Revision Number */ + DSL_uint16_t T1413VendorRevNo; +#endif +} __PACKED__ ; + + +/** + Requests the transmission system in use on the line (DSL flavour). (Section + 7.5.1.1. of G.997.1 [11]) See note at ACK_XTSE_StatusGet about the expected + behaviour. +*/ +struct CMD_XTSE_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the transmission system mode in use as requested by + CMD_XTSE_StatusGet.The information is set by the FW after mode select (MS) + during the handshake phase or during T1.413 state. Before mode selection the + value "0" is reported (=none), after selection of a common mode exactly this + single mode must be indicated. If there is a common mode but it requires + another FW to be loaded (e.g. ADSL instead of VDSL), this does not happen + ("0" is reported ), then the FW goes to FAIL state and indicates a specific + suberror code (S_XDSL_MODE). If there is no common mode, "0" is to be + reported (here modem enters FAIL state). +*/ +struct ACK_XTSE_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ADSL Mode-Bit15: G.992.5, Annex A */ + DSL_uint16_t A15 : 1; + /** ADSL Mode-Bit14: G.992.5, Annex B */ + DSL_uint16_t A14 : 1; + /** ADSL Mode-Bit13: G.992.3, Annex M */ + DSL_uint16_t A13 : 1; + /** ADSL Mode-Bit12: G.992.3, Annex L, US Mask2 */ + DSL_uint16_t A12 : 1; + /** ADSL Mode-Bit11: G.992.3, Annex L, US Mask1 */ + DSL_uint16_t A11 : 1; + /** ADSL Mode-Bit10: G.992.2, Annex A */ + DSL_uint16_t A10 : 1; + /** ADSL Mode-Bit9: G.992.3, Annex B */ + DSL_uint16_t A9 : 1; + /** ADSL Mode-Bit8: G.992.3, Annex A */ + DSL_uint16_t A8 : 1; + /** ADSL Mode-Bit7: G.992.5, Annex J */ + DSL_uint16_t A7 : 1; + /** ADSL Mode-Bit6: G.992.5, Annex I */ + DSL_uint16_t A6 : 1; + /** ADSL Mode-Bit5: G.992.3, Annex J */ + DSL_uint16_t A5 : 1; + /** ADSL Mode-Bit4: G.992.3, Annex I */ + DSL_uint16_t A4 : 1; + /** ADSL Mode-Bit3: G.992.1, Annex B */ + DSL_uint16_t A3 : 1; + /** ADSL Mode-Bit2: G.992.1, Annex A */ + DSL_uint16_t A2 : 1; + /** ADSL Mode-Bit1: G.992.5, Annex M */ + DSL_uint16_t A1 : 1; + /** ADSL Mode-Bit0: T1.413 */ + DSL_uint16_t A0 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** VDSL Mode-Bit2: VDSL2 */ + DSL_uint16_t V2 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ADSL Mode-Bit0: T1.413 */ + DSL_uint16_t A0 : 1; + /** ADSL Mode-Bit1: G.992.5, Annex M */ + DSL_uint16_t A1 : 1; + /** ADSL Mode-Bit2: G.992.1, Annex A */ + DSL_uint16_t A2 : 1; + /** ADSL Mode-Bit3: G.992.1, Annex B */ + DSL_uint16_t A3 : 1; + /** ADSL Mode-Bit4: G.992.3, Annex I */ + DSL_uint16_t A4 : 1; + /** ADSL Mode-Bit5: G.992.3, Annex J */ + DSL_uint16_t A5 : 1; + /** ADSL Mode-Bit6: G.992.5, Annex I */ + DSL_uint16_t A6 : 1; + /** ADSL Mode-Bit7: G.992.5, Annex J */ + DSL_uint16_t A7 : 1; + /** ADSL Mode-Bit8: G.992.3, Annex A */ + DSL_uint16_t A8 : 1; + /** ADSL Mode-Bit9: G.992.3, Annex B */ + DSL_uint16_t A9 : 1; + /** ADSL Mode-Bit10: G.992.2, Annex A */ + DSL_uint16_t A10 : 1; + /** ADSL Mode-Bit11: G.992.3, Annex L, US Mask1 */ + DSL_uint16_t A11 : 1; + /** ADSL Mode-Bit12: G.992.3, Annex L, US Mask2 */ + DSL_uint16_t A12 : 1; + /** ADSL Mode-Bit13: G.992.3, Annex M */ + DSL_uint16_t A13 : 1; + /** ADSL Mode-Bit14: G.992.5, Annex B */ + DSL_uint16_t A14 : 1; + /** ADSL Mode-Bit15: G.992.5, Annex A */ + DSL_uint16_t A15 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** VDSL Mode-Bit2: VDSL2 */ + DSL_uint16_t V2 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + Reads the used downstream band configuration. +*/ +struct CMD_BandControl_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_BandControl_DS_Get. +*/ +struct ACK_BandControl_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint8_t Res0; + /** Number of Downstream Bands */ + DSL_uint8_t NumBandsDS; + /** Band Descriptor DS */ + VRX_ToneIndex_t band[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Downstream Bands */ + DSL_uint8_t NumBandsDS; + /** Reserved */ + DSL_uint8_t Res0; + /** Band Descriptor DS */ + VRX_ToneIndex_t band[8]; +#endif +} __PACKED__ ; + + +/** + Reads the used upstream band configuration. +*/ +struct CMD_BandControl_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_BandControl_US_Get. +*/ +struct ACK_BandControl_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint8_t Res0; + /** Number of Upstream Bands */ + DSL_uint8_t NumBandsUS; + /** Band Descriptor US */ + VRX_ToneIndex_t band[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Upstream Bands */ + DSL_uint8_t NumBandsUS; + /** Reserved */ + DSL_uint8_t Res0; + /** Band Descriptor US */ + VRX_ToneIndex_t band[8]; +#endif +} __PACKED__ ; + + +/** + Reads the RFI band configuration. +*/ +struct CMD_RFI_BandControlGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_RFI_BandControlGet. +*/ +struct ACK_RFI_BandControlGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint8_t Res0; + /** Number of RFI Bands */ + DSL_uint8_t NumRfiBands; + /** RFI Band Descriptor */ + VRX_ToneIndex_t RfiBand[16]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of RFI Bands */ + DSL_uint8_t NumRfiBands; + /** Reserved */ + DSL_uint8_t Res0; + /** RFI Band Descriptor */ + VRX_ToneIndex_t RfiBand[16]; +#endif +} __PACKED__ ; + + +/** + This message requests data about the line status (like noise margin) for + downstream direction. +*/ +struct CMD_LineStatusDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message delivers the line status data for downstream direction requested + by CMD_LineStatusDS_Get. +*/ +struct ACK_LineStatusDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Downstream LATN */ + DSL_uint16_t LATNds; + /** Downstream SATN */ + DSL_uint16_t SATNds; + /** Downstream SNRM */ + DSL_uint16_t SNRMds; + /** Downstream ATTNDR, LSW */ + DSL_uint16_t ATTNDRds_LSW; + /** Downstream ATTNDR, MSW */ + DSL_uint16_t ATTNDRds_MSW; + /** Downstream ACTATP */ + DSL_int16_t ACTATPds; + /** Downstream ACTPSD (ADSL only) */ + DSL_uint16_t ACTPSDds; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** Virtual Noise Status DS */ + DSL_uint16_t VNstatus_ds : 1; + /** Reserved */ + DSL_uint16_t Res2 : 6; + /** NTR Status DS */ + DSL_uint16_t NTRstatus_ds : 1; + /** TCM Status DS */ + DSL_uint16_t TCMstatus_ds : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Downstream LATN */ + DSL_uint16_t LATNds; + /** Downstream SATN */ + DSL_uint16_t SATNds; + /** Downstream SNRM */ + DSL_uint16_t SNRMds; + /** Downstream ATTNDR, LSW */ + DSL_uint16_t ATTNDRds_LSW; + /** Downstream ATTNDR, MSW */ + DSL_uint16_t ATTNDRds_MSW; + /** Downstream ACTATP */ + DSL_int16_t ACTATPds; + /** Downstream ACTPSD (ADSL only) */ + DSL_uint16_t ACTPSDds; + /** TCM Status DS */ + DSL_uint16_t TCMstatus_ds : 1; + /** NTR Status DS */ + DSL_uint16_t NTRstatus_ds : 1; + /** Reserved */ + DSL_uint16_t Res2 : 6; + /** Virtual Noise Status DS */ + DSL_uint16_t VNstatus_ds : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; +#endif +} __PACKED__ ; + + +/** + This message requests data about the upstream line status (like noise + margin). +*/ +struct CMD_LineStatusUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message delivers the line status data for upstream direction requested by + CMD_LineStatusUS_Get. +*/ +struct ACK_LineStatusUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Upstream LATN */ + DSL_uint16_t LATNus; + /** Upstream SATN */ + DSL_uint16_t SATNus; + /** Upstream SNRM */ + DSL_uint16_t SNRMus; + /** Upstream ATTNDR, LSW */ + DSL_uint16_t ATTNDRus_LSW; + /** Upstream ATTNDR, MSW */ + DSL_uint16_t ATTNDRus_MSW; + /** Upstream ACTATP */ + DSL_int16_t ACTATPus; + /** Upstream ACTPSD (ADSL only) */ + DSL_uint16_t ACTPSDus; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** Virtual Noise Status US */ + DSL_uint16_t VNstatus_us : 1; + /** Reserved */ + DSL_uint16_t Res2 : 7; + /** TCM Status US */ + DSL_uint16_t TCMstatus_us : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Upstream LATN */ + DSL_uint16_t LATNus; + /** Upstream SATN */ + DSL_uint16_t SATNus; + /** Upstream SNRM */ + DSL_uint16_t SNRMus; + /** Upstream ATTNDR, LSW */ + DSL_uint16_t ATTNDRus_LSW; + /** Upstream ATTNDR, MSW */ + DSL_uint16_t ATTNDRus_MSW; + /** Upstream ACTATP */ + DSL_int16_t ACTATPus; + /** Upstream ACTPSD (ADSL only) */ + DSL_uint16_t ACTPSDus; + /** TCM Status US */ + DSL_uint16_t TCMstatus_us : 1; + /** Reserved */ + DSL_uint16_t Res2 : 7; + /** Virtual Noise Status US */ + DSL_uint16_t VNstatus_us : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; +#endif +} __PACKED__ ; + + +/** + This message requests data about the line status (noise margin, line + attenuation and signal attenuation) for downstream direction in a "per band" + granularity. +*/ +struct CMD_LineStatusPerBandDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message delivers the line status data (line attenuation, signal + attenuation and noise margin) for downstream direction in a "per band" + granularity as requested by CMD_LineStatusPerBandDS_Get. +*/ +struct ACK_LineStatusPerBandDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Line Status Descriptor DS */ + VRX_LineStatus_pb_t LineStatus_pb_ds[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Line Status Descriptor DS */ + VRX_LineStatus_pb_t LineStatus_pb_ds[8]; +#endif +} __PACKED__ ; + + +/** + This message requests data about the line status (noise margin, line - and + signal attenuation) for upstream direction in a "per band" granularity. +*/ +struct CMD_LineStatusPerBandUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message delivers the line status data (line attenuation, signal + attenuation and noise margin) for upstream direction in a "per band" + granularity as requested by CMD_LineStatusPerBandUS_Get. +*/ +struct ACK_LineStatusPerBandUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Line Status Descriptor US */ + VRX_LineStatus_pb_t LineStatus_pb_us[8]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** Line Status Descriptor US */ + VRX_LineStatus_pb_t LineStatus_pb_us[8]; +#endif +} __PACKED__ ; + + +/** + Requests parameters used for the calculation of the downstream attainable net + data rate (ATTNDRds). +*/ +struct CMD_AttndrStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the data requested by CMD_AttndrStatusGet.(Section 7.5.1.41 of + G.997.1 [12]). +*/ +struct ACK_AttndrStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ATTNDR Actual Method (ATTNDR_ACTMETHOD). */ + DSL_uint16_t AttndrActMethod; + /** ATTNDR Downstream Actual INP (ATTNDR_ACTINPds). */ + DSL_uint16_t AttndrActInpDs; + /** ATTNDR DS Actual INP against REIN (ATTNDR_ACTINP_REINds). */ + DSL_uint16_t AttndrActInpReinDs; + /** ATTNDR DS Actual Delay (ATTNDR_ACTDELAYds). */ + DSL_uint16_t AttndrActDelayDs; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ATTNDR Actual Method (ATTNDR_ACTMETHOD). */ + DSL_uint16_t AttndrActMethod; + /** ATTNDR Downstream Actual INP (ATTNDR_ACTINPds). */ + DSL_uint16_t AttndrActInpDs; + /** ATTNDR DS Actual INP against REIN (ATTNDR_ACTINP_REINds). */ + DSL_uint16_t AttndrActInpReinDs; + /** ATTNDR DS Actual Delay (ATTNDR_ACTDELAYds). */ + DSL_uint16_t AttndrActDelayDs; +#endif +} __PACKED__ ; + + +/** + Requests the breakpoints of the actual PSD for the downstream direction. PSDs + consisting of more than 42 PSD breakpoints must be read with 2 messages due + to the the mailbox size. (The first parameter in the retrieved data structure + contains the "Number of Breakpoints" parameter.) +*/ +struct CMD_PSD_BreakpointsDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the breakpoints of the actual PSD for the downstream direction as + requested by CMD_PSD_BreakpointsDS_Get. +*/ +struct ACK_PSD_BreakpointsDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#endif +} __PACKED__ ; + + +/** + Requests the breakpoints of the actual PSD for the upstream direction. +*/ +struct CMD_PSD_BreakpointsUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the breakpoints of the actual PSD for the upstream direction as + requested by CMD_PSD_BreakpointsUS_Get. +*/ +struct ACK_PSD_BreakpointsUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint8_t Res0; + /** Number of Breakpoints */ + DSL_uint8_t NumBreakPts; + /** Breakpoint Descriptor US PSD */ + VRX_PSDbreak_t breakpoint[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint8_t NumBreakPts; + /** Reserved */ + DSL_uint8_t Res0; + /** Breakpoint Descriptor US PSD */ + VRX_PSDbreak_t breakpoint[32]; +#endif +} __PACKED__ ; + + +/** + The Downstream TSSI Breakpoints are specified by the transmitter (VTU-O) and + communicated to the receiver (VTU-R) via the O-PRM message. The TSSI + Breakpoints are used to shape the O-P-TEQ signal. This message provides read + only access to the DS TSSI Breakpoints. The DS TSSI Breakpoints are not + configurable via messages. +*/ +struct CMD_TssiDS_VDSL2_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement of CMD_TssiDS_VDSL2_Get. +*/ +struct ACK_TssiDS_VDSL2_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data from the DS TSSI breakpoint buffer */ + DSL_uint16_t Data[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data from the DS TSSI breakpoint buffer */ + DSL_uint16_t Data[128]; +#endif +} __PACKED__ ; + + +/** + The Upstream TSSI Breakpoints are specified by the transmitter (VTU-R) and + communicated to the receiver (VTU-O) via the R-PRM message. The TSSI + Breakpoints are used to shape the R-P-TEQ signal. The TSSI Breakpoints can + be read only but are not configurable via messages. +*/ +struct CMD_TssiUS_VDSL2_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement of CMD_TssiUS_VDSL2_Get. +*/ +struct ACK_TssiUS_VDSL2_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data from the US TSSI breakpoint buffer */ + DSL_uint16_t Data[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data from the US TSSI breakpoint buffer */ + DSL_uint16_t Data[128]; +#endif +} __PACKED__ ; + + +/** + Reads the actual power cutback value. +*/ +struct CMD_ADSL_PCB_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the actual power cutback values requested with CMD_ADSL_PCB_Get. +*/ +struct ACK_ADSL_PCB_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Downstream Power Cutback */ + DSL_uint16_t dspcb; + /** Upstream Power Cutback */ + DSL_uint16_t uspcb; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Downstream Power Cutback */ + DSL_uint16_t dspcb; + /** Upstream Power Cutback */ + DSL_uint16_t uspcb; +#endif +} __PACKED__ ; + + +/** + Requests the PSD and power parameter values actually used by the firmware. +*/ +struct CMD_ActualPSD_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides actually used PSD and power parameters as requested by + CMD_ActualPSD_Get. +*/ +struct ACK_ActualPSD_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Power/PSD Configuration Parameter: MAXNOMPSDds */ + DSL_uint16_t MAXNOMPSDds; + /** Power/PSD Configuration Parameter: MAXNOMPSDus */ + DSL_uint16_t MAXNOMPSDus; + /** Power/PSD Configuration Parameter: MAXNOMATPds */ + DSL_uint16_t MAXNOMATPds; + /** Power/PSD Configuration Parameters */ + DSL_uint16_t MAXNOMATPus; + /** Reserved */ + DSL_uint16_t Res0; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Power/PSD Configuration Parameter: MAXNOMPSDds */ + DSL_uint16_t MAXNOMPSDds; + /** Power/PSD Configuration Parameter: MAXNOMPSDus */ + DSL_uint16_t MAXNOMPSDus; + /** Power/PSD Configuration Parameter: MAXNOMATPds */ + DSL_uint16_t MAXNOMATPds; + /** Power/PSD Configuration Parameters */ + DSL_uint16_t MAXNOMATPus; + /** Reserved */ + DSL_uint16_t Res0; +#endif +} __PACKED__ ; + + +/** + Requests the actually used ADSL upstream mask for ADSL2/2+ Annexes M and J. + To be applied only in combination with G.992.3/5 Annex M support in + ACK_XTSE_StatusGet. +*/ +struct CMD_ADSL_MJ_UsMaskGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the actually used ADSL upstream mask for ADSL2/2+ Annexes M and J. +*/ +struct ACK_ADSL_MJ_UsMaskGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** G.992.3/5 Annex M/J Upstream Mask 9 */ + DSL_uint16_t mask9 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 8 */ + DSL_uint16_t mask8 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 7 */ + DSL_uint16_t mask7 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 6 */ + DSL_uint16_t mask6 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 5 */ + DSL_uint16_t mask5 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 4 */ + DSL_uint16_t mask4 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 3 */ + DSL_uint16_t mask3 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 2 */ + DSL_uint16_t mask2 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 1 */ + DSL_uint16_t mask1 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** G.992.3/5 Annex M/J Upstream Mask 1 */ + DSL_uint16_t mask1 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 2 */ + DSL_uint16_t mask2 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 3 */ + DSL_uint16_t mask3 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 4 */ + DSL_uint16_t mask4 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 5 */ + DSL_uint16_t mask5 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 6 */ + DSL_uint16_t mask6 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 7 */ + DSL_uint16_t mask7 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 8 */ + DSL_uint16_t mask8 : 1; + /** G.992.3/5 Annex M/J Upstream Mask 9 */ + DSL_uint16_t mask9 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; +#endif +} __PACKED__ ; + + +/** + Reports the downstream transmit PSD mask (PSDMASKds) which is received from + CO with O-SIGNATURE message. +*/ +struct CMD_PSDMASK_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the downstream transmit PSD mask (PSDMASKds) for both passbands and + stopbands, which is received from CO with O-SIGNATURE message. (Format is now + as absolute value without the offset.) +*/ +struct ACK_PSDMASK_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint16_t NumBreakPts; + /** PSDMASKds Data */ + VRX_PSDbreak2_t PSDMASK[48]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Breakpoints */ + DSL_uint16_t NumBreakPts; + /** PSDMASKds Data */ + VRX_PSDbreak2_t PSDMASK[48]; +#endif +} __PACKED__ ; + + +/** + The message requests information about the receive PSD per subcarrier + available at the near-end side, which means for downstream direction at the + CPE. It is the hosts responsibility to select the tone indices accordingly.In + Showtime the message reports the receive PSD measured in Channel Discovery + phase after the final hybrid training (no Showtime update). +*/ +struct CMD_RxPSD_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the receive PSD per subcarrier available at the + near-end side, which means for downstream direction at the CPE.In Showtime + the message reports the receive PSD measured in Channel Discovery phase after + the final hybrid training (no Showtime update). +*/ +struct ACK_RxPSD_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Receive PSD */ + DSL_uint16_t PSDps[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Receive PSD */ + DSL_uint16_t PSDps[128]; +#endif +} __PACKED__ ; + + +/** + Requests status information for the downstream bearer channels. +*/ +struct CMD_BearerChsDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers status information for the downstream bearer channels. **: The terms + "LP0/Interleaved Path" and "LP1/Fast Path" below refer to the terminology + used in ITU DSL standards [1],[2], [3], [5] which means:- LP0 or LP1 in case + of VDSL2, ADSL2/2+- "Interleaved Path" or "Fast Path" in case of ADSL1/ADSL1 + Lite.Attention: In VRX Device1 the "LP1/Fast Path" parameters are populated + only in ADSL1 and ADSL1 Lilte mode with selected fast path. +*/ +struct ACK_BearerChsDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ACTNDR DS for LP0, LSW */ + DSL_uint16_t DRdsLP0_LSW; + /** ACTNDR DS for LP0, MSW */ + DSL_uint16_t DRdsLP0_MSW; + /** ACTNDR DS for LP1, LSW */ + DSL_uint16_t DRdsLP1_LSW; + /** ACTNDR DS for LP1, MSW */ + DSL_uint16_t DRdsLP1_MSW; + /** Reserved */ + DSL_uint16_t Res0[4]; + /** Actual Interleaving Delay DS, LP0 */ + DSL_uint16_t delay_dsLP0; + /** Actual Interleaving Delay DS, LP1 */ + DSL_uint16_t delay_dsLP1; + /** Actual Interleaver Depth DS, LP0 */ + DSL_uint16_t intlDepth_dsLP0; + /** Actual Interleaver Depth DS, LP1 */ + DSL_uint16_t intlDepth_dsLP1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** TCM Status DS, LP0 */ + DSL_uint16_t TCMstatus_dsLP0 : 1; + /** Parity Bytes DS, LP0 */ + DSL_uint16_t parity_dsLP0 : 8; + /** Reserved */ + DSL_uint8_t Res2; + /** Parity Bytes DS, LP1 */ + DSL_uint16_t parity_dsLP1 : 8; + /** Actual INP NoErasure DS , LP0 */ + DSL_uint16_t actInpNoErasure_LP0; + /** Actual INP NoErasure DS, LP1 */ + DSL_uint16_t actInpNoErasure_LP1; + /** RX Estimated Actual INP DS, LP0 */ + DSL_uint16_t actInpErasure_LP0; + /** RX Estimated Actual INP DS, LP1 */ + DSL_uint16_t actInpErasure_LP1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ACTNDR DS for LP0, LSW */ + DSL_uint16_t DRdsLP0_LSW; + /** ACTNDR DS for LP0, MSW */ + DSL_uint16_t DRdsLP0_MSW; + /** ACTNDR DS for LP1, LSW */ + DSL_uint16_t DRdsLP1_LSW; + /** ACTNDR DS for LP1, MSW */ + DSL_uint16_t DRdsLP1_MSW; + /** Reserved */ + DSL_uint16_t Res0[4]; + /** Actual Interleaving Delay DS, LP0 */ + DSL_uint16_t delay_dsLP0; + /** Actual Interleaving Delay DS, LP1 */ + DSL_uint16_t delay_dsLP1; + /** Actual Interleaver Depth DS, LP0 */ + DSL_uint16_t intlDepth_dsLP0; + /** Actual Interleaver Depth DS, LP1 */ + DSL_uint16_t intlDepth_dsLP1; + /** Parity Bytes DS, LP0 */ + DSL_uint16_t parity_dsLP0 : 8; + /** TCM Status DS, LP0 */ + DSL_uint16_t TCMstatus_dsLP0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** Parity Bytes DS, LP1 */ + DSL_uint16_t parity_dsLP1 : 8; + /** Reserved */ + DSL_uint8_t Res2; + /** Actual INP NoErasure DS , LP0 */ + DSL_uint16_t actInpNoErasure_LP0; + /** Actual INP NoErasure DS, LP1 */ + DSL_uint16_t actInpNoErasure_LP1; + /** RX Estimated Actual INP DS, LP0 */ + DSL_uint16_t actInpErasure_LP0; + /** RX Estimated Actual INP DS, LP1 */ + DSL_uint16_t actInpErasure_LP1; +#endif +} __PACKED__ ; + + +/** + Requests status information for the upstream bearer channels. +*/ +struct CMD_BearerChsUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers status information for the upstream bearer channels. **: The terms + "LP0/Interleaved Path" and "LP1/Fast Path" below refer to the terminology + used in ITU DSL standards [1],[2], [3], [5] which means:- LP0 or LP1 in case + of VDSL2, ADSL2/2+- "Interleaved Path" or "Fast Path" in case of ADSL1/ADSL1 + Lite.Attention: In VRX Device1 the "LP1/Fast Path" parameters are populated + only in ADSL1 and ADSL1 Lite mode with selected fast path. +*/ +struct ACK_BearerChsUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ACTNDR US for LP0, LSW */ + DSL_uint16_t DRusLP0_LSW; + /** ACTNDR US for LP0, MSW */ + DSL_uint16_t DRusLP0_MSW; + /** ACTNDR US for LP1, LSW */ + DSL_uint16_t DRusLP1_LSW; + /** ACTNDR US for LP1, MSW */ + DSL_uint16_t DRusLP1_MSW; + /** Reserved */ + DSL_uint16_t Res0[4]; + /** Actual Interleaving Delay US, LP0 */ + DSL_uint16_t delay_usLP0; + /** Actual Interleaving Delay US, LP1 */ + DSL_uint16_t delay_usLP1; + /** Actual Interleaver Depth US, LP0 */ + DSL_uint16_t intlDepth_usLP0; + /** Actual Interleaver Depth US, LP1 */ + DSL_uint16_t intlDepth_usLP1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** TCM Status US, LP0 */ + DSL_uint16_t TCMstatus_usLP0 : 1; + /** Parity Bytes US, LP0 */ + DSL_uint16_t parity_usLP0 : 8; + /** Reserved */ + DSL_uint8_t Res2; + /** Parity Bytes US, LP1 */ + DSL_uint16_t parity_usLP1 : 8; + /** Actual INP NoErasure US , LP0 */ + DSL_uint16_t actInpNoErasure_LP0; + /** Actual INP NoErasure US, LP1 */ + DSL_uint16_t actInpNoErasure_LP1; + /** RX Estimated Actual INP US , LP0 */ + DSL_uint16_t actInpErasure_LP0; + /** RX Estimated Actual INP US, LP1 */ + DSL_uint16_t actInpErasure_LP1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ACTNDR US for LP0, LSW */ + DSL_uint16_t DRusLP0_LSW; + /** ACTNDR US for LP0, MSW */ + DSL_uint16_t DRusLP0_MSW; + /** ACTNDR US for LP1, LSW */ + DSL_uint16_t DRusLP1_LSW; + /** ACTNDR US for LP1, MSW */ + DSL_uint16_t DRusLP1_MSW; + /** Reserved */ + DSL_uint16_t Res0[4]; + /** Actual Interleaving Delay US, LP0 */ + DSL_uint16_t delay_usLP0; + /** Actual Interleaving Delay US, LP1 */ + DSL_uint16_t delay_usLP1; + /** Actual Interleaver Depth US, LP0 */ + DSL_uint16_t intlDepth_usLP0; + /** Actual Interleaver Depth US, LP1 */ + DSL_uint16_t intlDepth_usLP1; + /** Parity Bytes US, LP0 */ + DSL_uint16_t parity_usLP0 : 8; + /** TCM Status US, LP0 */ + DSL_uint16_t TCMstatus_usLP0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 7; + /** Parity Bytes US, LP1 */ + DSL_uint16_t parity_usLP1 : 8; + /** Reserved */ + DSL_uint8_t Res2; + /** Actual INP NoErasure US , LP0 */ + DSL_uint16_t actInpNoErasure_LP0; + /** Actual INP NoErasure US, LP1 */ + DSL_uint16_t actInpNoErasure_LP1; + /** RX Estimated Actual INP US , LP0 */ + DSL_uint16_t actInpErasure_LP0; + /** RX Estimated Actual INP US, LP1 */ + DSL_uint16_t actInpErasure_LP1; +#endif +} __PACKED__ ; + + +/** + Requests an extended set of VDSL2 framing parameters for the downstream + direction. +*/ +struct CMD_FrameDataExt2DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers an extended set of VDSL2 framing parameters for the downstream + direction requested by CMD_FrameDataExt2DS_Get. (Sections 7.5.2.6 of G.997.1 + and 9.5 & 9.6 of G.993.2 [5]) +*/ +struct ACK_FrameDataExt2DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bytes "Bp" from BC0 per MDF LP0 DS */ + DSL_uint16_t B0_LP0ds; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved */ + DSL_uint16_t Res1; + /** Reserved */ + DSL_uint16_t Res2; + /** MDFs per OH Sub-Frame "Tp" LP0 DS */ + DSL_uint16_t Tp_LP0ds; + /** Reserved */ + DSL_uint16_t Res3; + /** OH Bytes per OH sub-frame "Gp" LP0 DS */ + DSL_uint16_t Gp_LP0ds; + /** Reserved */ + DSL_uint16_t Res4; + /** OH Frames per OH Superframe "Fp" LP0 DS */ + DSL_uint16_t Fp_LP0ds; + /** Reserved */ + DSL_uint16_t Res5; + /** MDFs per RS-Codeword "Mp" LP0 DS */ + DSL_uint16_t Mp_LP0ds; + /** Reserved */ + DSL_uint16_t Res6; + /** Bits per Symbol "Lp" LP0 DS, LSW */ + DSL_uint16_t Lp_LP0ds_LSW; + /** Bits per Symbol "Lp" LP0 DS, MSW */ + DSL_uint16_t Lp_LP0ds_MSW; + /** Reserved */ + DSL_uint16_t Res7; + /** Reserved */ + DSL_uint16_t Res8; + /** RS Check Bytes "Rp" LP0 DS */ + DSL_uint16_t Rp_LP0ds; + /** Reserved */ + DSL_uint16_t Res9; + /** Interleaver Block Length "Ip", LP0 DS */ + DSL_uint16_t Ip_LP0ds; + /** Reserved */ + DSL_uint16_t Res10; + /** Interleaving Depth "Dp" LP0 DS */ + DSL_uint16_t Dp_LP0ds; + /** Reserved */ + DSL_uint16_t Res11; + /** OH Frame Period "PERp", LP0 DS */ + DSL_uint16_t PERp_LP0ds; + /** Reserved */ + DSL_uint16_t Res12; + /** Line Data Rate DS for LP0, LSW */ + DSL_uint16_t DRp_LP0ds_LSW; + /** Line Data Rate DS for LP0, MSW */ + DSL_uint16_t DRp_LP0ds_MSW; + /** Reserved */ + DSL_uint16_t Res13; + /** Reserved */ + DSL_uint16_t Res14; + /** RS Codeword Size "N_fecp" LP0 DS */ + DSL_uint16_t N_fecp_LP0ds; + /** Reserved */ + DSL_uint16_t Res15; + /** Framing Parameter "q", LP0 DS */ + DSL_uint16_t q_LP0ds; + /** Reserved */ + DSL_uint16_t Res16; + /** OH Bytes per OH FrameLP0 "SEQp" DS */ + DSL_uint16_t SEQp_LP0ds; + /** Reserved */ + DSL_uint16_t Res17; + /** OH sub-frames "Up" per OH frame LP0 DS */ + DSL_uint16_t Up_LP0ds; + /** Reserved */ + DSL_uint16_t Res18; + /** Bytes per OH Frame LP0 DS, LSW */ + DSL_uint16_t PERBp_LP0ds_LSW; + /** Bytes per OH Frame LP0 DS, MSW */ + DSL_uint16_t PERBp_LP0ds_MSW; + /** Reserved */ + DSL_uint16_t Res19; + /** Reserved */ + DSL_uint16_t Res20; + /** Bytes in MSG OH "MSGc" LP0 DS */ + DSL_uint16_t MSGc_LP0ds; + /** Reserved */ + DSL_uint16_t Res21; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bytes "Bp" from BC0 per MDF LP0 DS */ + DSL_uint16_t B0_LP0ds; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved */ + DSL_uint16_t Res1; + /** Reserved */ + DSL_uint16_t Res2; + /** MDFs per OH Sub-Frame "Tp" LP0 DS */ + DSL_uint16_t Tp_LP0ds; + /** Reserved */ + DSL_uint16_t Res3; + /** OH Bytes per OH sub-frame "Gp" LP0 DS */ + DSL_uint16_t Gp_LP0ds; + /** Reserved */ + DSL_uint16_t Res4; + /** OH Frames per OH Superframe "Fp" LP0 DS */ + DSL_uint16_t Fp_LP0ds; + /** Reserved */ + DSL_uint16_t Res5; + /** MDFs per RS-Codeword "Mp" LP0 DS */ + DSL_uint16_t Mp_LP0ds; + /** Reserved */ + DSL_uint16_t Res6; + /** Bits per Symbol "Lp" LP0 DS, LSW */ + DSL_uint16_t Lp_LP0ds_LSW; + /** Bits per Symbol "Lp" LP0 DS, MSW */ + DSL_uint16_t Lp_LP0ds_MSW; + /** Reserved */ + DSL_uint16_t Res7; + /** Reserved */ + DSL_uint16_t Res8; + /** RS Check Bytes "Rp" LP0 DS */ + DSL_uint16_t Rp_LP0ds; + /** Reserved */ + DSL_uint16_t Res9; + /** Interleaver Block Length "Ip", LP0 DS */ + DSL_uint16_t Ip_LP0ds; + /** Reserved */ + DSL_uint16_t Res10; + /** Interleaving Depth "Dp" LP0 DS */ + DSL_uint16_t Dp_LP0ds; + /** Reserved */ + DSL_uint16_t Res11; + /** OH Frame Period "PERp", LP0 DS */ + DSL_uint16_t PERp_LP0ds; + /** Reserved */ + DSL_uint16_t Res12; + /** Line Data Rate DS for LP0, LSW */ + DSL_uint16_t DRp_LP0ds_LSW; + /** Line Data Rate DS for LP0, MSW */ + DSL_uint16_t DRp_LP0ds_MSW; + /** Reserved */ + DSL_uint16_t Res13; + /** Reserved */ + DSL_uint16_t Res14; + /** RS Codeword Size "N_fecp" LP0 DS */ + DSL_uint16_t N_fecp_LP0ds; + /** Reserved */ + DSL_uint16_t Res15; + /** Framing Parameter "q", LP0 DS */ + DSL_uint16_t q_LP0ds; + /** Reserved */ + DSL_uint16_t Res16; + /** OH Bytes per OH FrameLP0 "SEQp" DS */ + DSL_uint16_t SEQp_LP0ds; + /** Reserved */ + DSL_uint16_t Res17; + /** OH sub-frames "Up" per OH frame LP0 DS */ + DSL_uint16_t Up_LP0ds; + /** Reserved */ + DSL_uint16_t Res18; + /** Bytes per OH Frame LP0 DS, LSW */ + DSL_uint16_t PERBp_LP0ds_LSW; + /** Bytes per OH Frame LP0 DS, MSW */ + DSL_uint16_t PERBp_LP0ds_MSW; + /** Reserved */ + DSL_uint16_t Res19; + /** Reserved */ + DSL_uint16_t Res20; + /** Bytes in MSG OH "MSGc" LP0 DS */ + DSL_uint16_t MSGc_LP0ds; + /** Reserved */ + DSL_uint16_t Res21; +#endif +} __PACKED__ ; + + +/** + Requests an extended set of VDSL2 framing parameters for the upstream + direction. +*/ +struct CMD_FrameDataExt2US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers an extended set of VDSL2 framing parameters for the upstream + direction requested by CMD_FrameDataExt2US_Get. (Sections 7.5.2.6 of G.997.1 + and 9.5 & 9.6 of G.993.2 [5]) +*/ +struct ACK_FrameDataExt2US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bytes "Bp" from BC0 per MDF LP0 US */ + DSL_uint16_t B0_LP0us; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved */ + DSL_uint16_t Res1; + /** Reserved */ + DSL_uint16_t Res2; + /** MDFs per OH Sub-Frame "Tp" LP0 US */ + DSL_uint16_t Tp_LP0us; + /** Reserved */ + DSL_uint16_t Res3; + /** OH Bytes per OH sub-frame "Gp" LP0 US */ + DSL_uint16_t Gp_LP0us; + /** Reserved */ + DSL_uint16_t Res4; + /** OH Frames per OH Superframe "Fp" LP0 US */ + DSL_uint16_t Fp_LP0us; + /** Reserved */ + DSL_uint16_t Res5; + /** MDFs per RS-Codeword "Mp" LP0 US */ + DSL_uint16_t Mp_LP0us; + /** Reserved */ + DSL_uint16_t Res6; + /** Bits per Symbol "Lp" LP0 US, LSW */ + DSL_uint16_t Lp_LP0us_LSW; + /** Bits per Symbol "Lp" LP0 US, MSW */ + DSL_uint16_t Lp_LP0us_MSW; + /** Reserved */ + DSL_uint16_t Res7; + /** Reserved */ + DSL_uint16_t Res8; + /** RS Check Bytes "Rp" LP0 US */ + DSL_uint16_t Rp_LP0us; + /** Reserved */ + DSL_uint16_t Res9; + /** Interleaver Block Length "Ip", LP0 US */ + DSL_uint16_t Ip_LP0us; + /** Reserved */ + DSL_uint16_t Res10; + /** Interleaving Depth "Dp" LP0 US */ + DSL_uint16_t Dp_LP0us; + /** Reserved */ + DSL_uint16_t Res11; + /** OH Frame Period "PERp", LP0 US */ + DSL_uint16_t PERp_LP0us; + /** Reserved */ + DSL_uint16_t Res12; + /** Line Data Rate US for LP0, LSW */ + DSL_uint16_t DRp_LP0us_LSW; + /** Line Data Rate US for LP0, MSW */ + DSL_uint16_t DRp_LP0us_MSW; + /** Reserved */ + DSL_uint16_t Res13; + /** Reserved */ + DSL_uint16_t Res14; + /** RS Codeword Size "N_fecp" LP0 US */ + DSL_uint16_t N_fecp_LP0us; + /** Reserved */ + DSL_uint16_t Res15; + /** Framing Parameter "q", LP0 US */ + DSL_uint16_t q_LP0us; + /** Reserved */ + DSL_uint16_t Res16; + /** OH Bytes per OH FrameLP0 "SEQp" US */ + DSL_uint16_t SEQp_LP0us; + /** Reserved */ + DSL_uint16_t Res17; + /** OH sub-frames "Up" per OH frame LP0 US */ + DSL_uint16_t Up_LP0us; + /** Reserved */ + DSL_uint16_t Res18; + /** Bytes per OH Frame LP0 US, LSW */ + DSL_uint16_t PERBp_LP0us_LSW; + /** Bytes per OH Frame LP0 US, MSW */ + DSL_uint16_t PERBp_LP0us_MSW; + /** Reserved */ + DSL_uint16_t Res19; + /** Reserved */ + DSL_uint16_t Res20; + /** Bytes in MSG OH "MSGc" LP0 US */ + DSL_uint16_t MSGc_LP0us; + /** Reserved */ + DSL_uint16_t Res21; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bytes "Bp" from BC0 per MDF LP0 US */ + DSL_uint16_t B0_LP0us; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved */ + DSL_uint16_t Res1; + /** Reserved */ + DSL_uint16_t Res2; + /** MDFs per OH Sub-Frame "Tp" LP0 US */ + DSL_uint16_t Tp_LP0us; + /** Reserved */ + DSL_uint16_t Res3; + /** OH Bytes per OH sub-frame "Gp" LP0 US */ + DSL_uint16_t Gp_LP0us; + /** Reserved */ + DSL_uint16_t Res4; + /** OH Frames per OH Superframe "Fp" LP0 US */ + DSL_uint16_t Fp_LP0us; + /** Reserved */ + DSL_uint16_t Res5; + /** MDFs per RS-Codeword "Mp" LP0 US */ + DSL_uint16_t Mp_LP0us; + /** Reserved */ + DSL_uint16_t Res6; + /** Bits per Symbol "Lp" LP0 US, LSW */ + DSL_uint16_t Lp_LP0us_LSW; + /** Bits per Symbol "Lp" LP0 US, MSW */ + DSL_uint16_t Lp_LP0us_MSW; + /** Reserved */ + DSL_uint16_t Res7; + /** Reserved */ + DSL_uint16_t Res8; + /** RS Check Bytes "Rp" LP0 US */ + DSL_uint16_t Rp_LP0us; + /** Reserved */ + DSL_uint16_t Res9; + /** Interleaver Block Length "Ip", LP0 US */ + DSL_uint16_t Ip_LP0us; + /** Reserved */ + DSL_uint16_t Res10; + /** Interleaving Depth "Dp" LP0 US */ + DSL_uint16_t Dp_LP0us; + /** Reserved */ + DSL_uint16_t Res11; + /** OH Frame Period "PERp", LP0 US */ + DSL_uint16_t PERp_LP0us; + /** Reserved */ + DSL_uint16_t Res12; + /** Line Data Rate US for LP0, LSW */ + DSL_uint16_t DRp_LP0us_LSW; + /** Line Data Rate US for LP0, MSW */ + DSL_uint16_t DRp_LP0us_MSW; + /** Reserved */ + DSL_uint16_t Res13; + /** Reserved */ + DSL_uint16_t Res14; + /** RS Codeword Size "N_fecp" LP0 US */ + DSL_uint16_t N_fecp_LP0us; + /** Reserved */ + DSL_uint16_t Res15; + /** Framing Parameter "q", LP0 US */ + DSL_uint16_t q_LP0us; + /** Reserved */ + DSL_uint16_t Res16; + /** OH Bytes per OH FrameLP0 "SEQp" US */ + DSL_uint16_t SEQp_LP0us; + /** Reserved */ + DSL_uint16_t Res17; + /** OH sub-frames "Up" per OH frame LP0 US */ + DSL_uint16_t Up_LP0us; + /** Reserved */ + DSL_uint16_t Res18; + /** Bytes per OH Frame LP0 US, LSW */ + DSL_uint16_t PERBp_LP0us_LSW; + /** Bytes per OH Frame LP0 US, MSW */ + DSL_uint16_t PERBp_LP0us_MSW; + /** Reserved */ + DSL_uint16_t Res19; + /** Reserved */ + DSL_uint16_t Res20; + /** Bytes in MSG OH "MSGc" LP0 US */ + DSL_uint16_t MSGc_LP0us; + /** Reserved */ + DSL_uint16_t Res21; +#endif +} __PACKED__ ; + + +/** + Requests ADSL framing parameters for the downstream direction, latency path + 0/Interleaved Path. +*/ +struct CMD_ADSL_FrameDataDS_LP0Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the ADSL framing parameters for the downstream direction, + LP0/Interleaved path, as requested by CMD_ADSL_FrameDataDS_LP0Get. (Sections + 7.5 & 7.6 of G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +struct ACK_ADSL_FrameDataDS_LP0Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" DS LP0 */ + DSL_uint16_t Rp; + /** Symbols per RS-Codeword "Sp" DS LP0 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" DS LP0 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" DS LP0 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" DS LP0 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" DS LP0 */ + DSL_uint16_t Lp; + /** TCM Bits DS LP0 */ + DSL_uint16_t TCM; + /** Framing Mode DS LP0 */ + DSL_uint16_t fraMode; + /** "Tp" DS LP0 */ + DSL_uint16_t Tp; + /** "SEQp" DS LP0 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" DS */ + DSL_uint16_t MSGc; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" DS LP0 */ + DSL_uint16_t Rp; + /** Symbols per RS-Codeword "Sp" DS LP0 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" DS LP0 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" DS LP0 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" DS LP0 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" DS LP0 */ + DSL_uint16_t Lp; + /** TCM Bits DS LP0 */ + DSL_uint16_t TCM; + /** Framing Mode DS LP0 */ + DSL_uint16_t fraMode; + /** "Tp" DS LP0 */ + DSL_uint16_t Tp; + /** "SEQp" DS LP0 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" DS */ + DSL_uint16_t MSGc; +#endif +} __PACKED__ ; + + +/** + Requests ADSL framing parameters for the upstream direction, latency path + 0/Interleaved path. +*/ +struct CMD_ADSL_FrameDataUS_LP0Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the ADSL framing parameters for the upstream direction, latency path + 0/Interleaved path, as requested by CMD_ADSL_FrameDataUS_LP0Get. (Sections + 7.5 & 7.6 of G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +struct ACK_ADSL_FrameDataUS_LP0Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" US LP0 */ + DSL_uint16_t Rp_LP0us; + /** Symbols per RS-Codeword "Sp" US LP0 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" US LP0 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" US LP0 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" US LP0 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" US LP0 */ + DSL_uint16_t Lp; + /** TCM Bits US LP0 */ + DSL_uint16_t TCM; + /** Framing Mode US LP0 */ + DSL_uint16_t fraMode; + /** "Tp" US LP0 */ + DSL_uint16_t Tp; + /** "SEQp" US LP0 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" US */ + DSL_uint16_t MSGc; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" US LP0 */ + DSL_uint16_t Rp_LP0us; + /** Symbols per RS-Codeword "Sp" US LP0 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" US LP0 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" US LP0 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" US LP0 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" US LP0 */ + DSL_uint16_t Lp; + /** TCM Bits US LP0 */ + DSL_uint16_t TCM; + /** Framing Mode US LP0 */ + DSL_uint16_t fraMode; + /** "Tp" US LP0 */ + DSL_uint16_t Tp; + /** "SEQp" US LP0 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" US */ + DSL_uint16_t MSGc; +#endif +} __PACKED__ ; + + +/** + Requests ADSL framing parameters for the downstream direction, latency path 1 + (LP1)/ Fast path.In VRX Rev. 1.x to be used for ADSL1, "fast path" only. +*/ +struct CMD_ADSL_FrameDataDS_LP1Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the ADSL framing parameters for the downstream direction, LP1/Fast + path, as requested by CMD_ADSL_FrameDataDS_LP1Get. (Sections 7.5 & 7.6 of + G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +struct ACK_ADSL_FrameDataDS_LP1Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" DS LP1 */ + DSL_uint16_t Rp; + /** Symbols per RS-Codeword "Sp" DS LP1 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" DS LP1 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" DS LP1 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" DS LP1 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" DS LP1 */ + DSL_uint16_t Lp; + /** TCM Bits DS LP1 */ + DSL_uint16_t TCM; + /** Framing Mode DS LP1 */ + DSL_uint16_t fraMode; + /** "Tp" DS LP1 */ + DSL_uint16_t Tp; + /** "SEQp" DS LP1 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" DS */ + DSL_uint16_t MSGc; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" DS LP1 */ + DSL_uint16_t Rp; + /** Symbols per RS-Codeword "Sp" DS LP1 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" DS LP1 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" DS LP1 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" DS LP1 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" DS LP1 */ + DSL_uint16_t Lp; + /** TCM Bits DS LP1 */ + DSL_uint16_t TCM; + /** Framing Mode DS LP1 */ + DSL_uint16_t fraMode; + /** "Tp" DS LP1 */ + DSL_uint16_t Tp; + /** "SEQp" DS LP1 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" DS */ + DSL_uint16_t MSGc; +#endif +} __PACKED__ ; + + +/** + Requests ADSL framing parameters for the upstream direction, latency path 1 + (LP1)/Fast path.In VRX Rev. 1.x to be used for ADSL1, "fast path" only. +*/ +struct CMD_ADSL_FrameDataUS_LP1Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the ADSL framing parameters for the upstream direction, LP1/Fast + path, as requested by CMD_ADSL_FrameDataUS_LP1Get. (Sections 7.5 & 7.6 of + G.992.3 [2] and 7.4 of G.992.1 [1]) +*/ +struct ACK_ADSL_FrameDataUS_LP1Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" US LP1 */ + DSL_uint16_t Rp_LP0us; + /** Symbols per RS-Codeword "Sp" US LP1 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" US LP1 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" US LP1 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" US LP1 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" US LP1 */ + DSL_uint16_t Lp; + /** TCM Bits US LP1 */ + DSL_uint16_t TCM; + /** Framing Mode US LP1 */ + DSL_uint16_t fraMode; + /** "Tp" US LP1 */ + DSL_uint16_t Tp; + /** "SEQp" US LP1 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" US */ + DSL_uint16_t MSGc; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RS Check Bytes "Rp" US LP1 */ + DSL_uint16_t Rp_LP0us; + /** Symbols per RS-Codeword "Sp" US LP1 */ + DSL_uint16_t Sp; + /** Interleaving Depth "Dp" US LP1 */ + DSL_uint16_t Dp; + /** Bytes per MDF "Kp" US LP1 */ + DSL_uint16_t Kp; + /** MDFs per RS-Codeword "Mp" US LP1 */ + DSL_uint16_t Mp; + /** Bits per Symbol "Lp" US LP1 */ + DSL_uint16_t Lp; + /** TCM Bits US LP1 */ + DSL_uint16_t TCM; + /** Framing Mode US LP1 */ + DSL_uint16_t fraMode; + /** "Tp" US LP1 */ + DSL_uint16_t Tp; + /** "SEQp" US LP1 */ + DSL_uint16_t SEQp; + /** Bytes in MSG-OH "MSGc" US */ + DSL_uint16_t MSGc; +#endif +} __PACKED__ ; + + +/** + Reads the connected hybrid type. +*/ +struct CMD_HybridGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Contains the connected hybrid type. +*/ +struct ACK_HybridGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Hybrid Type */ + DSL_uint16_t HybridType; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Hybrid Type */ + DSL_uint16_t HybridType; +#endif +} __PACKED__ ; + + +/** + Requests the pilot tones used in Showtime. +*/ +struct CMD_PilotTonesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the Showtime pilot tones as requested by CMD_PilotTonesGet. +*/ +struct ACK_PilotTonesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Pilot Tones */ + DSL_uint16_t numPilot; + /** Pilot Tones */ + DSL_uint16_t pilot[16]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Number of Pilot Tones */ + DSL_uint16_t numPilot; + /** Pilot Tones */ + DSL_uint16_t pilot[16]; +#endif +} __PACKED__ ; + + +/** + Requests the results of the micro filter detection (MFD) function. Valid + information in Showtime and FAIL will be available only if the microfilter + detection mechanism has been run before. +*/ +struct CMD_MFD_ResultsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the results of the micro filter detection (MFD) function. +*/ +struct ACK_MFD_ResultsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 1; + /** Filter Detection Process Indication, Bit 14:13 */ + DSL_uint16_t FilterDetectStatus : 2; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** Training Bridged Tap Range, Bit 9:8 */ + DSL_uint16_t TrainingBTRange : 2; + /** Training Hybrid Info Ready Indication, Bit 7 */ + DSL_uint16_t TrainingHybridInfoReady : 1; + /** Training Loop Length Ready Indication, Bit 6 */ + DSL_uint16_t TrainingLoopLengthReady : 1; + /** Training Metric2 Ready Indication, Bit 5 */ + DSL_uint16_t TrainingMetric2Ready : 1; + /** Reserved Bit 4:2 */ + DSL_uint16_t Res2 : 3; + /** Bridge Tap Range, Bit 1:0 */ + DSL_uint16_t BTRange : 2; + /** Metric1 for NLNF, Bit 15:4 */ + DSL_uint16_t M1metric : 12; + /** "No Confidence" Bit, Bit 3 */ + DSL_uint16_t M1NoConfidence : 1; + /** Metric1 QLN level, Bit 2:0 */ + DSL_uint16_t M1QlnLevel : 3; + /** Metric2 */ + DSL_int16_t M2Metric; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bridge Tap Range, Bit 1:0 */ + DSL_uint16_t BTRange : 2; + /** Reserved Bit 4:2 */ + DSL_uint16_t Res2 : 3; + /** Training Metric2 Ready Indication, Bit 5 */ + DSL_uint16_t TrainingMetric2Ready : 1; + /** Training Loop Length Ready Indication, Bit 6 */ + DSL_uint16_t TrainingLoopLengthReady : 1; + /** Training Hybrid Info Ready Indication, Bit 7 */ + DSL_uint16_t TrainingHybridInfoReady : 1; + /** Training Bridged Tap Range, Bit 9:8 */ + DSL_uint16_t TrainingBTRange : 2; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** Filter Detection Process Indication, Bit 14:13 */ + DSL_uint16_t FilterDetectStatus : 2; + /** Reserved */ + DSL_uint16_t Res0 : 1; + /** Metric1 QLN level, Bit 2:0 */ + DSL_uint16_t M1QlnLevel : 3; + /** "No Confidence" Bit, Bit 3 */ + DSL_uint16_t M1NoConfidence : 1; + /** Metric1 for NLNF, Bit 15:4 */ + DSL_uint16_t M1metric : 12; + /** Metric2 */ + DSL_int16_t M2Metric; +#endif +} __PACKED__ ; + + +/** + Requests the loop length estimates done by the microfilter detection + function.In Showtime the data are always available.The availability of data + is indicated by the flag TrainingLoopLengthReady in ACK_MFD_ResultsGet.In + Showtime the data are always available. +*/ +struct CMD_MFD_LooplengthGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the loop length estimates done by the microfilter detection (MFD) + function. +*/ +struct ACK_MFD_LooplengthGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** AWG26 Length Estimate */ + DSL_uint16_t Awg26Length; + /** AWG24 Length Estimate */ + DSL_uint16_t Awg24Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** AWG26 Length Estimate */ + DSL_uint16_t Awg26Length; + /** AWG24 Length Estimate */ + DSL_uint16_t Awg24Length; +#endif +} __PACKED__ ; + + +/** + Requests hybrid information used by the microfilter detection function.In + Showtime the data are always available.The availability of data is indicated + by the flag TrainingHybridInfoReady in ACK_MFD_ResultsGet. In Showtime the + data are always available. +*/ +struct CMD_MFD_HybridInfoGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the hybrid information used by the microfilter detection function. +*/ +struct ACK_MFD_HybridInfoGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Hybrid Max Index */ + DSL_uint16_t HybridMaxIndex; + /** Hybrid Max Metric */ + DSL_uint16_t HybridMaxMetric; + /** Hybrid Second Best Index */ + DSL_uint16_t Hybrid2ndBestIndex; + /** Hybrid Second Best Metric */ + DSL_uint16_t Hybrid2ndBestMetric; + /** Hybrid Zero Metric */ + DSL_uint16_t Hybrid0Metric; + /** Loaded Hybrid Index */ + DSL_uint16_t LoadHybridIndex; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Hybrid Max Index */ + DSL_uint16_t HybridMaxIndex; + /** Hybrid Max Metric */ + DSL_uint16_t HybridMaxMetric; + /** Hybrid Second Best Index */ + DSL_uint16_t Hybrid2ndBestIndex; + /** Hybrid Second Best Metric */ + DSL_uint16_t Hybrid2ndBestMetric; + /** Hybrid Zero Metric */ + DSL_uint16_t Hybrid0Metric; + /** Loaded Hybrid Index */ + DSL_uint16_t LoadHybridIndex; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_GHS_STATUS_H_*/ diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_olr.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_olr.h new file mode 100644 index 0000000000000000000000000000000000000000..582845b31be4177886ca2cb6624b274ea17f740c --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_olr.h @@ -0,0 +1,3875 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_OLR_H_ +#define _DRV_DSL_CPE_VRX_MSG_OLR_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _OLR_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Message Specific Constants Definition section ----- */ +#define CMD_TestParamsFE_Request_TRIGGER 0x1 +#define CMD_TestParamsFE_Request_ABORT 0x0 +#define ACK_TestParamsFE_Poll_ONGOING 0x1 +#define CMD_ClearEOC_TxTrigger_IDLE 0 +#define CMD_ClearEOC_TxTrigger_START 1 +#define ACK_ClearEOCStatusGet_IDLE 0 +#define ACK_ClearEOCStatusGet_TXPROG 1 +#define ACK_ClearEOCStatusGet_Reserved 2 +#define ACK_ClearEOCStatusGet_TXERR 3 +#define ACK_ClearEOCStatusGet_RXPROG 1 +#define ACK_ClearEOCStatusGet_RXDONE 2 +#define ACK_ClearEOCStatusGet_RXERR 3 +#define EVT_ClearEOCStatusGet_IDLE 0 +#define EVT_ClearEOCStatusGet_TXPROG 1 +#define EVT_ClearEOCStatusGet_TXDONE 2 +#define EVT_ClearEOCStatusGet_TXERR 3 +#define EVT_ClearEOCStatusGet_RXPROG 1 +#define EVT_ClearEOCStatusGet_RXDONE 2 +#define EVT_ClearEOCStatusGet_RXERR 3 +#define CMD_ClearEOCStatusSet_IDLE 0 +#define ACK_RA_ModeDS_Get_MANUAL 1 +#define ACK_RA_ModeDS_Get_AT_INIT 2 +#define ACK_RA_ModeDS_Get_DYNAMIC 3 +#define ACK_RA_ModeDS_Get_SOS 4 +#define ACK_RA_ModeUS_Get_MANUAL 1 +#define ACK_RA_ModeUS_Get_AT_INIT 2 +#define ACK_RA_ModeUS_Get_DYNAMIC 3 +#define ACK_RA_ModeUS_Get_SOS 4 +#define CMD_RTX_Control_RTX_DS_ENABLE 1 +#define CMD_RTX_Control_RTX_DSUS_ENABLE 2 +#define CMD_DSM_Control_OFF 0 +#define CMD_DSM_Control_FULL_VECTOR 1 +#define CMD_DSM_Control_FULL_VECTOR_FRIENDLY 2 +/* ----- Message Specific Constants Definition section (End) ----- */ + +/** Message ID for CMD_BAT_TableEntriesGet */ +#define CMD_BAT_TABLEENTRIESGET 0x1703 + +/** + Requests information about the bit-allocation per subcarrier in VDSL mode. + The values for all subcarriers of both directions can be retrieved. (For ADSL + use CMD_BAT_DS_Get and CMD_BAT_US_Get). +*/ +typedef struct CMD_BAT_TableEntriesGet CMD_BAT_TableEntriesGet_t; + +/** Message ID for ACK_BAT_TableEntriesGet */ +#define ACK_BAT_TABLEENTRIESGET 0x1703 + +/** + Returns information about the bit-allocation per tone for the chosen range of + subcarriers.(Section 7.5.1.29.1-2 of G.997.1) +*/ +typedef struct ACK_BAT_TableEntriesGet ACK_BAT_TableEntriesGet_t; + +/** Message ID for CMD_GainTableEntriesGet */ +#define CMD_GAINTABLEENTRIESGET 0x1903 + +/** + Requests information about the Gains per subcarrier. The values for all + subcarriers of both directions can be retrieved.(For ADSL use + CMD_GainTableDS_Get and CMD_GainTableUS_Get). +*/ +typedef struct CMD_GainTableEntriesGet CMD_GainTableEntriesGet_t; + +/** Message ID for ACK_GainTableEntriesGet */ +#define ACK_GAINTABLEENTRIESGET 0x1903 + +/** + Returns information about the Gain-per-tone for the chosen range of + subcarriers.(Section 7.5.1.29.3-4 of G.997.1) +*/ +typedef struct ACK_GainTableEntriesGet ACK_GainTableEntriesGet_t; + +/** Message ID for CMD_SNR_NE_TableEntriesGet */ +#define CMD_SNR_NE_TABLEENTRIESGET 0x0B03 + +/** + The message requests information about the SNR per subcarrier with virtual + noise for the near-end side , which means for downstream direction at the + CPE. It is the hosts responsibility to select the tone indices + accordingly.See also Table 20 "How to Retrieve Test Parameter Data" on Page + 496. +*/ +typedef struct CMD_SNR_NE_TableEntriesGet CMD_SNR_NE_TableEntriesGet_t; + +/** Message ID for ACK_SNR_NE_TableEntriesGet */ +#define ACK_SNR_NE_TABLEENTRIESGET 0x0B03 + +/** + Returns information about the SNR per subcarrier with virtual noise for the + near-end side, meaning for downstream direction. +*/ +typedef struct ACK_SNR_NE_TableEntriesGet ACK_SNR_NE_TableEntriesGet_t; + +/** Message ID for CMD_BAT_DS_Get */ +#define CMD_BAT_DS_GET 0x070E + +/** + Requests information about the downstream bit-allocation per subcarrier in + ADSL mode. +*/ +typedef struct CMD_BAT_DS_Get CMD_BAT_DS_Get_t; + +/** Message ID for ACK_BAT_DS_Get */ +#define ACK_BAT_DS_GET 0x070E + +/** + Returns information about the downstream bit-allocation per tone for the + chosen range of subcarriers.(Section 7.5.1.29.1 of G.997.1) +*/ +typedef struct ACK_BAT_DS_Get ACK_BAT_DS_Get_t; + +/** Message ID for CMD_BAT_US_Get */ +#define CMD_BAT_US_GET 0x060E + +/** + Requests information about the upstream bit-allocation per subcarrier in ADSL + mode. +*/ +typedef struct CMD_BAT_US_Get CMD_BAT_US_Get_t; + +/** Message ID for ACK_BAT_US_Get */ +#define ACK_BAT_US_GET 0x060E + +/** + Returns information about the upstream bit-allocation per tone for the chosen + range of subcarriers.(Section 7.5.1.29.2 of G.997.1) +*/ +typedef struct ACK_BAT_US_Get ACK_BAT_US_Get_t; + +/** Message ID for CMD_GainTableDS_Get */ +#define CMD_GAINTABLEDS_GET 0x090E + +/** + Requests information about the Gains per subcarrier for the downstream + direction. +*/ +typedef struct CMD_GainTableDS_Get CMD_GainTableDS_Get_t; + +/** Message ID for ACK_GainTableDS_Get */ +#define ACK_GAINTABLEDS_GET 0x090E + +/** + Returns information about the Gain-per-tone for the chosen range of + subcarriers for the downstream direction.(Section 7.5.1.29.3 of G.997.1) as + requested by CMD_GainTableDS_Get. +*/ +typedef struct ACK_GainTableDS_Get ACK_GainTableDS_Get_t; + +/** Message ID for CMD_GainTableUS_Get */ +#define CMD_GAINTABLEUS_GET 0x080E + +/** + Requests information about the Gains per subcarrier for the upstream + direction. +*/ +typedef struct CMD_GainTableUS_Get CMD_GainTableUS_Get_t; + +/** Message ID for ACK_GainTableUS_Get */ +#define ACK_GAINTABLEUS_GET 0x080E + +/** + Returns information about the Gain-per-tone for the chosen range of + subcarriers for the upstream direction.(Section 7.5.1.29.4 of G.997.1) +*/ +typedef struct ACK_GainTableUS_Get ACK_GainTableUS_Get_t; + +/** Message ID for CMD_ADSL_ExMarginReductionGet */ +#define CMD_ADSL_EXMARGINREDUCTIONGET 0x2F03 + +/** + Requests information about the Excess Margin Reduction needed for the fine + gain calculation at the ATU_R.(See also ACK_GainTableDS_Get). +*/ +typedef struct CMD_ADSL_ExMarginReductionGet CMD_ADSL_ExMarginReductionGet_t; + +/** Message ID for ACK_ADSL_ExMarginReductionGet */ +#define ACK_ADSL_EXMARGINREDUCTIONGET 0x2F03 + +/** + Returns information about the Excess Margin Reduction for the downstream + direction. +*/ +typedef struct ACK_ADSL_ExMarginReductionGet ACK_ADSL_ExMarginReductionGet_t; + +/** Message ID for CMD_HlogDS_Get */ +#define CMD_HLOGDS_GET 0x4A03 + +/** + Requests information about the downstream HLOG information per subcarrier + group (Section 7.5.1.26.6 of G.997.1).During STEADY_STATE, the command can be + used in VDSL to request near-end data only (CPE). For the far-end HLOG to be + provided via the EOC channel CMD_TestParamsFE_Request must be used. In ADSL, + the command can be applied for near-end as well as far-end parameters.During + loop diagnostic mode, the command shall be used to request both near-end and + far-end data. +*/ +typedef struct CMD_HlogDS_Get CMD_HlogDS_Get_t; + +/** Message ID for ACK_HlogDS_Get */ +#define ACK_HLOGDS_GET 0x4A03 + +/** + Returns information about the downstream HLOG per subcarrier group for the + chosen range. (Section 7.5.1.26.6 of G.997.1) +*/ +typedef struct ACK_HlogDS_Get ACK_HlogDS_Get_t; + +/** Message ID for CMD_HlogUS_Get */ +#define CMD_HLOGUS_GET 0x4B03 + +/** + Requests information about the upstream HLOG information per subcarrier group + (Section 7.5.1.26.11 of G.997.1). +*/ +typedef struct CMD_HlogUS_Get CMD_HlogUS_Get_t; + +/** Message ID for ACK_HlogUS_Get */ +#define ACK_HLOGUS_GET 0x4B03 + +/** + Returns information about the upstream HLOG per subcarrier group for the + chosen range. (Section 7.5.1.26.11 of G.997.1) +*/ +typedef struct ACK_HlogUS_Get ACK_HlogUS_Get_t; + +/** Message ID for CMD_HlinDS_Get */ +#define CMD_HLINDS_GET 0x4803 + +/** + Requests information about the downstream HLIN information per subcarrier + group. (Section 7.5.1.26.3 of G.997.1).The HLIN data are available during + loop diagnostic mode only. +*/ +typedef struct CMD_HlinDS_Get CMD_HlinDS_Get_t; + +/** Message ID for ACK_HlinDS_Get */ +#define ACK_HLINDS_GET 0x4803 + +/** + Returns information about the downstream HLIN per subcarrier group for the + chosen range. (Section 7.5.1.26.3 of G.997.1) +*/ +typedef struct ACK_HlinDS_Get ACK_HlinDS_Get_t; + +/** Message ID for CMD_HlinUS_Get */ +#define CMD_HLINUS_GET 0x4903 + +/** + Requests information about the upstream HLIN information per subcarrier + group. (Section 7.5.1.26.9 of G.997.1).The HLIN data are available in loop + diagnostic mode only. +*/ +typedef struct CMD_HlinUS_Get CMD_HlinUS_Get_t; + +/** Message ID for ACK_HlinUS_Get */ +#define ACK_HLINUS_GET 0x4903 + +/** + Returns information about the upstream HLIN per subcarrier group for the + chosen range. (Section 7.5.1.26.9 of G.997.1) +*/ +typedef struct ACK_HlinUS_Get ACK_HlinUS_Get_t; + +/** Message ID for CMD_QLN_DS_Get */ +#define CMD_QLN_DS_GET 0x4C03 + +/** + Requests information about the downstream QLN information (QLNpsds) per + subcarrier group (Section 7.5.1.27.3 of G.997.1).During STEADY_STATE, the + command can be used in VDSL to request near-end data only (CPE). +*/ +typedef struct CMD_QLN_DS_Get CMD_QLN_DS_Get_t; + +/** Message ID for ACK_QLN_DS_Get */ +#define ACK_QLN_DS_GET 0x4C03 + +/** + Returns information about the QLN per subcarrier group for the chosen range. + (Section 7.5.1.27.3 of G.997.1) +*/ +typedef struct ACK_QLN_DS_Get ACK_QLN_DS_Get_t; + +/** Message ID for CMD_QLN_US_Get */ +#define CMD_QLN_US_GET 0x4D03 + +/** + Requests information about the upstream QLN (QLNpsus) per subcarrier group. + (Section 7.5.1.27.6 of G.997.1). +*/ +typedef struct CMD_QLN_US_Get CMD_QLN_US_Get_t; + +/** Message ID for ACK_QLN_US_Get */ +#define ACK_QLN_US_GET 0x4D03 + +/** + Returns information about the QLN per subcarrier group for the chosen range. + (Section 7.5.1.27.6 of G.997.1) +*/ +typedef struct ACK_QLN_US_Get ACK_QLN_US_Get_t; + +/** Message ID for CMD_SNR_DS_Get */ +#define CMD_SNR_DS_GET 0x5503 + +/** + Requests information about the downstream SNR per subcarrier group in VDSL or + the SNR per subcarrier in ADSL, both without considering virtual noise + (Section 7.5.1.28.3 of G.997.1). +*/ +typedef struct CMD_SNR_DS_Get CMD_SNR_DS_Get_t; + +/** Message ID for ACK_SNR_DS_Get */ +#define ACK_SNR_DS_GET 0x5503 + +/** + Returns information about the SNR per subcarrier (ADSL) or per subcarrier + group (VDSL) for the chosen range without considering virtual noise. (Section + 7.5.1.28.3 of G.997.1) +*/ +typedef struct ACK_SNR_DS_Get ACK_SNR_DS_Get_t; + +/** Message ID for CMD_SNR_US_Get */ +#define CMD_SNR_US_GET 0x4E03 + +/** + Requests information about the upstream SNR per subcarrier group (Section + 7.5.1.28.6 of G.997.1). +*/ +typedef struct CMD_SNR_US_Get CMD_SNR_US_Get_t; + +/** Message ID for ACK_SNR_US_Get */ +#define ACK_SNR_US_GET 0x4E03 + +/** + Returns information about the upstream SNR per subcarrier group for the + chosen range. (Section 7.5.1.28.6 of G.997.1) +*/ +typedef struct ACK_SNR_US_Get ACK_SNR_US_Get_t; + +/** Message ID for CMD_TestParamsAuxDS_Get */ +#define CMD_TESTPARAMSAUXDS_GET 0x4F03 + +/** + Requests test parameter related information for the downstream direction: The + HLIN scaling factor (HLINSCds), the subcarrier group size "G" and the + measurement times for HLOGpsds, QLNpsds, SNRpsds.(Sections 7.5.1.26.1/2/4/5, + 7.5.1.27.1/2 and 7.5.1.28.1/2 of G.997.1) +*/ +typedef struct CMD_TestParamsAuxDS_Get CMD_TestParamsAuxDS_Get_t; + +/** Message ID for ACK_TestParamsAuxDS_Get */ +#define ACK_TESTPARAMSAUXDS_GET 0x4F03 + +/** + Provides the test-parameter related information as requested by + CMD_TestParamsAuxDS_Get: The HLIN scaling factor (HLINSCds), the subcarrier + group size "G" and the measurement times for HLOGpsds, QLNpsds, + SNRpsds.(Sections 7.5.1.26.1/2/4/5, 7.5.1.27.1/2 and 7.5.1.28.1/2 of G.997.1) +*/ +typedef struct ACK_TestParamsAuxDS_Get ACK_TestParamsAuxDS_Get_t; + +/** Message ID for CMD_TestParamsAuxUS_Get */ +#define CMD_TESTPARAMSAUXUS_GET 0x5003 + +/** + Requests test parameter related information for the upstream direction: The + HLIN scaling factor (HLINSCus), the subcarrier group size "G" and the + measurement times for HLOGpsus, QLNpsus, SNRpsus.For older VDSL FW versions + from w.6.x.y.z.a to 5.8.0.x.y.z: During STEADY_STATE, the command can be used + only to retrieve the "group size" parameters. To get the measurement time + parameters (via the EOC channel) the message CMD_TestParamsFE_Request must be + applied instead.(Sections 7.5.1.26.7/8/10/11, 7.5.1.27.4/5 and 7.5.1.28.4/5 + of G.997.1)For older VDSL FW versions from w.6.x.y.z.a to 5.8.0.x.y.z: During + STEADY_STATE, the command can be used only to retrieve the "group size" + parameters. To get the measurement time parameters (via the EOC channel) the + message CMD_TestParamsFE_Request must be applied instead.The test parameters + can be requested during loop diagnostic mode (VDSL, ADSL) and in ADSL also + during STEADY_STATE.For older VDSL FW versions from w.6.x.y.z.a to + 5.8.0.x.y.z: During STEADY_STATE, the command can be used only to retrieve + the "group size" parameters. To get the measurement time parameters (via the + EOC channel) the message CMD_TestParamsFE_Request must be applied instead. +*/ +typedef struct CMD_TestParamsAuxUS_Get CMD_TestParamsAuxUS_Get_t; + +/** Message ID for ACK_TestParamsAuxUS_Get */ +#define ACK_TESTPARAMSAUXUS_GET 0x5003 + +/** + Provides the test-parameter related information as requested by + CMD_TestParamsAuxUS_Get: The HLIN scaling factor (HLINSCus), the subcarrier + group size "G" and the measurement times for HLOGpsus, QLNpsus, SNRpsus. +*/ +typedef struct ACK_TestParamsAuxUS_Get ACK_TestParamsAuxUS_Get_t; + +/** Message ID for CMD_TestParamsFE_Request */ +#define CMD_TESTPARAMSFE_REQUEST 0x0849 + +/** + This message is used to trigger retrieval of the far-end PMD Test Parameters + Hlog, SNR and QLN via the EOC channel during Showtime. If StartIndex or + EndIndex do not contain values in a valid range then no autonomous message + will be sent by the firmware. Once the retrieval process is started, it can + also be aborted with this message via the control parameter. The status of + the parameter retrieval process can be polled via the CMD_TestParamsFE_Poll + message. Once the parameters are retrieved, they are provided with the + EVT_PMD_TestParamsGet message. +*/ +typedef struct CMD_TestParamsFE_Request CMD_TestParamsFE_Request_t; + +/** Message ID for ACK_TestParamsFE_Request */ +#define ACK_TESTPARAMSFE_REQUEST 0x0849 + +/** + This is the acknowledgement for CMD_TestParamsFE_Request. +*/ +typedef struct ACK_TestParamsFE_Request ACK_TestParamsFE_Request_t; + +/** Message ID for CMD_TestParamsFE_Poll */ +#define CMD_TESTPARAMSFE_POLL 0x0809 + +/** + This message polls the status of the far end parameter retrieval process. +*/ +typedef struct CMD_TestParamsFE_Poll CMD_TestParamsFE_Poll_t; + +/** Message ID for ACK_TestParamsFE_Poll */ +#define ACK_TESTPARAMSFE_POLL 0x0809 + +/** + This is the acknowledgement for CMD_TestParamsFE_Poll. +*/ +typedef struct ACK_TestParamsFE_Poll ACK_TestParamsFE_Poll_t; + +/** Message ID for EVT_PMD_TestParamsGet */ +#define EVT_PMD_TESTPARAMSGET 0x5803 + +/** + This event message provides the far-end data after the far end data retrieval + process. This message is a result of the CMD_TestParamsFE_Request message. +*/ +typedef struct EVT_PMD_TestParamsGet EVT_PMD_TestParamsGet_t; + +/** Message ID for CMD_ClearEOC_Configure */ +#define CMD_CLEAREOC_CONFIGURE 0x0A49 + +/** + The message is used to configure the autonomous messaging related to Clear + EOC transmission. +*/ +typedef struct CMD_ClearEOC_Configure CMD_ClearEOC_Configure_t; + +/** Message ID for ACK_ClearEOC_Configure */ +#define ACK_CLEAREOC_CONFIGURE 0x0A49 + +/** + This is the acknowledgement for CMD_ClearEOC_Configure. +*/ +typedef struct ACK_ClearEOC_Configure ACK_ClearEOC_Configure_t; + +/** Message ID for CMD_ClearEOC_TxTrigger */ +#define CMD_CLEAREOC_TXTRIGGER 0x0949 + +/** + The message is used to trigger the transmission of Clear EOC messages that + were placed into the Clear EOC transmit buffer before with + CMD_ClearEOC_Write. +*/ +typedef struct CMD_ClearEOC_TxTrigger CMD_ClearEOC_TxTrigger_t; + +/** Message ID for ACK_ClearEOC_TxTrigger */ +#define ACK_CLEAREOC_TXTRIGGER 0x0949 + +/** + This is the acknowledgement for CMD_ClearEOC_TxTrigger. +*/ +typedef struct ACK_ClearEOC_TxTrigger ACK_ClearEOC_TxTrigger_t; + +/** Message ID for CMD_ClearEOC_Write */ +#define CMD_CLEAREOC_WRITE 0x5143 + +/** + This message is used to write data to the ClearEOC write buffer of type + VRX_ClearEOC_t. When the buffer is filled, the transmission is started + applying CMD_ClearEOC_TxTrigger. If the message to transmit is longer than + the mailbox size, a sequence of writes to the ClearEOC buffer has to be done + before the transmission is started with CMD_ClearEOC_TxTrigger. When + autonomous TX status messaging is activated via CMD_ClearEOC_Configure, then + the finished transmission is indicated by EVT_ClearEOCStatusGet. +*/ +typedef struct CMD_ClearEOC_Write CMD_ClearEOC_Write_t; + +/** Message ID for ACK_ClearEOC_Write */ +#define ACK_CLEAREOC_WRITE 0x5143 + +/** + This message is the acknowledgement for CMD_ClearEOC_Write. +*/ +typedef struct ACK_ClearEOC_Write ACK_ClearEOC_Write_t; + +/** Message ID for CMD_ClearEOC_Read */ +#define CMD_CLEAREOC_READ 0x5203 + +/** + This message is used to read data from the ClearEOC buffer of type + VRX_ClearEOC_t. The length of the actual Clear EOC message can be found in + the buffer. Please refer to VRX_ClearEOC_t. The availability of data can + either be checked via CMD_ClearEOCStatusGet in polling mode or it can be + reported by an autonomous EVT_ClearEOCStatusGet message when data is received + (to be enabled using CMD_ClearEOC_Configure). +*/ +typedef struct CMD_ClearEOC_Read CMD_ClearEOC_Read_t; + +/** Message ID for ACK_ClearEOC_Read */ +#define ACK_CLEAREOC_READ 0x5203 + +/** + This message is the acknowledgement to CMD_ClearEOC_Read. +*/ +typedef struct ACK_ClearEOC_Read ACK_ClearEOC_Read_t; + +/** Message ID for EVT_ClearEOC_Read */ +#define EVT_CLEAREOC_READ 0x5203 + +/** + This message is an autonomous message that is generated when ClearEOC data + was received and autonomous Clear EOC data messaging has been activated via + CMD_ClearEOC_Configure. If the ClearEOC data does not fit in one message, + then a sequence of messages is generated. The ClearEOC buffer is of type + VRX_ClearEOC_t. +*/ +typedef struct EVT_ClearEOC_Read EVT_ClearEOC_Read_t; + +/** Message ID for CMD_ClearEOCStatusGet */ +#define CMD_CLEAREOCSTATUSGET 0x0B09 + +/** + This message is used to retrieve the status of the clear eoc data + transmission. +*/ +typedef struct CMD_ClearEOCStatusGet CMD_ClearEOCStatusGet_t; + +/** Message ID for ACK_ClearEOCStatusGet */ +#define ACK_CLEAREOCSTATUSGET 0x0B09 + +/** + This is the acknowledgement for CMD_ClearEOCStatusGet. +*/ +typedef struct ACK_ClearEOCStatusGet ACK_ClearEOCStatusGet_t; + +/** Message ID for EVT_ClearEOCStatusGet */ +#define EVT_CLEAREOCSTATUSGET 0x0B09 + +/** + This autonomous message reports the Clear EOC status. It is sent only if the + "Autonomous Status Message Control" was enabled for TX and/or RX direction + with CMD_ClearEOC_Configure. If TX direction is enabled, the message is + generated when a TX transmission is finished or failed. If RX direction is + enabled, the message is generated when the RX status transitions from "Idle" + to "Data Available" for retrieval by the host. +*/ +typedef struct EVT_ClearEOCStatusGet EVT_ClearEOCStatusGet_t; + +/** Message ID for CMD_ClearEOCStatusSet */ +#define CMD_CLEAREOCSTATUSSET 0x0B49 + +/** + The message is used to reset the transmit or receive status of the clear eoc + data transmission to IDLE (for defined states see also + CMD_ClearEOCStatusGet). See the description on the Clear EOC handling on Page + 540 for when it has to be applied. Transmit and receive status are + distinguished by the Index parameter. +*/ +typedef struct CMD_ClearEOCStatusSet CMD_ClearEOCStatusSet_t; + +/** Message ID for ACK_ClearEOCStatusSet */ +#define ACK_CLEAREOCSTATUSSET 0x0B49 + +/** + This is the acknowledgement for CMD_ClearEOCStatusSet. +*/ +typedef struct ACK_ClearEOCStatusSet ACK_ClearEOCStatusSet_t; + +/** Message ID for CMD_OH_OptionsSet */ +#define CMD_OH_OPTIONSSET 0x1945 + +/** + Configuration of options for the overhead handling. +*/ +typedef struct CMD_OH_OptionsSet CMD_OH_OptionsSet_t; + +/** Message ID for ACK_OH_OptionsSet */ +#define ACK_OH_OPTIONSSET 0x1945 + +/** + Acknowledgement for CMD_OH_OptionsSet. +*/ +typedef struct ACK_OH_OptionsSet ACK_OH_OptionsSet_t; + +/** Message ID for CMD_OH_StatsGet */ +#define CMD_OH_STATSGET 0x0F03 + +/** + Requests OH polling statistic information. +*/ +typedef struct CMD_OH_StatsGet CMD_OH_StatsGet_t; + +/** Message ID for ACK_OH_StatsGet */ +#define ACK_OH_STATSGET 0x0F03 + +/** + Reports the OH polling statistics as requested by CMD_OH_StatsGet. +*/ +typedef struct ACK_OH_StatsGet ACK_OH_StatsGet_t; + +/** Message ID for CMD_OLR_Control */ +#define CMD_OLR_CONTROL 0x0F45 + +/** + Enables/Disables support for OLR events (Bitswaps, SRA, SOS, ROC).An OLR + transition is always initiated by the receiving PMD, so the CPE requests the + OLR event for downstream direction. +*/ +typedef struct CMD_OLR_Control CMD_OLR_Control_t; + +/** Message ID for ACK_OLR_Control */ +#define ACK_OLR_CONTROL 0x0F45 + +/** + Acknowledgement for CMD_OLR_Control. +*/ +typedef struct ACK_OLR_Control ACK_OLR_Control_t; + +/** Message ID for CMD_OLR_US_StatsGet */ +#define CMD_OLR_US_STATSGET 0x5F03 + +/** + Requests the OLR status information on bit swaps, DRR, SRA and SOS events for + the upstream direction. +*/ +typedef struct CMD_OLR_US_StatsGet CMD_OLR_US_StatsGet_t; + +/** Message ID for ACK_OLR_US_StatsGet */ +#define ACK_OLR_US_STATSGET 0x5F03 + +/** + Reports the OLR status information for the upstream direction as requested by + CMD_OLR_US_StatsGet. +*/ +typedef struct ACK_OLR_US_StatsGet ACK_OLR_US_StatsGet_t; + +/** Message ID for CMD_OLR_DS_StatsGet */ +#define CMD_OLR_DS_STATSGET 0x6003 + +/** + Requests the OLR status information on bit swaps, DRR, SRA and SOS events for + the downstream direction. +*/ +typedef struct CMD_OLR_DS_StatsGet CMD_OLR_DS_StatsGet_t; + +/** Message ID for ACK_OLR_DS_StatsGet */ +#define ACK_OLR_DS_STATSGET 0x6003 + +/** + Reports the OLR status information for the downstream direction as requested + by CMD_OLR_DS_StatsGet. +*/ +typedef struct ACK_OLR_DS_StatsGet ACK_OLR_DS_StatsGet_t; + +/** Message ID for CMD_RA_ModeDS_Get */ +#define CMD_RA_MODEDS_GET 0xD903 + +/** + Requests the actual active downstream RA mode (ACT-RA-MODEds, Section + 7.5.1.33.1 of G.997.1). +*/ +typedef struct CMD_RA_ModeDS_Get CMD_RA_ModeDS_Get_t; + +/** Message ID for ACK_RA_ModeDS_Get */ +#define ACK_RA_MODEDS_GET 0xD903 + +/** + Reports the actual active downstream RA mode (ACT-RA-MODEds) as requested by + CMD_RA_ModeDS_Get. +*/ +typedef struct ACK_RA_ModeDS_Get ACK_RA_ModeDS_Get_t; + +/** Message ID for CMD_RA_ModeUS_Get */ +#define CMD_RA_MODEUS_GET 0xDB03 + +/** + Requests the actual active upstream RA mode (ACT-RA-MODEus, Section + 7.5.1.33.2 of G.997.1). +*/ +typedef struct CMD_RA_ModeUS_Get CMD_RA_ModeUS_Get_t; + +/** Message ID for ACK_RA_ModeUS_Get */ +#define ACK_RA_MODEUS_GET 0xDB03 + +/** + Reports the actual active upstream RA mode (ACT-RA-MODEus) as requested by + CMD_RA_ModeUS_Get. +*/ +typedef struct ACK_RA_ModeUS_Get ACK_RA_ModeUS_Get_t; + +/** Message ID for EVT_OLR_US_EventGet */ +#define EVT_OLR_US_EVENTGET 0x0307 + +/** + Autonomous message indicating a successful upstream OLR event (SRA or SOS). +*/ +typedef struct EVT_OLR_US_EventGet EVT_OLR_US_EventGet_t; + +/** Message ID for EVT_OLR_DS_EventGet */ +#define EVT_OLR_DS_EVENTGET 0x0407 + +/** + Autonomous message indicating a successful downstream OLR event (SRA or SOS). +*/ +typedef struct EVT_OLR_DS_EventGet EVT_OLR_DS_EventGet_t; + +/** Message ID for CMD_OLR_US_EventConfigure */ +#define CMD_OLR_US_EVENTCONFIGURE 0x0F49 + +/** + Enables/Disables the generation of EVENT messages (EVT) for specific upstream + OLR events. If the corresponding Enable bit for an OLR event is set, then the + modem firmware will send an autonomous message EVT_OLR_US_EventGet if the OLR + event happened in the last 1-second interval. +*/ +typedef struct CMD_OLR_US_EventConfigure CMD_OLR_US_EventConfigure_t; + +/** Message ID for ACK_OLR_US_EventConfigure */ +#define ACK_OLR_US_EVENTCONFIGURE 0x0F49 + +/** + Acknoledgement for CMD_OLR_US_EventConfigure. +*/ +typedef struct ACK_OLR_US_EventConfigure ACK_OLR_US_EventConfigure_t; + +/** Message ID for CMD_OLR_DS_EventConfigure */ +#define CMD_OLR_DS_EVENTCONFIGURE 0x1049 + +/** + Enables/Disables the generation of EVENT messages (EVT) for specific + downstream OLR events. If the corresponding Enable bit for an OLR event is + set, then the modem firmware will send an autonomous message + EVT_OLR_DS_EventGet if the OLR event happened in the last 1-second interval. +*/ +typedef struct CMD_OLR_DS_EventConfigure CMD_OLR_DS_EventConfigure_t; + +/** Message ID for ACK_OLR_DS_EventConfigure */ +#define ACK_OLR_DS_EVENTCONFIGURE 0x1049 + +/** + Acknoledgement for CMD_OLR_DS_EventConfigure. +*/ +typedef struct ACK_OLR_DS_EventConfigure ACK_OLR_DS_EventConfigure_t; + +/** Message ID for CMD_RTX_Control */ +#define CMD_RTX_CONTROL 0x5048 + +/** + Configures a link for retransmission of downstream data. For using the RTX + function, this message has to be sent. +*/ +typedef struct CMD_RTX_Control CMD_RTX_Control_t; + +/** Message ID for ACK_RTX_Control */ +#define ACK_RTX_CONTROL 0x5048 + +/** + Acknowledgement for CMD_RTX_Control. +*/ +typedef struct ACK_RTX_Control ACK_RTX_Control_t; + +/** Message ID for CMD_RTX_BearerChsDS_Get */ +#define CMD_RTX_BEARERCHSDS_GET 0x0206 + +/** + Requests RTX specific status information for the downstream bearer channels + if G.INP retransmission is used. +*/ +typedef struct CMD_RTX_BearerChsDS_Get CMD_RTX_BearerChsDS_Get_t; + +/** Message ID for ACK_RTX_BearerChsDS_Get */ +#define ACK_RTX_BEARERCHSDS_GET 0x0206 + +/** + Delivers status information for the downstream bearer channels when G.INP + retransmission is actually used. +*/ +typedef struct ACK_RTX_BearerChsDS_Get ACK_RTX_BearerChsDS_Get_t; + +/** Message ID for CMD_RTX_BearerChsUS_Get */ +#define CMD_RTX_BEARERCHSUS_GET 0x0306 + +/** + Requests RTX specific status information for the upstream bearer channels if + upstream G.INP retransmission is used. +*/ +typedef struct CMD_RTX_BearerChsUS_Get CMD_RTX_BearerChsUS_Get_t; + +/** Message ID for ACK_RTX_BearerChsUS_Get */ +#define ACK_RTX_BEARERCHSUS_GET 0x0306 + +/** + Delivers status information for the upstream bearer channels when upstream + G.INP retransmission is used. +*/ +typedef struct ACK_RTX_BearerChsUS_Get ACK_RTX_BearerChsUS_Get_t; + +/** Message ID for CMD_RTX_PM_DS_Get */ +#define CMD_RTX_PM_DS_GET 0x2B0A + +/** + Requests performance monitoring counters for downstream G.INP retransmission. +*/ +typedef struct CMD_RTX_PM_DS_Get CMD_RTX_PM_DS_Get_t; + +/** Message ID for ACK_RTX_PM_DS_Get */ +#define ACK_RTX_PM_DS_GET 0x2B0A + +/** + Delivers performance monitoring counters for downstream G.INP retransmission. +*/ +typedef struct ACK_RTX_PM_DS_Get ACK_RTX_PM_DS_Get_t; + +/** Message ID for CMD_RTX_PM_US_Get */ +#define CMD_RTX_PM_US_GET 0x3B0A + +/** + Requests performance monitoring counters for upstream G.INP retransmission. +*/ +typedef struct CMD_RTX_PM_US_Get CMD_RTX_PM_US_Get_t; + +/** Message ID for ACK_RTX_PM_US_Get */ +#define ACK_RTX_PM_US_GET 0x3B0A + +/** + Delivers performance monitoring counters for upstream G.INP retransmission. + They are all far-end parameters received from CO. +*/ +typedef struct ACK_RTX_PM_US_Get ACK_RTX_PM_US_Get_t; + +/** Message ID for CMD_RTX_DS_StatsGet */ +#define CMD_RTX_DS_STATSGET 0x2C0A + +/** + Requests DTU counters for G.INP downstream retransmission. +*/ +typedef struct CMD_RTX_DS_StatsGet CMD_RTX_DS_StatsGet_t; + +/** Message ID for ACK_RTX_DS_StatsGet */ +#define ACK_RTX_DS_STATSGET 0x2C0A + +/** + Delivers DTU counters for G.INP downstream retransmission. The counters are + Non-TR1 wrap-around counters, which are reset at reboot only. +*/ +typedef struct ACK_RTX_DS_StatsGet ACK_RTX_DS_StatsGet_t; + +/** Message ID for CMD_RTX_US_StatsGet */ +#define CMD_RTX_US_STATSGET 0x3A0A + +/** + Requests DTU counters for G.INP upstream retransmission, which is defined for + VDSL only. +*/ +typedef struct CMD_RTX_US_StatsGet CMD_RTX_US_StatsGet_t; + +/** Message ID for ACK_RTX_US_StatsGet */ +#define ACK_RTX_US_STATSGET 0x3A0A + +/** + Delivers DTU counters for G.INP upstream retransmission. The counters are + Non-TR1 wrap-around counters, which are reset at reboot only. +*/ +typedef struct ACK_RTX_US_StatsGet ACK_RTX_US_StatsGet_t; + +/** Message ID for CMD_RTX_StatusGet */ +#define CMD_RTX_STATUSGET 0xE503 + +/** + Requests the actually used G.INP retransmission status. +*/ +typedef struct CMD_RTX_StatusGet CMD_RTX_StatusGet_t; + +/** Message ID for ACK_RTX_StatusGet */ +#define ACK_RTX_STATUSGET 0xE503 + +/** + Provides the actually used G.INP retransmission status. +*/ +typedef struct ACK_RTX_StatusGet ACK_RTX_StatusGet_t; + +/** Message ID for CMD_RTX_US_FrameDataGet */ +#define CMD_RTX_US_FRAMEDATAGET 0xED03 + +/** + Requests upstream G.INP retransmission specific framing parameters and other + status parameters. They are always associated with bearer channel 0. +*/ +typedef struct CMD_RTX_US_FrameDataGet CMD_RTX_US_FrameDataGet_t; + +/** Message ID for ACK_RTX_US_FrameDataGet */ +#define ACK_RTX_US_FRAMEDATAGET 0xED03 + +/** + Delivers upstream retransmission specific framing parameters and other status + parameters, as requested by CMD_RTX_US_FrameDataGet. They are always + associated with bearer channel 0.In addition, the usual framing parameters + are to be retrieved with CMD_FrameDataExt2US_Get. +*/ +typedef struct ACK_RTX_US_FrameDataGet ACK_RTX_US_FrameDataGet_t; + +/** Message ID for CMD_RTX_US_Roundtrip_Get */ +#define CMD_RTX_US_ROUNDTRIP_GET 0xEF03 + +/** + Requests the G.INP upstream retransmission measured roundtrip. +*/ +typedef struct CMD_RTX_US_Roundtrip_Get CMD_RTX_US_Roundtrip_Get_t; + +/** Message ID for ACK_RTX_US_Roundtrip_Get */ +#define ACK_RTX_US_ROUNDTRIP_GET 0xEF03 + +/** + Provides the G.INP upstream retransmission measured roundtrip delay. For + measuring the roundtrip, following difference is built when a correct RRC + codeword has been received: AbsoluteDTUCount of transmitter for next possible + DTU transmission minus AbsoluteDTUCount as received in RRC codeword. +*/ +typedef struct ACK_RTX_US_Roundtrip_Get ACK_RTX_US_Roundtrip_Get_t; + +/** Message ID for CMD_DSM_Control */ +#define CMD_DSM_CONTROL 0x5248 + +/** + Enables/Disables support for full vectoring (G.993.5) and full vector- + friendly operation (G.993.2 Annex Y). In case of ADSL, this only means the + indication of the (VDSL) vectoring capabilities during G.Handshake. +*/ +typedef struct CMD_DSM_Control CMD_DSM_Control_t; + +/** Message ID for ACK_DSM_Control */ +#define ACK_DSM_CONTROL 0x5248 + +/** + Acknowledgement to CMD_DSM_Control. +*/ +typedef struct ACK_DSM_Control ACK_DSM_Control_t; + +/** Message ID for EVT_DSM_ErrorVectorReady */ +#define EVT_DSM_ERRORVECTORREADY 0x1109 + +/** + This autononmous message indicates that new downstream DSM error vector data + were written by the DSL FW into the SDRAM. Generation of this EVT message is + enabled/disabled together with the G.993.5 vectoring functionality itself, by + means of CMD_DSM_Control, parameter "Vector". +*/ +typedef struct EVT_DSM_ErrorVectorReady EVT_DSM_ErrorVectorReady_t; + +/** Message ID for CMD_DSM_StatsGet */ +#define CMD_DSM_STATSGET 0x370A + +/** + Requests vectoring debug counter values. +*/ +typedef struct CMD_DSM_StatsGet CMD_DSM_StatsGet_t; + +/** Message ID for ACK_DSM_StatsGet */ +#define ACK_DSM_STATSGET 0x370A + +/** + Delivers vectoring debug counters. +*/ +typedef struct ACK_DSM_StatsGet ACK_DSM_StatsGet_t; + +/** + Requests information about the bit-allocation per subcarrier in VDSL mode. + The values for all subcarriers of both directions can be retrieved. (For ADSL + use CMD_BAT_DS_Get and CMD_BAT_US_Get). +*/ +struct CMD_BAT_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the bit-allocation per tone for the chosen range of + subcarriers.(Section 7.5.1.29.1-2 of G.997.1) +*/ +struct ACK_BAT_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bit Allocation */ + VRX_BAT_TableEntry_t BAT[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bit Allocation */ + VRX_BAT_TableEntry_t BAT[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the Gains per subcarrier. The values for all + subcarriers of both directions can be retrieved.(For ADSL use + CMD_GainTableDS_Get and CMD_GainTableUS_Get). +*/ +struct CMD_GainTableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the Gain-per-tone for the chosen range of + subcarriers.(Section 7.5.1.29.3-4 of G.997.1) +*/ +struct ACK_GainTableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Gains */ + DSL_uint16_t Gains[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Gains */ + DSL_uint16_t Gains[128]; +#endif +} __PACKED__ ; + + +/** + The message requests information about the SNR per subcarrier with virtual + noise for the near-end side , which means for downstream direction at the + CPE. It is the hosts responsibility to select the tone indices + accordingly.See also Table 20 "How to Retrieve Test Parameter Data" on Page + 496. +*/ +struct CMD_SNR_NE_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the SNR per subcarrier with virtual noise for the + near-end side, meaning for downstream direction. +*/ +struct ACK_SNR_NE_TableEntriesGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SNR */ + DSL_uint16_t SNRps[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SNR */ + DSL_uint16_t SNRps[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the downstream bit-allocation per subcarrier in + ADSL mode. +*/ +struct CMD_BAT_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the downstream bit-allocation per tone for the + chosen range of subcarriers.(Section 7.5.1.29.1 of G.997.1) +*/ +struct ACK_BAT_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bit Allocation */ + VRX_BAT_TableEntry_t BAT[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bit Allocation */ + VRX_BAT_TableEntry_t BAT[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the upstream bit-allocation per subcarrier in ADSL + mode. +*/ +struct CMD_BAT_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the upstream bit-allocation per tone for the chosen + range of subcarriers.(Section 7.5.1.29.2 of G.997.1) +*/ +struct ACK_BAT_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bit Allocation */ + VRX_BAT_TableEntry_t BAT[32]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Bit Allocation */ + VRX_BAT_TableEntry_t BAT[32]; +#endif +} __PACKED__ ; + + +/** + Requests information about the Gains per subcarrier for the downstream + direction. +*/ +struct CMD_GainTableDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the Gain-per-tone for the chosen range of + subcarriers for the downstream direction.(Section 7.5.1.29.3 of G.997.1) as + requested by CMD_GainTableDS_Get. +*/ +struct ACK_GainTableDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Gains */ + DSL_uint16_t Gains[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Gains */ + DSL_uint16_t Gains[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the Gains per subcarrier for the upstream + direction. +*/ +struct CMD_GainTableUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the Gain-per-tone for the chosen range of + subcarriers for the upstream direction.(Section 7.5.1.29.4 of G.997.1) +*/ +struct ACK_GainTableUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Gains */ + DSL_uint16_t Gains[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Gains */ + DSL_uint16_t Gains[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the Excess Margin Reduction needed for the fine + gain calculation at the ATU_R.(See also ACK_GainTableDS_Get). +*/ +struct CMD_ADSL_ExMarginReductionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the Excess Margin Reduction for the downstream + direction. +*/ +struct ACK_ADSL_ExMarginReductionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Excess Margin Reduction */ + DSL_uint16_t eSnrmReduction; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Excess Margin Reduction */ + DSL_uint16_t eSnrmReduction; +#endif +} __PACKED__ ; + + +/** + Requests information about the downstream HLOG information per subcarrier + group (Section 7.5.1.26.6 of G.997.1).During STEADY_STATE, the command can be + used in VDSL to request near-end data only (CPE). For the far-end HLOG to be + provided via the EOC channel CMD_TestParamsFE_Request must be used. In ADSL, + the command can be applied for near-end as well as far-end parameters.During + loop diagnostic mode, the command shall be used to request both near-end and + far-end data. +*/ +struct CMD_HlogDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the downstream HLOG per subcarrier group for the + chosen range. (Section 7.5.1.26.6 of G.997.1) +*/ +struct ACK_HlogDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLOG per SG: HLOGpsds */ + DSL_uint16_t HLOGpsds[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLOG per SG: HLOGpsds */ + DSL_uint16_t HLOGpsds[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the upstream HLOG information per subcarrier group + (Section 7.5.1.26.11 of G.997.1). +*/ +struct CMD_HlogUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the upstream HLOG per subcarrier group for the + chosen range. (Section 7.5.1.26.11 of G.997.1) +*/ +struct ACK_HlogUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLOG per SG: HLOGpsus */ + DSL_uint16_t HLOGpsus[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLOG per SG: HLOGpsus */ + DSL_uint16_t HLOGpsus[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the downstream HLIN information per subcarrier + group. (Section 7.5.1.26.3 of G.997.1).The HLIN data are available during + loop diagnostic mode only. +*/ +struct CMD_HlinDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the downstream HLIN per subcarrier group for the + chosen range. (Section 7.5.1.26.3 of G.997.1) +*/ +struct ACK_HlinDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN per SG: HLINpsds */ + VRX_HLIN_t HLINpsds[64]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN per SG: HLINpsds */ + VRX_HLIN_t HLINpsds[64]; +#endif +} __PACKED__ ; + + +/** + Requests information about the upstream HLIN information per subcarrier + group. (Section 7.5.1.26.9 of G.997.1).The HLIN data are available in loop + diagnostic mode only. +*/ +struct CMD_HlinUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the upstream HLIN per subcarrier group for the + chosen range. (Section 7.5.1.26.9 of G.997.1) +*/ +struct ACK_HlinUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN per SG: HLINpsus */ + VRX_HLIN_t HLINpsus[64]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN per SG: HLINpsus */ + VRX_HLIN_t HLINpsus[64]; +#endif +} __PACKED__ ; + + +/** + Requests information about the downstream QLN information (QLNpsds) per + subcarrier group (Section 7.5.1.27.3 of G.997.1).During STEADY_STATE, the + command can be used in VDSL to request near-end data only (CPE). +*/ +struct CMD_QLN_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the QLN per subcarrier group for the chosen range. + (Section 7.5.1.27.3 of G.997.1) +*/ +struct ACK_QLN_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** QLN per SG: QLNpsds */ + VRX_QLN_NE_t QLNds[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** QLN per SG: QLNpsds */ + VRX_QLN_NE_t QLNds[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the upstream QLN (QLNpsus) per subcarrier group. + (Section 7.5.1.27.6 of G.997.1). +*/ +struct CMD_QLN_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the QLN per subcarrier group for the chosen range. + (Section 7.5.1.27.6 of G.997.1) +*/ +struct ACK_QLN_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** QLN per SG: QLNpsus */ + VRX_QLN_NE_t QLNus[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** QLN per SG: QLNpsus */ + VRX_QLN_NE_t QLNus[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the downstream SNR per subcarrier group in VDSL or + the SNR per subcarrier in ADSL, both without considering virtual noise + (Section 7.5.1.28.3 of G.997.1). +*/ +struct CMD_SNR_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the SNR per subcarrier (ADSL) or per subcarrier + group (VDSL) for the chosen range without considering virtual noise. (Section + 7.5.1.28.3 of G.997.1) +*/ +struct ACK_SNR_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SNR per SG: SNRpsds */ + VRX_SNR_t SNRpsds[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SNR per SG: SNRpsds */ + VRX_SNR_t SNRpsds[128]; +#endif +} __PACKED__ ; + + +/** + Requests information about the upstream SNR per subcarrier group (Section + 7.5.1.28.6 of G.997.1). +*/ +struct CMD_SNR_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns information about the upstream SNR per subcarrier group for the + chosen range. (Section 7.5.1.28.6 of G.997.1) +*/ +struct ACK_SNR_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SNR per SG: SNRpsus */ + VRX_SNR_t SNRpsus[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SNR per SG: SNRpsus */ + VRX_SNR_t SNRpsus[128]; +#endif +} __PACKED__ ; + + +/** + Requests test parameter related information for the downstream direction: The + HLIN scaling factor (HLINSCds), the subcarrier group size "G" and the + measurement times for HLOGpsds, QLNpsds, SNRpsds.(Sections 7.5.1.26.1/2/4/5, + 7.5.1.27.1/2 and 7.5.1.28.1/2 of G.997.1) +*/ +struct CMD_TestParamsAuxDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the test-parameter related information as requested by + CMD_TestParamsAuxDS_Get: The HLIN scaling factor (HLINSCds), the subcarrier + group size "G" and the measurement times for HLOGpsds, QLNpsds, + SNRpsds.(Sections 7.5.1.26.1/2/4/5, 7.5.1.27.1/2 and 7.5.1.28.1/2 of G.997.1) +*/ +struct ACK_TestParamsAuxDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN Scaling Factor "HLINSCds" */ + DSL_uint16_t HLINSC; + /** HLIN Subcarrier Group Size DS "HLINGds" */ + DSL_uint16_t HLING; + /** HLOG Measurement Time "HLOGMTds" */ + DSL_uint16_t HLOGMT; + /** HLOG Subcarrier Group Size DS "HLOGGds" */ + DSL_uint16_t HLOGG; + /** QLN Measurment Time "QLNMTds" */ + DSL_uint16_t QLNMT; + /** QLN Subcarrier Group Size DS "QLNGds" */ + DSL_uint16_t QLNG; + /** SNR Measurement Time "SNRMTds" */ + DSL_uint16_t SNRMT; + /** SNR Subcarrier Group Size DS "SNRGds" */ + DSL_uint16_t SNRG; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN Scaling Factor "HLINSCds" */ + DSL_uint16_t HLINSC; + /** HLIN Subcarrier Group Size DS "HLINGds" */ + DSL_uint16_t HLING; + /** HLOG Measurement Time "HLOGMTds" */ + DSL_uint16_t HLOGMT; + /** HLOG Subcarrier Group Size DS "HLOGGds" */ + DSL_uint16_t HLOGG; + /** QLN Measurment Time "QLNMTds" */ + DSL_uint16_t QLNMT; + /** QLN Subcarrier Group Size DS "QLNGds" */ + DSL_uint16_t QLNG; + /** SNR Measurement Time "SNRMTds" */ + DSL_uint16_t SNRMT; + /** SNR Subcarrier Group Size DS "SNRGds" */ + DSL_uint16_t SNRG; +#endif +} __PACKED__ ; + + +/** + Requests test parameter related information for the upstream direction: The + HLIN scaling factor (HLINSCus), the subcarrier group size "G" and the + measurement times for HLOGpsus, QLNpsus, SNRpsus.For older VDSL FW versions + from w.6.x.y.z.a to 5.8.0.x.y.z: During STEADY_STATE, the command can be used + only to retrieve the "group size" parameters. To get the measurement time + parameters (via the EOC channel) the message CMD_TestParamsFE_Request must be + applied instead.(Sections 7.5.1.26.7/8/10/11, 7.5.1.27.4/5 and 7.5.1.28.4/5 + of G.997.1)For older VDSL FW versions from w.6.x.y.z.a to 5.8.0.x.y.z: During + STEADY_STATE, the command can be used only to retrieve the "group size" + parameters. To get the measurement time parameters (via the EOC channel) the + message CMD_TestParamsFE_Request must be applied instead.The test parameters + can be requested during loop diagnostic mode (VDSL, ADSL) and in ADSL also + during STEADY_STATE.For older VDSL FW versions from w.6.x.y.z.a to + 5.8.0.x.y.z: During STEADY_STATE, the command can be used only to retrieve + the "group size" parameters. To get the measurement time parameters (via the + EOC channel) the message CMD_TestParamsFE_Request must be applied instead. +*/ +struct CMD_TestParamsAuxUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the test-parameter related information as requested by + CMD_TestParamsAuxUS_Get: The HLIN scaling factor (HLINSCus), the subcarrier + group size "G" and the measurement times for HLOGpsus, QLNpsus, SNRpsus. +*/ +struct ACK_TestParamsAuxUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN Scaling Factor "HLINSCus" */ + DSL_uint16_t HLINSC; + /** HLIN Subcarrier Group Size US "HLINGus" */ + DSL_uint16_t HLING; + /** HLOG Measurement Time "HLOGMTus" */ + DSL_uint16_t HLOGMT; + /** HLOG Subcarrier Group Size US "HLOGGus" */ + DSL_uint16_t HLOGG; + /** QLN Measurment Time "QLNMTus" */ + DSL_uint16_t QLNMT; + /** QLN Subcarrier Group Size US "QLNGus" */ + DSL_uint16_t QLNG; + /** SNR Measurement Time "SNRMTus" */ + DSL_uint16_t SNRMT; + /** SNR Subcarrier Group Size US "SNRGus" */ + DSL_uint16_t SNRG; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** HLIN Scaling Factor "HLINSCus" */ + DSL_uint16_t HLINSC; + /** HLIN Subcarrier Group Size US "HLINGus" */ + DSL_uint16_t HLING; + /** HLOG Measurement Time "HLOGMTus" */ + DSL_uint16_t HLOGMT; + /** HLOG Subcarrier Group Size US "HLOGGus" */ + DSL_uint16_t HLOGG; + /** QLN Measurment Time "QLNMTus" */ + DSL_uint16_t QLNMT; + /** QLN Subcarrier Group Size US "QLNGus" */ + DSL_uint16_t QLNG; + /** SNR Measurement Time "SNRMTus" */ + DSL_uint16_t SNRMT; + /** SNR Subcarrier Group Size US "SNRGus" */ + DSL_uint16_t SNRG; +#endif +} __PACKED__ ; + + +/** + This message is used to trigger retrieval of the far-end PMD Test Parameters + Hlog, SNR and QLN via the EOC channel during Showtime. If StartIndex or + EndIndex do not contain values in a valid range then no autonomous message + will be sent by the firmware. Once the retrieval process is started, it can + also be aborted with this message via the control parameter. The status of + the parameter retrieval process can be polled via the CMD_TestParamsFE_Poll + message. Once the parameters are retrieved, they are provided with the + EVT_PMD_TestParamsGet message. +*/ +struct CMD_TestParamsFE_Request +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-end Retrieval Control */ + DSL_uint16_t Control; + /** Subcarrier Group Start Index */ + DSL_uint16_t StartIndex; + /** Subcarrier Group End Index */ + DSL_uint16_t EndIndex; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-end Retrieval Control */ + DSL_uint16_t Control; + /** Subcarrier Group Start Index */ + DSL_uint16_t StartIndex; + /** Subcarrier Group End Index */ + DSL_uint16_t EndIndex; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_TestParamsFE_Request. +*/ +struct ACK_TestParamsFE_Request +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This message polls the status of the far end parameter retrieval process. +*/ +struct CMD_TestParamsFE_Poll +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_TestParamsFE_Poll. +*/ +struct ACK_TestParamsFE_Poll +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-end retrieval status */ + DSL_uint16_t Status; + /** Reserved1 */ + DSL_uint16_t Res1; + /** Reserved2 */ + DSL_uint16_t Res2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-end retrieval status */ + DSL_uint16_t Status; + /** Reserved1 */ + DSL_uint16_t Res1; + /** Reserved2 */ + DSL_uint16_t Res2; +#endif +} __PACKED__ ; + + +/** + This event message provides the far-end data after the far end data retrieval + process. This message is a result of the CMD_TestParamsFE_Request message. +*/ +struct EVT_PMD_TestParamsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved1 */ + DSL_uint16_t Res1; + /** Subcarrier Group Start Index */ + DSL_uint16_t StartIndex; + /** Subcarrier Group End Index */ + DSL_uint16_t EndIndex; + /** HLOG Measurement Time HLOGMT */ + DSL_uint16_t hlogTime; + /** SNR Measurement Time SNRMT */ + DSL_uint16_t snrTime; + /** QLN Measurment Time QLNMT */ + DSL_uint16_t qlnTime; + /** Testparameter Result */ + VRX_TestParam_t TestPar[60]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved1 */ + DSL_uint16_t Res1; + /** Subcarrier Group Start Index */ + DSL_uint16_t StartIndex; + /** Subcarrier Group End Index */ + DSL_uint16_t EndIndex; + /** HLOG Measurement Time HLOGMT */ + DSL_uint16_t hlogTime; + /** SNR Measurement Time SNRMT */ + DSL_uint16_t snrTime; + /** QLN Measurment Time QLNMT */ + DSL_uint16_t qlnTime; + /** Testparameter Result */ + VRX_TestParam_t TestPar[60]; +#endif +} __PACKED__ ; + + +/** + The message is used to configure the autonomous messaging related to Clear + EOC transmission. +*/ +struct CMD_ClearEOC_Configure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** RX Autonomous Clear EOC Data Message Control */ + DSL_uint16_t RxEVTdata : 1; + /** RX Autonomous Status Message Control */ + DSL_uint16_t RxEVTstatus : 1; + /** TX Autonomous Status Message Control */ + DSL_uint16_t TxEVTstatus : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TX Autonomous Status Message Control */ + DSL_uint16_t TxEVTstatus : 1; + /** RX Autonomous Status Message Control */ + DSL_uint16_t RxEVTstatus : 1; + /** RX Autonomous Clear EOC Data Message Control */ + DSL_uint16_t RxEVTdata : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_ClearEOC_Configure. +*/ +struct ACK_ClearEOC_Configure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message is used to trigger the transmission of Clear EOC messages that + were placed into the Clear EOC transmit buffer before with + CMD_ClearEOC_Write. +*/ +struct CMD_ClearEOC_TxTrigger +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** Transmit Control Trigger */ + DSL_uint16_t txTrigger : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Transmit Control Trigger */ + DSL_uint16_t txTrigger : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_ClearEOC_TxTrigger. +*/ +struct ACK_ClearEOC_TxTrigger +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This message is used to write data to the ClearEOC write buffer of type + VRX_ClearEOC_t. When the buffer is filled, the transmission is started + applying CMD_ClearEOC_TxTrigger. If the message to transmit is longer than + the mailbox size, a sequence of writes to the ClearEOC buffer has to be done + before the transmission is started with CMD_ClearEOC_TxTrigger. When + autonomous TX status messaging is activated via CMD_ClearEOC_Configure, then + the finished transmission is indicated by EVT_ClearEOCStatusGet. +*/ +struct CMD_ClearEOC_Write +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#endif +} __PACKED__ ; + + +/** + This message is the acknowledgement for CMD_ClearEOC_Write. +*/ +struct ACK_ClearEOC_Write +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This message is used to read data from the ClearEOC buffer of type + VRX_ClearEOC_t. The length of the actual Clear EOC message can be found in + the buffer. Please refer to VRX_ClearEOC_t. The availability of data can + either be checked via CMD_ClearEOCStatusGet in polling mode or it can be + reported by an autonomous EVT_ClearEOCStatusGet message when data is received + (to be enabled using CMD_ClearEOC_Configure). +*/ +struct CMD_ClearEOC_Read +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This message is the acknowledgement to CMD_ClearEOC_Read. +*/ +struct ACK_ClearEOC_Read +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#endif +} __PACKED__ ; + + +/** + This message is an autonomous message that is generated when ClearEOC data + was received and autonomous Clear EOC data messaging has been activated via + CMD_ClearEOC_Configure. If the ClearEOC data does not fit in one message, + then a sequence of messages is generated. The ClearEOC buffer is of type + VRX_ClearEOC_t. +*/ +struct EVT_ClearEOC_Read +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Data */ + DSL_uint16_t Data[128]; +#endif +} __PACKED__ ; + + +/** + This message is used to retrieve the status of the clear eoc data + transmission. +*/ +struct CMD_ClearEOCStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_ClearEOCStatusGet. +*/ +struct ACK_ClearEOCStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Transmit Status */ + DSL_uint16_t txstat : 2; + /** Reserved */ + DSL_uint16_t Res1 : 14; + /** Receive Status */ + DSL_uint16_t rxstat : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Transmit Status */ + DSL_uint16_t txstat : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Receive Status */ + DSL_uint16_t rxstat : 2; + /** Reserved */ + DSL_uint16_t Res1 : 14; +#endif +} __PACKED__ ; + + +/** + This autonomous message reports the Clear EOC status. It is sent only if the + "Autonomous Status Message Control" was enabled for TX and/or RX direction + with CMD_ClearEOC_Configure. If TX direction is enabled, the message is + generated when a TX transmission is finished or failed. If RX direction is + enabled, the message is generated when the RX status transitions from "Idle" + to "Data Available" for retrieval by the host. +*/ +struct EVT_ClearEOCStatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Transmit Status */ + DSL_uint16_t txstat : 2; + /** Reserved */ + DSL_uint16_t Res1 : 14; + /** Receive Status */ + DSL_uint16_t rxstat : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Transmit Status */ + DSL_uint16_t txstat : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Receive Status */ + DSL_uint16_t rxstat : 2; + /** Reserved */ + DSL_uint16_t Res1 : 14; +#endif +} __PACKED__ ; + + +/** + The message is used to reset the transmit or receive status of the clear eoc + data transmission to IDLE (for defined states see also + CMD_ClearEOCStatusGet). See the description on the Clear EOC handling on Page + 540 for when it has to be applied. Transmit and receive status are + distinguished by the Index parameter. +*/ +struct CMD_ClearEOCStatusSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Status */ + DSL_uint16_t stat : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Status */ + DSL_uint16_t stat : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + This is the acknowledgement for CMD_ClearEOCStatusSet. +*/ +struct ACK_ClearEOCStatusSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configuration of options for the overhead handling. +*/ +struct CMD_OH_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** EOC Polling Period Scaling Factor, Bits 15 to 8 */ + DSL_uint8_t eocPollFactor; + /** Reserved */ + DSL_uint16_t Res0 : 3; + /** EOC Polling Control Prio 2: PMD Test Parameters, Bit 4 */ + DSL_uint16_t eocPoll2 : 1; + /** EOC Polling Control Prio 1: Inventory, Counters, Bit 3 */ + DSL_uint16_t eocPoll1 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 3; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** EOC Polling Control Prio 1: Inventory, Counters, Bit 3 */ + DSL_uint16_t eocPoll1 : 1; + /** EOC Polling Control Prio 2: PMD Test Parameters, Bit 4 */ + DSL_uint16_t eocPoll2 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 3; + /** EOC Polling Period Scaling Factor, Bits 15 to 8 */ + DSL_uint8_t eocPollFactor; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_OH_OptionsSet. +*/ +struct ACK_OH_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests OH polling statistic information. +*/ +struct CMD_OH_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the OH polling statistics as requested by CMD_OH_StatsGet. +*/ +struct ACK_OH_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** EOC CMD TX PRIO1 Sent */ + DSL_uint16_t eocCMD1; + /** EOC ACK RX PRIO1 Count */ + DSL_uint16_t eocRSP1; + /** EOC CMD TX PRIO2 Sent */ + DSL_uint16_t eocCMD2; + /** EOC ACK RX PRIO2 Count */ + DSL_uint16_t eocRSP2; + /** EOC NACK RX PRIO1 Count */ + DSL_uint16_t eocNACK1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** EOC CMD TX PRIO1 Sent */ + DSL_uint16_t eocCMD1; + /** EOC ACK RX PRIO1 Count */ + DSL_uint16_t eocRSP1; + /** EOC CMD TX PRIO2 Sent */ + DSL_uint16_t eocCMD2; + /** EOC ACK RX PRIO2 Count */ + DSL_uint16_t eocRSP2; + /** EOC NACK RX PRIO1 Count */ + DSL_uint16_t eocNACK1; +#endif +} __PACKED__ ; + + +/** + Enables/Disables support for OLR events (Bitswaps, SRA, SOS, ROC).An OLR + transition is always initiated by the receiving PMD, so the CPE requests the + OLR event for downstream direction. +*/ +struct CMD_OLR_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 4; + /** ROC DS */ + DSL_uint16_t ROC_DS : 1; + /** ROC US */ + DSL_uint16_t ROC_US : 1; + /** SOS DS */ + DSL_uint16_t SOS_DS : 1; + /** SOS US */ + DSL_uint16_t SOS_US : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** SRA Strict Rate Check */ + DSL_uint16_t SRA_StrictCheck : 1; + /** RX Bitswap */ + DSL_uint16_t RxBitswap : 1; + /** TX Bitswap */ + DSL_uint16_t TxBitswap : 1; + /** SRA Rate Check */ + DSL_uint16_t SRA_RateCheck : 1; + /** Auto-SRA DS */ + DSL_uint16_t autoSRA_DS : 1; + /** Auto-SRA US */ + DSL_uint16_t autoSRA_US : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Auto-SRA US */ + DSL_uint16_t autoSRA_US : 1; + /** Auto-SRA DS */ + DSL_uint16_t autoSRA_DS : 1; + /** SRA Rate Check */ + DSL_uint16_t SRA_RateCheck : 1; + /** TX Bitswap */ + DSL_uint16_t TxBitswap : 1; + /** RX Bitswap */ + DSL_uint16_t RxBitswap : 1; + /** SRA Strict Rate Check */ + DSL_uint16_t SRA_StrictCheck : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** SOS US */ + DSL_uint16_t SOS_US : 1; + /** SOS DS */ + DSL_uint16_t SOS_DS : 1; + /** ROC US */ + DSL_uint16_t ROC_US : 1; + /** ROC DS */ + DSL_uint16_t ROC_DS : 1; + /** Reserved */ + DSL_uint16_t Res0 : 4; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_OLR_Control. +*/ +struct ACK_OLR_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the OLR status information on bit swaps, DRR, SRA and SOS events for + the upstream direction. +*/ +struct CMD_OLR_US_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the OLR status information for the upstream direction as requested by + CMD_OLR_US_StatsGet. +*/ +struct ACK_OLR_US_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** US Bit Swap Requests */ + DSL_uint16_t BitswapReqs; + /** US Extended Bit Swap Requests */ + DSL_uint16_t ExtBitswapReqs; + /** US Bit Swap UTC Responses */ + DSL_uint16_t BitswapUTCs; + /** US "Bit Swaps Performed" Count */ + DSL_uint16_t BitswapsDone; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved for DRR */ + DSL_uint16_t Res1[5]; + /** US SRA Requests */ + DSL_uint16_t SRA_Reqs; + /** Reserved */ + DSL_uint16_t Res2; + /** US SRA UTC Responses */ + DSL_uint16_t SRA_UTCs; + /** US "SRA Performed" Count */ + DSL_uint16_t SRAsDone; + /** Reserved */ + DSL_uint16_t Res3; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** US Bit Swap Requests */ + DSL_uint16_t BitswapReqs; + /** US Extended Bit Swap Requests */ + DSL_uint16_t ExtBitswapReqs; + /** US Bit Swap UTC Responses */ + DSL_uint16_t BitswapUTCs; + /** US "Bit Swaps Performed" Count */ + DSL_uint16_t BitswapsDone; + /** Reserved */ + DSL_uint16_t Res0; + /** Reserved for DRR */ + DSL_uint16_t Res1[5]; + /** US SRA Requests */ + DSL_uint16_t SRA_Reqs; + /** Reserved */ + DSL_uint16_t Res2; + /** US SRA UTC Responses */ + DSL_uint16_t SRA_UTCs; + /** US "SRA Performed" Count */ + DSL_uint16_t SRAsDone; + /** Reserved */ + DSL_uint16_t Res3; +#endif +} __PACKED__ ; + + +/** + Requests the OLR status information on bit swaps, DRR, SRA and SOS events for + the downstream direction. +*/ +struct CMD_OLR_DS_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the OLR status information for the downstream direction as requested + by CMD_OLR_DS_StatsGet. +*/ +struct ACK_OLR_DS_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** DS Bit Swap Requests */ + DSL_uint16_t BitswapReqs; + /** DS Extended Bit Swap Requests */ + DSL_uint16_t ExtBitswapReqs; + /** DS Bit Swap UTC Responses */ + DSL_uint16_t BitswapUTCs; + /** DS "Bit Swaps Performed" Count */ + DSL_uint16_t BitswapsDone; + /** DS Bitswap Timeouts */ + DSL_uint16_t BitswapTimeOuts; + /** Reserved for DRR */ + DSL_uint16_t Res0[5]; + /** DS SRA Requests */ + DSL_uint16_t SRA_Reqs; + /** Reserved */ + DSL_uint16_t Res1; + /** DS SRA UTC Responses */ + DSL_uint16_t SRA_UTCs; + /** DS "SRA Performed" Count */ + DSL_uint16_t SRAsDone; + /** DS SRA Timeouts */ + DSL_uint16_t SRA_TimeOuts; + /** DS SOS Requests */ + DSL_uint16_t SOS_Reqs; + /** Reserved */ + DSL_uint16_t Res2; + /** DS SOS UTC Responses */ + DSL_uint16_t SOS_UTCs; + /** DS "SOS Performed" Count */ + DSL_uint16_t SOS_Done; + /** DS SOS Timeouts */ + DSL_uint16_t SOS_TimeOuts; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** DS Bit Swap Requests */ + DSL_uint16_t BitswapReqs; + /** DS Extended Bit Swap Requests */ + DSL_uint16_t ExtBitswapReqs; + /** DS Bit Swap UTC Responses */ + DSL_uint16_t BitswapUTCs; + /** DS "Bit Swaps Performed" Count */ + DSL_uint16_t BitswapsDone; + /** DS Bitswap Timeouts */ + DSL_uint16_t BitswapTimeOuts; + /** Reserved for DRR */ + DSL_uint16_t Res0[5]; + /** DS SRA Requests */ + DSL_uint16_t SRA_Reqs; + /** Reserved */ + DSL_uint16_t Res1; + /** DS SRA UTC Responses */ + DSL_uint16_t SRA_UTCs; + /** DS "SRA Performed" Count */ + DSL_uint16_t SRAsDone; + /** DS SRA Timeouts */ + DSL_uint16_t SRA_TimeOuts; + /** DS SOS Requests */ + DSL_uint16_t SOS_Reqs; + /** Reserved */ + DSL_uint16_t Res2; + /** DS SOS UTC Responses */ + DSL_uint16_t SOS_UTCs; + /** DS "SOS Performed" Count */ + DSL_uint16_t SOS_Done; + /** DS SOS Timeouts */ + DSL_uint16_t SOS_TimeOuts; +#endif +} __PACKED__ ; + + +/** + Requests the actual active downstream RA mode (ACT-RA-MODEds, Section + 7.5.1.33.1 of G.997.1). +*/ +struct CMD_RA_ModeDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the actual active downstream RA mode (ACT-RA-MODEds) as requested by + CMD_RA_ModeDS_Get. +*/ +struct ACK_RA_ModeDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RA Mode DS */ + DSL_uint16_t actRA_mode; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RA Mode DS */ + DSL_uint16_t actRA_mode; +#endif +} __PACKED__ ; + + +/** + Requests the actual active upstream RA mode (ACT-RA-MODEus, Section + 7.5.1.33.2 of G.997.1). +*/ +struct CMD_RA_ModeUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the actual active upstream RA mode (ACT-RA-MODEus) as requested by + CMD_RA_ModeUS_Get. +*/ +struct ACK_RA_ModeUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RA Mode US */ + DSL_uint16_t actRA_mode; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** RA Mode US */ + DSL_uint16_t actRA_mode; +#endif +} __PACKED__ ; + + +/** + Autonomous message indicating a successful upstream OLR event (SRA or SOS). +*/ +struct EVT_OLR_US_EventGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** SRA Event */ + DSL_uint16_t SRA_OK : 1; + /** SOS Event (VDSL only) */ + DSL_uint16_t SOS_OK : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SOS Event (VDSL only) */ + DSL_uint16_t SOS_OK : 1; + /** SRA Event */ + DSL_uint16_t SRA_OK : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Autonomous message indicating a successful downstream OLR event (SRA or SOS). +*/ +struct EVT_OLR_DS_EventGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** SRA Event */ + DSL_uint16_t SRA_OK : 1; + /** SOS Event (VDSL only) */ + DSL_uint16_t SOS_OK : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SOS Event (VDSL only) */ + DSL_uint16_t SOS_OK : 1; + /** SRA Event */ + DSL_uint16_t SRA_OK : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Enables/Disables the generation of EVENT messages (EVT) for specific upstream + OLR events. If the corresponding Enable bit for an OLR event is set, then the + modem firmware will send an autonomous message EVT_OLR_US_EventGet if the OLR + event happened in the last 1-second interval. +*/ +struct CMD_OLR_US_EventConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** SRA Event US, Bit 1 */ + DSL_uint16_t SRA_OK : 1; + /** SOS Event US , Bit 0 (VDSL only) */ + DSL_uint16_t SOS_OK : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SOS Event US , Bit 0 (VDSL only) */ + DSL_uint16_t SOS_OK : 1; + /** SRA Event US, Bit 1 */ + DSL_uint16_t SRA_OK : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Acknoledgement for CMD_OLR_US_EventConfigure. +*/ +struct ACK_OLR_US_EventConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Enables/Disables the generation of EVENT messages (EVT) for specific + downstream OLR events. If the corresponding Enable bit for an OLR event is + set, then the modem firmware will send an autonomous message + EVT_OLR_DS_EventGet if the OLR event happened in the last 1-second interval. +*/ +struct CMD_OLR_DS_EventConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** SRA Event DS, Bit 1 */ + DSL_uint16_t SRA_OK : 1; + /** SOS Event DS , Bit 0 (VDSL only) */ + DSL_uint16_t SOS_OK : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** SOS Event DS , Bit 0 (VDSL only) */ + DSL_uint16_t SOS_OK : 1; + /** SRA Event DS, Bit 1 */ + DSL_uint16_t SRA_OK : 1; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Acknoledgement for CMD_OLR_DS_EventConfigure. +*/ +struct ACK_OLR_DS_EventConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configures a link for retransmission of downstream data. For using the RTX + function, this message has to be sent. +*/ +struct CMD_RTX_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** Extended Memory for Enhanced Bit Rates (Anx D support, VDSL only) */ + DSL_uint16_t ExtMem : 1; + /** Force Extended Memory for Enhanced Bit Rates (VDSL only) */ + DSL_uint16_t ExtMemForced : 1; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** Intra DTU Interleaving US (VDSL only) */ + DSL_uint16_t DtuInterleavingUs : 1; + /** Intra DTU Interleaving DS (VDSL only) */ + DSL_uint16_t DtuInterleavingDs : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Retransmission Control */ + DSL_uint16_t RtxMode : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Retransmission Control */ + DSL_uint16_t RtxMode : 2; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Intra DTU Interleaving DS (VDSL only) */ + DSL_uint16_t DtuInterleavingDs : 1; + /** Intra DTU Interleaving US (VDSL only) */ + DSL_uint16_t DtuInterleavingUs : 1; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** Force Extended Memory for Enhanced Bit Rates (VDSL only) */ + DSL_uint16_t ExtMemForced : 1; + /** Extended Memory for Enhanced Bit Rates (Anx D support, VDSL only) */ + DSL_uint16_t ExtMem : 1; + /** Reserved */ + DSL_uint16_t Res0 : 6; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_RTX_Control. +*/ +struct ACK_RTX_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests RTX specific status information for the downstream bearer channels + if G.INP retransmission is used. +*/ +struct CMD_RTX_BearerChsDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers status information for the downstream bearer channels when G.INP + retransmission is actually used. +*/ +struct ACK_RTX_BearerChsDS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Expected Throughput ETR of RTX Function, LSW */ + DSL_uint16_t ETR_LSW; + /** Expected Throughput ETR of RTX Function, MSW */ + DSL_uint16_t ETR_MSW; + /** Actual Delay of RTX Function */ + DSL_uint16_t ActDelay; + /** Actual INP SHINE of RTX Function */ + DSL_uint16_t ActInpSHINE; + /** Actual INP REIN of RTX Function */ + DSL_uint16_t ActInpREIN; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Expected Throughput ETR of RTX Function, LSW */ + DSL_uint16_t ETR_LSW; + /** Expected Throughput ETR of RTX Function, MSW */ + DSL_uint16_t ETR_MSW; + /** Actual Delay of RTX Function */ + DSL_uint16_t ActDelay; + /** Actual INP SHINE of RTX Function */ + DSL_uint16_t ActInpSHINE; + /** Actual INP REIN of RTX Function */ + DSL_uint16_t ActInpREIN; +#endif +} __PACKED__ ; + + +/** + Requests RTX specific status information for the upstream bearer channels if + upstream G.INP retransmission is used. +*/ +struct CMD_RTX_BearerChsUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers status information for the upstream bearer channels when upstream + G.INP retransmission is used. +*/ +struct ACK_RTX_BearerChsUS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Expected Throughput ETR of RTX_us Function, LSW */ + DSL_uint16_t ETR_LSW; + /** Expected Throughput ETR of RTX_us Function, MSW */ + DSL_uint16_t ETR_MSW; + /** Actual Delay of RTX_us Function */ + DSL_uint16_t ActDelay; + /** Actual INP SHINE of RTX_us Function */ + DSL_uint16_t ActInpSHINE; + /** Actual INP REIN of RTX_us Function */ + DSL_uint16_t ActInpREIN; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Expected Throughput ETR of RTX_us Function, LSW */ + DSL_uint16_t ETR_LSW; + /** Expected Throughput ETR of RTX_us Function, MSW */ + DSL_uint16_t ETR_MSW; + /** Actual Delay of RTX_us Function */ + DSL_uint16_t ActDelay; + /** Actual INP SHINE of RTX_us Function */ + DSL_uint16_t ActInpSHINE; + /** Actual INP REIN of RTX_us Function */ + DSL_uint16_t ActInpREIN; +#endif +} __PACKED__ ; + + +/** + Requests performance monitoring counters for downstream G.INP retransmission. +*/ +struct CMD_RTX_PM_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers performance monitoring counters for downstream G.INP retransmission. +*/ +struct ACK_RTX_PM_DS_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ErrorFreeBitsCNT, LSW */ + DSL_uint16_t ErrorFreeBits_LSW; + /** ErrorFreeBitsCNT, MSW */ + DSL_uint16_t ErrorFreeBits_MSW; + /** Reserved */ + DSL_uint16_t Res0[2]; + /** EFTR_min reported to CO, LSW */ + DSL_uint16_t EFTR_min_LSW; + /** EFTR_min reported to CO, MSW */ + DSL_uint16_t EFTR_min_MSW; + /** Reserved */ + DSL_uint16_t Res1[2]; + /** "leftr" Count, LSW */ + DSL_uint16_t leftr_LSW; + /** "leftr" Count, MSW */ + DSL_uint16_t leftr_MSW; + /** EFTR, LSW */ + DSL_uint16_t EFTR_LSW; + /** EFTR, MSW */ + DSL_uint16_t EFTR_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ErrorFreeBitsCNT, LSW */ + DSL_uint16_t ErrorFreeBits_LSW; + /** ErrorFreeBitsCNT, MSW */ + DSL_uint16_t ErrorFreeBits_MSW; + /** Reserved */ + DSL_uint16_t Res0[2]; + /** EFTR_min reported to CO, LSW */ + DSL_uint16_t EFTR_min_LSW; + /** EFTR_min reported to CO, MSW */ + DSL_uint16_t EFTR_min_MSW; + /** Reserved */ + DSL_uint16_t Res1[2]; + /** "leftr" Count, LSW */ + DSL_uint16_t leftr_LSW; + /** "leftr" Count, MSW */ + DSL_uint16_t leftr_MSW; + /** EFTR, LSW */ + DSL_uint16_t EFTR_LSW; + /** EFTR, MSW */ + DSL_uint16_t EFTR_MSW; +#endif +} __PACKED__ ; + + +/** + Requests performance monitoring counters for upstream G.INP retransmission. +*/ +struct CMD_RTX_PM_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers performance monitoring counters for upstream G.INP retransmission. + They are all far-end parameters received from CO. +*/ +struct ACK_RTX_PM_US_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ErrorFreeBitsCNT, LSW */ + DSL_uint16_t ErrorFreeBits_LSW; + /** ErrorFreeBitsCNT, MSW */ + DSL_uint16_t ErrorFreeBits_MSW; + /** EFTR_min, LSW */ + DSL_uint16_t EFTR_min_LSW; + /** EFTR_min, MSW */ + DSL_uint16_t EFTR_min_MSW; + /** "leftr" Count, LSW */ + DSL_uint16_t leftr_LSW; + /** "leftr" Count, MSW */ + DSL_uint16_t leftr_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ErrorFreeBitsCNT, LSW */ + DSL_uint16_t ErrorFreeBits_LSW; + /** ErrorFreeBitsCNT, MSW */ + DSL_uint16_t ErrorFreeBits_MSW; + /** EFTR_min, LSW */ + DSL_uint16_t EFTR_min_LSW; + /** EFTR_min, MSW */ + DSL_uint16_t EFTR_min_MSW; + /** "leftr" Count, LSW */ + DSL_uint16_t leftr_LSW; + /** "leftr" Count, MSW */ + DSL_uint16_t leftr_MSW; +#endif +} __PACKED__ ; + + +/** + Requests DTU counters for G.INP downstream retransmission. +*/ +struct CMD_RTX_DS_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers DTU counters for G.INP downstream retransmission. The counters are + Non-TR1 wrap-around counters, which are reset at reboot only. +*/ +struct ACK_RTX_DS_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TxDtuRetransmitted Count (rtx-tx), LSW */ + DSL_uint16_t TxDtuRTX_LSW; + /** TxDtuRetransmitted Count (rtx-tx), MSW */ + DSL_uint16_t TxDtuRTX_MSW; + /** RxDtuCorrected Count (rtx-c), LSW */ + DSL_uint16_t RxDtuCorr_LSW; + /** RxDtuCorrected Count (rtx-c), MSW */ + DSL_uint16_t RxDtuCorr_MSW; + /** RxDtuUncorrected Count (rtx-uc), LSW */ + DSL_uint16_t RxDtuNoCorr_LSW; + /** RxDtuUncorrected Count (rtx-uc), MSW */ + DSL_uint16_t RxDtuNoCorr_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TxDtuRetransmitted Count (rtx-tx), LSW */ + DSL_uint16_t TxDtuRTX_LSW; + /** TxDtuRetransmitted Count (rtx-tx), MSW */ + DSL_uint16_t TxDtuRTX_MSW; + /** RxDtuCorrected Count (rtx-c), LSW */ + DSL_uint16_t RxDtuCorr_LSW; + /** RxDtuCorrected Count (rtx-c), MSW */ + DSL_uint16_t RxDtuCorr_MSW; + /** RxDtuUncorrected Count (rtx-uc), LSW */ + DSL_uint16_t RxDtuNoCorr_LSW; + /** RxDtuUncorrected Count (rtx-uc), MSW */ + DSL_uint16_t RxDtuNoCorr_MSW; +#endif +} __PACKED__ ; + + +/** + Requests DTU counters for G.INP upstream retransmission, which is defined for + VDSL only. +*/ +struct CMD_RTX_US_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers DTU counters for G.INP upstream retransmission. The counters are + Non-TR1 wrap-around counters, which are reset at reboot only. +*/ +struct ACK_RTX_US_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TxDtuRetransmitted Count (rtx-tx), LSW */ + DSL_uint16_t TxDtuRTX_LSW; + /** TxDtuRetransmitted Count (rtx-tx), MSW */ + DSL_uint16_t TxDtuRTX_MSW; + /** RxDtuCorrected Count (rtx-c), LSW */ + DSL_uint16_t RxDtuCorr_LSW; + /** RxDtuCorrected Count rtx-c), MSW */ + DSL_uint16_t RxDtuCorr_MSW; + /** RxDtuUncorrected Count (rtx-uc), LSW */ + DSL_uint16_t RxDtuNoCorr_LSW; + /** RxDtuUncorrected Count (rtx-uc), MSW */ + DSL_uint16_t RxDtuNoCorr_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TxDtuRetransmitted Count (rtx-tx), LSW */ + DSL_uint16_t TxDtuRTX_LSW; + /** TxDtuRetransmitted Count (rtx-tx), MSW */ + DSL_uint16_t TxDtuRTX_MSW; + /** RxDtuCorrected Count (rtx-c), LSW */ + DSL_uint16_t RxDtuCorr_LSW; + /** RxDtuCorrected Count rtx-c), MSW */ + DSL_uint16_t RxDtuCorr_MSW; + /** RxDtuUncorrected Count (rtx-uc), LSW */ + DSL_uint16_t RxDtuNoCorr_LSW; + /** RxDtuUncorrected Count (rtx-uc), MSW */ + DSL_uint16_t RxDtuNoCorr_MSW; +#endif +} __PACKED__ ; + + +/** + Requests the actually used G.INP retransmission status. +*/ +struct CMD_RTX_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the actually used G.INP retransmission status. +*/ +struct ACK_RTX_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 7; + /** RTX US disabled against Intel(c) VDSL Chipset due to wrong Config. */ + DSL_uint16_t RtxUsOffCfgErr : 1; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** Intra DTU Interleaving US (VDSL only) */ + DSL_uint16_t DtuInterleavingUs : 1; + /** Intra DTU Interleaving DS (VDSL only) */ + DSL_uint16_t DtuInterleavingDs : 1; + /** Extended Memory */ + DSL_uint16_t ExtMem : 1; + /** Retransmission US Used ("RTX_USED_us", VDSL only) */ + DSL_uint16_t RtxUsedUs : 1; + /** Retransmission DS Used ("RTX_USED_ds") */ + DSL_uint16_t RtxUsedDs : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Retransmission DS Used ("RTX_USED_ds") */ + DSL_uint16_t RtxUsedDs : 1; + /** Retransmission US Used ("RTX_USED_us", VDSL only) */ + DSL_uint16_t RtxUsedUs : 1; + /** Extended Memory */ + DSL_uint16_t ExtMem : 1; + /** Intra DTU Interleaving DS (VDSL only) */ + DSL_uint16_t DtuInterleavingDs : 1; + /** Intra DTU Interleaving US (VDSL only) */ + DSL_uint16_t DtuInterleavingUs : 1; + /** Reserved */ + DSL_uint16_t Res1 : 3; + /** RTX US disabled against Intel(c) VDSL Chipset due to wrong Config. */ + DSL_uint16_t RtxUsOffCfgErr : 1; + /** Reserved */ + DSL_uint16_t Res0 : 7; +#endif +} __PACKED__ ; + + +/** + Requests upstream G.INP retransmission specific framing parameters and other + status parameters. They are always associated with bearer channel 0. +*/ +struct CMD_RTX_US_FrameDataGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers upstream retransmission specific framing parameters and other status + parameters, as requested by CMD_RTX_US_FrameDataGet. They are always + associated with bearer channel 0.In addition, the usual framing parameters + are to be retrieved with CMD_FrameDataExt2US_Get. +*/ +struct ACK_RTX_US_FrameDataGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Framing Type of LP1 RTX_us Framing */ + DSL_uint16_t FT; + /** FEC Codewords per DTU of LP1 RTX_us Framing */ + DSL_uint16_t Q; + /** Padding Bytes per DTU of LP1 RTX_usFraming */ + DSL_uint16_t V; + /** RTX Queue Length in DTUs of RTX_us Function */ + DSL_uint16_t Qtx; + /** Look-Back Value for RRC Codeword Evaluation of RTX_us Function */ + DSL_uint16_t lb; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Framing Type of LP1 RTX_us Framing */ + DSL_uint16_t FT; + /** FEC Codewords per DTU of LP1 RTX_us Framing */ + DSL_uint16_t Q; + /** Padding Bytes per DTU of LP1 RTX_usFraming */ + DSL_uint16_t V; + /** RTX Queue Length in DTUs of RTX_us Function */ + DSL_uint16_t Qtx; + /** Look-Back Value for RRC Codeword Evaluation of RTX_us Function */ + DSL_uint16_t lb; +#endif +} __PACKED__ ; + + +/** + Requests the G.INP upstream retransmission measured roundtrip. +*/ +struct CMD_RTX_US_Roundtrip_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the G.INP upstream retransmission measured roundtrip delay. For + measuring the roundtrip, following difference is built when a correct RRC + codeword has been received: AbsoluteDTUCount of transmitter for next possible + DTU transmission minus AbsoluteDTUCount as received in RRC codeword. +*/ +struct ACK_RTX_US_Roundtrip_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Minimum Measured Roundtrip in DTUs */ + DSL_uint16_t MinRt; + /** Maximum Measured Roundtrip in DTUs */ + DSL_uint16_t MaxRt; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Minimum Measured Roundtrip in DTUs */ + DSL_uint16_t MinRt; + /** Maximum Measured Roundtrip in DTUs */ + DSL_uint16_t MaxRt; +#endif +} __PACKED__ ; + + +/** + Enables/Disables support for full vectoring (G.993.5) and full vector- + friendly operation (G.993.2 Annex Y). In case of ADSL, this only means the + indication of the (VDSL) vectoring capabilities during G.Handshake. +*/ +struct CMD_DSM_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 14; + /** Supported Vectoring Mode */ + DSL_uint16_t VectoringMode : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Supported Vectoring Mode */ + DSL_uint16_t VectoringMode : 2; + /** Reserved */ + DSL_uint16_t Res0 : 14; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_DSM_Control. +*/ +struct ACK_DSM_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This autononmous message indicates that new downstream DSM error vector data + were written by the DSL FW into the SDRAM. Generation of this EVT message is + enabled/disabled together with the G.993.5 vectoring functionality itself, by + means of CMD_DSM_Control, parameter "Vector". +*/ +struct EVT_DSM_ErrorVectorReady +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ERB Event Result Code */ + DSL_uint16_t ErrVecProcResult; + /** L2 Backchannel Error Vector Date Size */ + DSL_uint16_t ErrVecSize; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** ERB Event Result Code */ + DSL_uint16_t ErrVecProcResult; + /** L2 Backchannel Error Vector Date Size */ + DSL_uint16_t ErrVecSize; +#endif +} __PACKED__ ; + + +/** + Requests vectoring debug counter values. +*/ +struct CMD_DSM_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers vectoring debug counters. +*/ +struct ACK_DSM_StatsGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Discarded Error Vectors, LSW */ + DSL_uint16_t ErrVecDiscard_LSW; + /** Discarded Error Vectors, MSW */ + DSL_uint16_t ErrVecDiscard_MSW; + /** Transmitted Error Vectors, LSW */ + DSL_uint16_t ErrVecTransmitted_LSW; + /** Transmitted Error Vectors, MSW */ + DSL_uint16_t ErrVecTransmitted_MSW; + /** Total Error Vectors Requested, LSW */ + DSL_uint16_t ErrVecTotalReq_LSW; + /** Total Error Vectors Requested, MSW */ + DSL_uint16_t ErrVecTotalReq_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Discarded Error Vectors, LSW */ + DSL_uint16_t ErrVecDiscard_LSW; + /** Discarded Error Vectors, MSW */ + DSL_uint16_t ErrVecDiscard_MSW; + /** Transmitted Error Vectors, LSW */ + DSL_uint16_t ErrVecTransmitted_LSW; + /** Transmitted Error Vectors, MSW */ + DSL_uint16_t ErrVecTransmitted_MSW; + /** Total Error Vectors Requested, LSW */ + DSL_uint16_t ErrVecTotalReq_LSW; + /** Total Error Vectors Requested, MSW */ + DSL_uint16_t ErrVecTotalReq_MSW; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_OLR_H_*/ diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_perf_pmd.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_perf_pmd.h new file mode 100644 index 0000000000000000000000000000000000000000..1a3a1fa90059c1814cbd4ccd2bda10ab786772aa --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_perf_pmd.h @@ -0,0 +1,1674 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_PERF_PMD_H_ +#define _DRV_DSL_CPE_VRX_MSG_PERF_PMD_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _PERF_PMD_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Message Specific Constants Definition section ----- */ +/* ----- Message Specific Constants Definition section (End) ----- */ + +/** Message ID for CMD_CounterControlSet */ +#define CMD_COUNTERCONTROLSET 0x004A + +/** + Controls the behaviour of the performance counters. +*/ +typedef struct CMD_CounterControlSet CMD_CounterControlSet_t; + +/** Message ID for ACK_CounterControlSet */ +#define ACK_COUNTERCONTROLSET 0x004A + +/** + Acknowledgement for message CMD_CounterControlSet. +*/ +typedef struct ACK_CounterControlSet ACK_CounterControlSet_t; + +/** Message ID for CMD_PM_OptionsSet */ +#define CMD_PM_OPTIONSSET 0x1662 + +/** + Configures options for performance monitoring functions. +*/ +typedef struct CMD_PM_OptionsSet CMD_PM_OptionsSet_t; + +/** Message ID for ACK_PM_OptionsSet */ +#define ACK_PM_OPTIONSSET 0x1662 + +/** + Acknowledgement for message ACK_PM_OptionsSet. +*/ +typedef struct ACK_PM_OptionsSet ACK_PM_OptionsSet_t; + +/** Message ID for ALM_LineFailureNE_Get */ +#define ALM_LINEFAILURENE_GET 0x0007 + +/** + This autonomous message indicates near-end line failures. +*/ +typedef struct ALM_LineFailureNE_Get ALM_LineFailureNE_Get_t; + +/** Message ID for CMD_LineFailureNE_Get */ +#define CMD_LINEFAILURENE_GET 0x0007 + +/** + Requests the near-end line failure status. +*/ +typedef struct CMD_LineFailureNE_Get CMD_LineFailureNE_Get_t; + +/** Message ID for ACK_LineFailureNE_Get */ +#define ACK_LINEFAILURENE_GET 0x0007 + +/** + Provides the near-end line failure status requested by the command + CMD_LineFailureNE_Get. +*/ +typedef struct ACK_LineFailureNE_Get ACK_LineFailureNE_Get_t; + +/** Message ID for ALM_LineFailureFE_Get */ +#define ALM_LINEFAILUREFE_GET 0x0107 + +/** + This autonomous message indicates far-end line failures. +*/ +typedef struct ALM_LineFailureFE_Get ALM_LineFailureFE_Get_t; + +/** Message ID for CMD_LineFailureFE_Get */ +#define CMD_LINEFAILUREFE_GET 0x0107 + +/** + Requests the far-end line failure status. +*/ +typedef struct CMD_LineFailureFE_Get CMD_LineFailureFE_Get_t; + +/** Message ID for ACK_LineFailureFE_Get */ +#define ACK_LINEFAILUREFE_GET 0x0107 + +/** + Provides the far-end line failure status requested by the command + CMD_LineFailureFE_Get. +*/ +typedef struct ACK_LineFailureFE_Get ACK_LineFailureFE_Get_t; + +/** Message ID for CMD_Failure_Trigger */ +#define CMD_FAILURE_TRIGGER 0x0562 + +/** + Host initiated "loss of power". Triggers indicating an lpr primitive to the + remote side via the indicator bits ("IB bits").The host writes the message to + the FW e.g. after detecting LPR by an alternative detection scheme. +*/ +typedef struct CMD_Failure_Trigger CMD_Failure_Trigger_t; + +/** Message ID for ACK_Failure_Trigger */ +#define ACK_FAILURE_TRIGGER 0x0562 + +/** + Acknowledgement for CMD_Failure_Trigger. +*/ +typedef struct ACK_Failure_Trigger ACK_Failure_Trigger_t; + +/** Message ID for CMD_LinePerfCountNE_Get */ +#define CMD_LINEPERFCOUNTNE_GET 0x020A + +/** + Requests near-end line performance counter values (Section 7.2.1.1 of + G.997.1). These are wrap-around counters which are not affected by the + TR1-period. +*/ +typedef struct CMD_LinePerfCountNE_Get CMD_LinePerfCountNE_Get_t; + +/** Message ID for ACK_LinePerfCountNE_Get */ +#define ACK_LINEPERFCOUNTNE_GET 0x020A + +/** + Provides near-end line performance counter values requested by + CMD_LinePerfCountNE_Get (Section 7.2.1.1 of G.997.1). These are wrap-around + counters which are not affected by the TR1-period. +*/ +typedef struct ACK_LinePerfCountNE_Get ACK_LinePerfCountNE_Get_t; + +/** Message ID for CMD_LinePerfCountFE_Get */ +#define CMD_LINEPERFCOUNTFE_GET 0x040A + +/** + Requests far-end line performance counter values (Section 7.2.1.2 of + G.997.1). These are wrap-around counters which are not affected by the + TR1-period. +*/ +typedef struct CMD_LinePerfCountFE_Get CMD_LinePerfCountFE_Get_t; + +/** Message ID for ACK_LinePerfCountFE_Get */ +#define ACK_LINEPERFCOUNTFE_GET 0x040A + +/** + Provides far-end line performance counter values requested by + CMD_LinePerfCountFE_Get (Section 7.2.1.2 of G.997.1). These are wrap-around + counters which are not affected by the TR1-period. +*/ +typedef struct ACK_LinePerfCountFE_Get ACK_LinePerfCountFE_Get_t; + +/** Message ID for CMD_CRC_StatsNE_Get */ +#define CMD_CRC_STATSNE_GET 0x080A + +/** + Requests near-end CRC counter values. These are wrap-around counters which + are not affected by the TR1-period. +*/ +typedef struct CMD_CRC_StatsNE_Get CMD_CRC_StatsNE_Get_t; + +/** Message ID for ACK_CRC_StatsNE_Get */ +#define ACK_CRC_STATSNE_GET 0x080A + +/** + Returns near-end CRC counter values. (Section 7.2.2.1.1 of G.997.1). These + are wrap-around counters which are not affected by the TR1-period.The + "LP1/Fast Path" parameters are fed only in ADSL1 and ADSL1 Lite mode with + selected fast path and in VDSL/ADSL with RTX mode. +*/ +typedef struct ACK_CRC_StatsNE_Get ACK_CRC_StatsNE_Get_t; + +/** Message ID for CMD_CRC_StatsFE_Get */ +#define CMD_CRC_STATSFE_GET 0x0C0A + +/** + Requests far-end CRC counter values. These are wrap-around counters which are + not affected by the TR1-period. +*/ +typedef struct CMD_CRC_StatsFE_Get CMD_CRC_StatsFE_Get_t; + +/** Message ID for ACK_CRC_StatsFE_Get */ +#define ACK_CRC_STATSFE_GET 0x0C0A + +/** + Returns far-end CRC counter values. (Section 7.2.2.2.1 of G.997.1). These are + wrap-around counters which are not affected by the TR1-period.The "LP1/Fast + Path" parameters are fed in ADSL1 and ADSL1 Lite mode with selected fast path + and in VDSL with RTX mode. +*/ +typedef struct ACK_CRC_StatsFE_Get ACK_CRC_StatsFE_Get_t; + +/** Message ID for CMD_FEC_StatsNE_Get */ +#define CMD_FEC_STATSNE_GET 0x0A0A + +/** + Requests near-end FEC counter values. These are wrap-around counters which + are not affected by the TR1-period. +*/ +typedef struct CMD_FEC_StatsNE_Get CMD_FEC_StatsNE_Get_t; + +/** Message ID for ACK_FEC_StatsNE_Get */ +#define ACK_FEC_STATSNE_GET 0x0A0A + +/** + Returns near-end FEC counter values (Section 7.2.2.1.2 of G.997.1). These are + wrap-around counters which are not affected by the TR1-period.The "LP1/Fast + Path" parameters are fed only in ADSL1 and ADSL1 Lite mode with selected fast + path and in VDSL/ADSL with RTX mode. +*/ +typedef struct ACK_FEC_StatsNE_Get ACK_FEC_StatsNE_Get_t; + +/** Message ID for CMD_FEC_StatsFE_Get */ +#define CMD_FEC_STATSFE_GET 0x0E0A + +/** + Requests far-end FEC counter values. These are wrap-around counters which are + not affected by the TR1-period. +*/ +typedef struct CMD_FEC_StatsFE_Get CMD_FEC_StatsFE_Get_t; + +/** Message ID for ACK_FEC_StatsFE_Get */ +#define ACK_FEC_STATSFE_GET 0x0E0A + +/** + Returns far-end FEC counter values (Section 7.2.2.2.2 of G.997.1). These are + wrap-around counters which are not affected by the TR1-period.The "LP1/Fast + Path" parameters are fed in ADSL1 and ADSL1 Lite mode with selected fast path + and in VDSL with RTX mode. +*/ +typedef struct ACK_FEC_StatsFE_Get ACK_FEC_StatsFE_Get_t; + +/** Message ID for CMD_SOS_StatsNE_Get */ +#define CMD_SOS_STATSNE_GET 0x290A + +/** + Requests the near-end 15 minutes SOS counter values. +*/ +typedef struct CMD_SOS_StatsNE_Get CMD_SOS_StatsNE_Get_t; + +/** Message ID for ACK_SOS_StatsNE_Get */ +#define ACK_SOS_STATSNE_GET 0x290A + +/** + Returns near-end SOS counter values. (Section 7.2.1.6.1 of G.997.1) +*/ +typedef struct ACK_SOS_StatsNE_Get ACK_SOS_StatsNE_Get_t; + +/** Message ID for CMD_SOS_StatsFE_Get */ +#define CMD_SOS_STATSFE_GET 0x2A0A + +/** + Requests the far-end 15 minutes SOS counter values. These are wrap-around + counters which are not affected by the TR1-period. +*/ +typedef struct CMD_SOS_StatsFE_Get CMD_SOS_StatsFE_Get_t; + +/** Message ID for ACK_SOS_StatsFE_Get */ +#define ACK_SOS_STATSFE_GET 0x2A0A + +/** + Returns far-end SOS counter values. (Section 7.2.1.7.1 of G.997.1) +*/ +typedef struct ACK_SOS_StatsFE_Get ACK_SOS_StatsFE_Get_t; + +/** Message ID for CMD_LinePerfCountNE_Set */ +#define CMD_LINEPERFCOUNTNE_SET 0x024A + +/** + Writes near-end line performance counter values (total wrap-around)(Section + 7.2.1.1 of G.997.1). +*/ +typedef struct CMD_LinePerfCountNE_Set CMD_LinePerfCountNE_Set_t; + +/** Message ID for ACK_LinePerfCountNE_Set */ +#define ACK_LINEPERFCOUNTNE_SET 0x024A + +/** + Acknowledgement for CMD_LinePerfCountNE_Set. +*/ +typedef struct ACK_LinePerfCountNE_Set ACK_LinePerfCountNE_Set_t; + +/** Message ID for CMD_CRC_StatsNE_Set */ +#define CMD_CRC_STATSNE_SET 0x084A + +/** + Writes the near-end CRC counter values (Section 7.2.2.1.1 of G.997.1)The + "LP1/Fast Path" parameters are used only in ADSL1 and ADSL1 Lite mode with + selected "Fast Path". +*/ +typedef struct CMD_CRC_StatsNE_Set CMD_CRC_StatsNE_Set_t; + +/** Message ID for ACK_CRC_StatsNE_Set */ +#define ACK_CRC_STATSNE_SET 0x084A + +/** + Acknowledgement for the message CMD_CRC_StatsNE_Set. +*/ +typedef struct ACK_CRC_StatsNE_Set ACK_CRC_StatsNE_Set_t; + +/** Message ID for CMD_FEC_StatsNE_Set */ +#define CMD_FEC_STATSNE_SET 0x0A4A + +/** + Writes near-end FEC counter values. (Section 7.2.2.1.2 of G.997.1)The + "LP1/Fast Path" parameters are used only in ADSL1 and ADSL1 Lite mode with + selected "Fast Path". +*/ +typedef struct CMD_FEC_StatsNE_Set CMD_FEC_StatsNE_Set_t; + +/** Message ID for ACK_FEC_StatsNE_Set */ +#define ACK_FEC_STATSNE_SET 0x0A4A + +/** + Acknowledgement for the message CMD_FEC_StatsNE_Set. +*/ +typedef struct ACK_FEC_StatsNE_Set ACK_FEC_StatsNE_Set_t; + +/** Message ID for CMD_SOS_StatsNE_Set */ +#define CMD_SOS_STATSNE_SET 0x294A + +/** + Writes near-end SOS counter values. ("SOS-SUCCESS-NE", Section 7.2.1.6.1 of + G.997.1). +*/ +typedef struct CMD_SOS_StatsNE_Set CMD_SOS_StatsNE_Set_t; + +/** Message ID for ACK_SOS_StatsNE_Set */ +#define ACK_SOS_STATSNE_SET 0x294A + +/** + Acknowledgement for CMD_SOS_StatsNE_Set. +*/ +typedef struct ACK_SOS_StatsNE_Set ACK_SOS_StatsNE_Set_t; + +/** Message ID for CMD_TimeSet */ +#define CMD_TIMESET 0x6143 + +/** + Sets the running time since midnightModifying the Time does not affect the + TR1 supervision period and the TR1-counters. +*/ +typedef struct CMD_TimeSet CMD_TimeSet_t; + +/** Message ID for ACK_TimeSet */ +#define ACK_TIMESET 0x6143 + +/** + Acknowledgement for message CMD_TimeSet. +*/ +typedef struct ACK_TimeSet ACK_TimeSet_t; + +/** Message ID for CMD_TimeGet */ +#define CMD_TIMEGET 0x6103 + +/** + Requests the status of the "Set Time and Read Time" EOC messages. +*/ +typedef struct CMD_TimeGet CMD_TimeGet_t; + +/** Message ID for ACK_TimeGet */ +#define ACK_TIMEGET 0x6103 + +/** + Provides the status of the "Set Time and Read Time" EOC messages. +*/ +typedef struct ACK_TimeGet ACK_TimeGet_t; + +/** + Controls the behaviour of the performance counters. +*/ +struct CMD_CounterControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 13; + /** Counter Inhibiting Enable */ + DSL_uint16_t CntInhibitEnable : 1; + /** Fixed value: VRX_DISABLE */ + DSL_uint16_t Res1 : 2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Fixed value: VRX_DISABLE */ + DSL_uint16_t Res1 : 2; + /** Counter Inhibiting Enable */ + DSL_uint16_t CntInhibitEnable : 1; + /** Reserved */ + DSL_uint16_t Res0 : 13; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_CounterControlSet. +*/ +struct ACK_CounterControlSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Configures options for performance monitoring functions. +*/ +struct CMD_PM_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** Supress CRC/FEC Counter-Writeback (ADSL only) */ + DSL_uint16_t CrcFecWrProtect : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Supress CRC/FEC Counter-Writeback (ADSL only) */ + DSL_uint16_t CrcFecWrProtect : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message ACK_PM_OptionsSet. +*/ +struct ACK_PM_OptionsSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This autonomous message indicates near-end line failures. +*/ +struct ALM_LineFailureNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** ESE Failure NE */ + DSL_uint16_t ESE_NE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** LOM Failure NE */ + DSL_uint16_t LOM_NE : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** LOF Failure NE */ + DSL_uint16_t LOF_NE : 1; + /** LOS Failure NE */ + DSL_uint16_t LOS_NE : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** LOS Failure NE */ + DSL_uint16_t LOS_NE : 1; + /** LOF Failure NE */ + DSL_uint16_t LOF_NE : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** LOM Failure NE */ + DSL_uint16_t LOM_NE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** ESE Failure NE */ + DSL_uint16_t ESE_NE : 1; + /** Reserved */ + DSL_uint16_t Res0 : 2; +#endif +} __PACKED__ ; + + +/** + Requests the near-end line failure status. +*/ +struct CMD_LineFailureNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the near-end line failure status requested by the command + CMD_LineFailureNE_Get. +*/ +struct ACK_LineFailureNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** ESE Failure NE */ + DSL_uint16_t ESE_NE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** LOM Failure NE */ + DSL_uint16_t LOM_NE : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** LOF Failure NE */ + DSL_uint16_t LOF_NE : 1; + /** LOS Failure NE */ + DSL_uint16_t LOS_NE : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** LOS Failure NE */ + DSL_uint16_t LOS_NE : 1; + /** LOF Failure NE */ + DSL_uint16_t LOF_NE : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** LOM Failure NE */ + DSL_uint16_t LOM_NE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** ESE Failure NE */ + DSL_uint16_t ESE_NE : 1; + /** Reserved */ + DSL_uint16_t Res0 : 2; +#endif +} __PACKED__ ; + + +/** + This autonomous message indicates far-end line failures. +*/ +struct ALM_LineFailureFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** ESE Failure FE */ + DSL_uint16_t ESE_FE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** LOM Failure FE */ + DSL_uint16_t LOM_FE : 1; + /** LPR Failure FE */ + DSL_uint16_t LPR_FE : 1; + /** LOF Failure FE */ + DSL_uint16_t LOF_FE : 1; + /** LOS Failure FE */ + DSL_uint16_t LOS_FE : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** LOS Failure FE */ + DSL_uint16_t LOS_FE : 1; + /** LOF Failure FE */ + DSL_uint16_t LOF_FE : 1; + /** LPR Failure FE */ + DSL_uint16_t LPR_FE : 1; + /** LOM Failure FE */ + DSL_uint16_t LOM_FE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** ESE Failure FE */ + DSL_uint16_t ESE_FE : 1; + /** Reserved */ + DSL_uint16_t Res0 : 2; +#endif +} __PACKED__ ; + + +/** + Requests the far-end line failure status. +*/ +struct CMD_LineFailureFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the far-end line failure status requested by the command + CMD_LineFailureFE_Get. +*/ +struct ACK_LineFailureFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 2; + /** ESE Failure FE */ + DSL_uint16_t ESE_FE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** LOM Failure FE */ + DSL_uint16_t LOM_FE : 1; + /** LPR Failure FE */ + DSL_uint16_t LPR_FE : 1; + /** LOF Failure FE */ + DSL_uint16_t LOF_FE : 1; + /** LOS Failure FE */ + DSL_uint16_t LOS_FE : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** LOS Failure FE */ + DSL_uint16_t LOS_FE : 1; + /** LOF Failure FE */ + DSL_uint16_t LOF_FE : 1; + /** LPR Failure FE */ + DSL_uint16_t LPR_FE : 1; + /** LOM Failure FE */ + DSL_uint16_t LOM_FE : 1; + /** Reserved */ + DSL_uint16_t Res1 : 9; + /** ESE Failure FE */ + DSL_uint16_t ESE_FE : 1; + /** Reserved */ + DSL_uint16_t Res0 : 2; +#endif +} __PACKED__ ; + + +/** + Host initiated "loss of power". Triggers indicating an lpr primitive to the + remote side via the indicator bits ("IB bits").The host writes the message to + the FW e.g. after detecting LPR by an alternative detection scheme. +*/ +struct CMD_Failure_Trigger +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** LPR Trigger */ + DSL_uint16_t lpr_Trigger : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** LPR Trigger */ + DSL_uint16_t lpr_Trigger : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_Failure_Trigger. +*/ +struct ACK_Failure_Trigger +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests near-end line performance counter values (Section 7.2.1.1 of + G.997.1). These are wrap-around counters which are not affected by the + TR1-period. +*/ +struct CMD_LinePerfCountNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides near-end line performance counter values requested by + CMD_LinePerfCountNE_Get (Section 7.2.1.1 of G.997.1). These are wrap-around + counters which are not affected by the TR1-period. +*/ +struct ACK_LinePerfCountNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FECS Count, LSW */ + DSL_uint16_t cntFECS_LSW; + /** Near-End FECS Count, MSW */ + DSL_uint16_t cntFECS_MSW; + /** Near-End ES Count, LSW */ + DSL_uint16_t cntES_LSW; + /** Near-End ES Count, MSW */ + DSL_uint16_t cntES_MSW; + /** Near-End SES Count, LSW */ + DSL_uint16_t cntSES_LSW; + /** Near-End SES Count, MSW */ + DSL_uint16_t cntSES_MSW; + /** Near-End LOSS Count, LSW */ + DSL_uint16_t cntLOSS_LSW; + /** Near-End LOSS Count, MSW */ + DSL_uint16_t cntLOSS_MSW; + /** Near-End UAS Count, LSW */ + DSL_uint16_t cntUAS_LSW; + /** Near-End UAS Count, MSW */ + DSL_uint16_t cntUAS_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FECS Count, LSW */ + DSL_uint16_t cntFECS_LSW; + /** Near-End FECS Count, MSW */ + DSL_uint16_t cntFECS_MSW; + /** Near-End ES Count, LSW */ + DSL_uint16_t cntES_LSW; + /** Near-End ES Count, MSW */ + DSL_uint16_t cntES_MSW; + /** Near-End SES Count, LSW */ + DSL_uint16_t cntSES_LSW; + /** Near-End SES Count, MSW */ + DSL_uint16_t cntSES_MSW; + /** Near-End LOSS Count, LSW */ + DSL_uint16_t cntLOSS_LSW; + /** Near-End LOSS Count, MSW */ + DSL_uint16_t cntLOSS_MSW; + /** Near-End UAS Count, LSW */ + DSL_uint16_t cntUAS_LSW; + /** Near-End UAS Count, MSW */ + DSL_uint16_t cntUAS_MSW; +#endif +} __PACKED__ ; + + +/** + Requests far-end line performance counter values (Section 7.2.1.2 of + G.997.1). These are wrap-around counters which are not affected by the + TR1-period. +*/ +struct CMD_LinePerfCountFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides far-end line performance counter values requested by + CMD_LinePerfCountFE_Get (Section 7.2.1.2 of G.997.1). These are wrap-around + counters which are not affected by the TR1-period. +*/ +struct ACK_LinePerfCountFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End FECS Count, LSW */ + DSL_uint16_t cntFECS_LSW; + /** Far-End FECS Count, MSW */ + DSL_uint16_t cntFECS_MSW; + /** Far-End ES Count, LSW */ + DSL_uint16_t cntES_LSW; + /** Far-End ES Count, MSW */ + DSL_uint16_t cntES_MSW; + /** Far-End SES Count, LSW */ + DSL_uint16_t cntSES_LSW; + /** Far-End SES Count, MSW */ + DSL_uint16_t cntSES_MSW; + /** Far-End LOSS Count, LSW */ + DSL_uint16_t cntLOSS_LSW; + /** Far-End LOSS Count, MSW */ + DSL_uint16_t cntLOSS_MSW; + /** Near-End UAS Count, LSW */ + DSL_uint16_t cntUAS_LSW; + /** Near-End UAS Count, MSW */ + DSL_uint16_t cntUAS_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End FECS Count, LSW */ + DSL_uint16_t cntFECS_LSW; + /** Far-End FECS Count, MSW */ + DSL_uint16_t cntFECS_MSW; + /** Far-End ES Count, LSW */ + DSL_uint16_t cntES_LSW; + /** Far-End ES Count, MSW */ + DSL_uint16_t cntES_MSW; + /** Far-End SES Count, LSW */ + DSL_uint16_t cntSES_LSW; + /** Far-End SES Count, MSW */ + DSL_uint16_t cntSES_MSW; + /** Far-End LOSS Count, LSW */ + DSL_uint16_t cntLOSS_LSW; + /** Far-End LOSS Count, MSW */ + DSL_uint16_t cntLOSS_MSW; + /** Near-End UAS Count, LSW */ + DSL_uint16_t cntUAS_LSW; + /** Near-End UAS Count, MSW */ + DSL_uint16_t cntUAS_MSW; +#endif +} __PACKED__ ; + + +/** + Requests near-end CRC counter values. These are wrap-around counters which + are not affected by the TR1-period. +*/ +struct CMD_CRC_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns near-end CRC counter values. (Section 7.2.2.1.1 of G.997.1). These + are wrap-around counters which are not affected by the TR1-period.The + "LP1/Fast Path" parameters are fed only in ADSL1 and ADSL1 Lite mode with + selected fast path and in VDSL/ADSL with RTX mode. +*/ +struct ACK_CRC_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End CRC Count LP0, LSW */ + DSL_uint16_t cntCVI_LSW; + /** Near-End CRC Count LP0, MSW */ + DSL_uint16_t cntCVI_MSW; + /** Near-End CRC Count LP1, LSW */ + DSL_uint16_t cntCVF_LSW; + /** Near-End CRC Count LP1, MSW */ + DSL_uint16_t cntCVF_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End CRC Count LP0, LSW */ + DSL_uint16_t cntCVI_LSW; + /** Near-End CRC Count LP0, MSW */ + DSL_uint16_t cntCVI_MSW; + /** Near-End CRC Count LP1, LSW */ + DSL_uint16_t cntCVF_LSW; + /** Near-End CRC Count LP1, MSW */ + DSL_uint16_t cntCVF_MSW; +#endif +} __PACKED__ ; + + +/** + Requests far-end CRC counter values. These are wrap-around counters which are + not affected by the TR1-period. +*/ +struct CMD_CRC_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns far-end CRC counter values. (Section 7.2.2.2.1 of G.997.1). These are + wrap-around counters which are not affected by the TR1-period.The "LP1/Fast + Path" parameters are fed in ADSL1 and ADSL1 Lite mode with selected fast path + and in VDSL with RTX mode. +*/ +struct ACK_CRC_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End CRC Count LP0, LSW */ + DSL_uint16_t cntCVI_LSW; + /** Far-End CRC Count LP0, MSW */ + DSL_uint16_t cntCVI_MSW; + /** Far-End CRC Count LP1, LSW */ + DSL_uint16_t cntCVF_LSW; + /** Far-End CRC Count LP1, MSW */ + DSL_uint16_t cntCVF_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End CRC Count LP0, LSW */ + DSL_uint16_t cntCVI_LSW; + /** Far-End CRC Count LP0, MSW */ + DSL_uint16_t cntCVI_MSW; + /** Far-End CRC Count LP1, LSW */ + DSL_uint16_t cntCVF_LSW; + /** Far-End CRC Count LP1, MSW */ + DSL_uint16_t cntCVF_MSW; +#endif +} __PACKED__ ; + + +/** + Requests near-end FEC counter values. These are wrap-around counters which + are not affected by the TR1-period. +*/ +struct CMD_FEC_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns near-end FEC counter values (Section 7.2.2.1.2 of G.997.1). These are + wrap-around counters which are not affected by the TR1-period.The "LP1/Fast + Path" parameters are fed only in ADSL1 and ADSL1 Lite mode with selected fast + path and in VDSL/ADSL with RTX mode. +*/ +struct ACK_FEC_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FEC Count LP0, LSW */ + DSL_uint16_t cntECI_LSW; + /** Near-End FEC Count LP0, MSW */ + DSL_uint16_t cntECI_MSW; + /** Near-End FEC Count LP1, LSW */ + DSL_uint16_t cntFEC_LSW; + /** Near-End FEC Count LP1, MSW */ + DSL_uint16_t cntFEC_MSW; + /** Near-End FEC Uncorrectable Count LP0, LSW */ + DSL_uint16_t cntECI_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP0, MSW */ + DSL_uint16_t cntECI_NoCorrMSW; + /** Near-End FEC Uncorrectable Count LP1, LSW */ + DSL_uint16_t cntECF_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP1, MSW */ + DSL_uint16_t cntECF_NoCorrMSW; + /** Near-End Total RS CW Count LP0, LSW */ + DSL_uint16_t cntECI_CW_LSW; + /** Near-End Total RS CW Count LP0, MSW */ + DSL_uint16_t cntECI_CW_MSW; + /** Near-End Total RS CW Count LP1, LSW */ + DSL_uint16_t cntECF_CW_LSW; + /** Near-End Total RS CW Count LP1, MSW */ + DSL_uint16_t cntECF_CW_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FEC Count LP0, LSW */ + DSL_uint16_t cntECI_LSW; + /** Near-End FEC Count LP0, MSW */ + DSL_uint16_t cntECI_MSW; + /** Near-End FEC Count LP1, LSW */ + DSL_uint16_t cntFEC_LSW; + /** Near-End FEC Count LP1, MSW */ + DSL_uint16_t cntFEC_MSW; + /** Near-End FEC Uncorrectable Count LP0, LSW */ + DSL_uint16_t cntECI_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP0, MSW */ + DSL_uint16_t cntECI_NoCorrMSW; + /** Near-End FEC Uncorrectable Count LP1, LSW */ + DSL_uint16_t cntECF_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP1, MSW */ + DSL_uint16_t cntECF_NoCorrMSW; + /** Near-End Total RS CW Count LP0, LSW */ + DSL_uint16_t cntECI_CW_LSW; + /** Near-End Total RS CW Count LP0, MSW */ + DSL_uint16_t cntECI_CW_MSW; + /** Near-End Total RS CW Count LP1, LSW */ + DSL_uint16_t cntECF_CW_LSW; + /** Near-End Total RS CW Count LP1, MSW */ + DSL_uint16_t cntECF_CW_MSW; +#endif +} __PACKED__ ; + + +/** + Requests far-end FEC counter values. These are wrap-around counters which are + not affected by the TR1-period. +*/ +struct CMD_FEC_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns far-end FEC counter values (Section 7.2.2.2.2 of G.997.1). These are + wrap-around counters which are not affected by the TR1-period.The "LP1/Fast + Path" parameters are fed in ADSL1 and ADSL1 Lite mode with selected fast path + and in VDSL with RTX mode. +*/ +struct ACK_FEC_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End FEC Count LP0, LSW */ + DSL_uint16_t cntECI_LSW; + /** Far-End FEC Count LP0, MSW */ + DSL_uint16_t cntECI_MSW; + /** Far-End FEC Count LP1, LSW */ + DSL_uint16_t cntFEC_LSW; + /** Far-End FEC Count LP1, MSW */ + DSL_uint16_t cntFEC_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End FEC Count LP0, LSW */ + DSL_uint16_t cntECI_LSW; + /** Far-End FEC Count LP0, MSW */ + DSL_uint16_t cntECI_MSW; + /** Far-End FEC Count LP1, LSW */ + DSL_uint16_t cntFEC_LSW; + /** Far-End FEC Count LP1, MSW */ + DSL_uint16_t cntFEC_MSW; +#endif +} __PACKED__ ; + + +/** + Requests the near-end 15 minutes SOS counter values. +*/ +struct CMD_SOS_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns near-end SOS counter values. (Section 7.2.1.6.1 of G.997.1) +*/ +struct ACK_SOS_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End SOS Success Count LP0, LSW */ + DSL_uint16_t cntSOS_SUC_LSW; + /** Near-End SOS Success Count LP0, MSW */ + DSL_uint16_t cntSOS_SUC_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End SOS Success Count LP0, LSW */ + DSL_uint16_t cntSOS_SUC_LSW; + /** Near-End SOS Success Count LP0, MSW */ + DSL_uint16_t cntSOS_SUC_MSW; +#endif +} __PACKED__ ; + + +/** + Requests the far-end 15 minutes SOS counter values. These are wrap-around + counters which are not affected by the TR1-period. +*/ +struct CMD_SOS_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Returns far-end SOS counter values. (Section 7.2.1.7.1 of G.997.1) +*/ +struct ACK_SOS_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End SOS Success Count LP0, LSW */ + DSL_uint16_t cntSOS_SUC_LSW; + /** Far-End SOS Success Count LP0, MSW */ + DSL_uint16_t cntSOS_SUC_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Far-End SOS Success Count LP0, LSW */ + DSL_uint16_t cntSOS_SUC_LSW; + /** Far-End SOS Success Count LP0, MSW */ + DSL_uint16_t cntSOS_SUC_MSW; +#endif +} __PACKED__ ; + + +/** + Writes near-end line performance counter values (total wrap-around)(Section + 7.2.1.1 of G.997.1). +*/ +struct CMD_LinePerfCountNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FECS Count, LSW */ + DSL_uint16_t cntFECS_LSW; + /** Near-End FECS Count, MSW */ + DSL_uint16_t cntFECS_MSW; + /** Near-End ES Count, LSW */ + DSL_uint16_t cntES_LSW; + /** Near-End ES Count, MSW */ + DSL_uint16_t cntES_MSW; + /** Near-End SES Count, LSW */ + DSL_uint16_t cntSES_LSW; + /** Near-End SES Count, MSW */ + DSL_uint16_t cntSES_MSW; + /** Near-End LOSS Count, LSW */ + DSL_uint16_t cntLOSS_LSW; + /** Near-End LOSS Count, MSW */ + DSL_uint16_t cntLOSS_MSW; + /** Near-End UAS Count, LSW */ + DSL_uint16_t cntUAS_LSW; + /** Near-End UAS Count, MSW */ + DSL_uint16_t cntUAS_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FECS Count, LSW */ + DSL_uint16_t cntFECS_LSW; + /** Near-End FECS Count, MSW */ + DSL_uint16_t cntFECS_MSW; + /** Near-End ES Count, LSW */ + DSL_uint16_t cntES_LSW; + /** Near-End ES Count, MSW */ + DSL_uint16_t cntES_MSW; + /** Near-End SES Count, LSW */ + DSL_uint16_t cntSES_LSW; + /** Near-End SES Count, MSW */ + DSL_uint16_t cntSES_MSW; + /** Near-End LOSS Count, LSW */ + DSL_uint16_t cntLOSS_LSW; + /** Near-End LOSS Count, MSW */ + DSL_uint16_t cntLOSS_MSW; + /** Near-End UAS Count, LSW */ + DSL_uint16_t cntUAS_LSW; + /** Near-End UAS Count, MSW */ + DSL_uint16_t cntUAS_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_LinePerfCountNE_Set. +*/ +struct ACK_LinePerfCountNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Writes the near-end CRC counter values (Section 7.2.2.1.1 of G.997.1)The + "LP1/Fast Path" parameters are used only in ADSL1 and ADSL1 Lite mode with + selected "Fast Path". +*/ +struct CMD_CRC_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End CRC Count LP0, LSW */ + DSL_uint16_t cntCVI_LSW; + /** Near-End CRC Count LP0, MSW */ + DSL_uint16_t cntCVI_MSW; + /** Near-End CRC Count LP1, LSW */ + DSL_uint16_t cntCVF_LSW; + /** Near-End CRC Count LP1, MSW */ + DSL_uint16_t cntCVF_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End CRC Count LP0, LSW */ + DSL_uint16_t cntCVI_LSW; + /** Near-End CRC Count LP0, MSW */ + DSL_uint16_t cntCVI_MSW; + /** Near-End CRC Count LP1, LSW */ + DSL_uint16_t cntCVF_LSW; + /** Near-End CRC Count LP1, MSW */ + DSL_uint16_t cntCVF_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_CRC_StatsNE_Set. +*/ +struct ACK_CRC_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Writes near-end FEC counter values. (Section 7.2.2.1.2 of G.997.1)The + "LP1/Fast Path" parameters are used only in ADSL1 and ADSL1 Lite mode with + selected "Fast Path". +*/ +struct CMD_FEC_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FEC Count LP0, LSW */ + DSL_uint16_t cntECI_LSW; + /** Near-End FEC Count LP0, MSW */ + DSL_uint16_t cntECI_MSW; + /** Near-End FEC Count LP1, LSW */ + DSL_uint16_t cntFEC_LSW; + /** Near-End FEC Count LP1, MSW */ + DSL_uint16_t cntFEC_MSW; + /** Near-End FEC Uncorrectable Count LP0, LSW */ + DSL_uint16_t cntECI_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP0, MSW */ + DSL_uint16_t cntECI_NoCorrMSW; + /** Near-End FEC Uncorrectable Count LP1, LSW */ + DSL_uint16_t cntECF_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP1, MSW */ + DSL_uint16_t cntECF_NoCorrMSW; + /** Near-End Total RS CW Count LP0, LSW */ + DSL_uint16_t cntECI_CW_LSW; + /** Near-End Total RS CW Count LP0, MSW */ + DSL_uint16_t cntECI_CW_MSW; + /** Near-End Total RS CW Count LP1, LSW */ + DSL_uint16_t cntECF_CW_LSW; + /** Near-End Total RS CW Count LP1, MSW */ + DSL_uint16_t cntECF_CW_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End FEC Count LP0, LSW */ + DSL_uint16_t cntECI_LSW; + /** Near-End FEC Count LP0, MSW */ + DSL_uint16_t cntECI_MSW; + /** Near-End FEC Count LP1, LSW */ + DSL_uint16_t cntFEC_LSW; + /** Near-End FEC Count LP1, MSW */ + DSL_uint16_t cntFEC_MSW; + /** Near-End FEC Uncorrectable Count LP0, LSW */ + DSL_uint16_t cntECI_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP0, MSW */ + DSL_uint16_t cntECI_NoCorrMSW; + /** Near-End FEC Uncorrectable Count LP1, LSW */ + DSL_uint16_t cntECF_NoCorrLSW; + /** Near-End FEC Uncorrectable Count LP1, MSW */ + DSL_uint16_t cntECF_NoCorrMSW; + /** Near-End Total RS CW Count LP0, LSW */ + DSL_uint16_t cntECI_CW_LSW; + /** Near-End Total RS CW Count LP0, MSW */ + DSL_uint16_t cntECI_CW_MSW; + /** Near-End Total RS CW Count LP1, LSW */ + DSL_uint16_t cntECF_CW_LSW; + /** Near-End Total RS CW Count LP1, MSW */ + DSL_uint16_t cntECF_CW_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_FEC_StatsNE_Set. +*/ +struct ACK_FEC_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Writes near-end SOS counter values. ("SOS-SUCCESS-NE", Section 7.2.1.6.1 of + G.997.1). +*/ +struct CMD_SOS_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End SOS Success Count LP0, LSW */ + DSL_uint16_t cntSOS_SUC_LSW; + /** Near-End SOS Success Count LP0, MSW */ + DSL_uint16_t cntSOS_SUC_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-End SOS Success Count LP0, LSW */ + DSL_uint16_t cntSOS_SUC_LSW; + /** Near-End SOS Success Count LP0, MSW */ + DSL_uint16_t cntSOS_SUC_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for CMD_SOS_StatsNE_Set. +*/ +struct ACK_SOS_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets the running time since midnightModifying the Time does not affect the + TR1 supervision period and the TR1-counters. +*/ +struct CMD_TimeSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0[3]; + /** NE Time */ + VRX_TIME_t timeNE; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0[3]; + /** NE Time */ + VRX_TIME_t timeNE; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_TimeSet. +*/ +struct ACK_TimeSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the status of the "Set Time and Read Time" EOC messages. +*/ +struct CMD_TimeGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the status of the "Set Time and Read Time" EOC messages. +*/ +struct ACK_TimeGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** FE Time */ + VRX_TIME_t timeFE; + /** NE Time */ + VRX_TIME_t timeNE; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0; + /** FE Time */ + VRX_TIME_t timeFE; + /** NE Time */ + VRX_TIME_t timeNE; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_PERF_PMD_H_*/ diff --git a/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_tc_counters.h b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_tc_counters.h new file mode 100644 index 0000000000000000000000000000000000000000..d94b77b199691dddb6264fc862985902f950a608 --- /dev/null +++ b/src/include/mcat3.1/drv_dsl_cpe_vrx_msg_tc_counters.h @@ -0,0 +1,2199 @@ +/****************************************************************************** + + Copyright (c) 2007-2017 + Lantiq Beteiligungs-GmbH & Co. KG + + For licensing information, see the file 'LICENSE' in the root folder of + this software module. + +******************************************************************************/ + + +#ifndef _DRV_DSL_CPE_VRX_MSG_TC_COUNTERS_H_ +#define _DRV_DSL_CPE_VRX_MSG_TC_COUNTERS_H_ + +/** \file + +*/ + +#ifndef __PACKED__ + #if defined (__GNUC__) || defined (__GNUG__) + /* GNU C or C++ compiler */ + #define __PACKED__ __attribute__ ((packed)) + #else + /* Byte alignment adjustment */ + #pragma pack(1) + #define __PACKED__ /* nothing */ + #endif + #define __PACKED_DEFINED__ 1 +#endif + + +/** @defgroup _TC_COUNTERS_ + * @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* ----- Message Specific Constants Definition section ----- */ +#define ACK_TC_StatusGet_UNKNOWN_TC 0x0 +#define ACK_TC_StatusGet_EFM_TC 0x1 +#define ACK_TC_StatusGet_ATM_TC 0x2 +#define EVT_TC_StatusGet_EFM_TC 0x1 +#define EVT_TC_StatusGet_ATM_TC 0x2 +#define CMD_TC_FW_InfoSet_EFM_TC 0x1 +#define CMD_TC_FW_InfoSet_ATM_TC 0x2 +#define ACK_VersionInfoGet_VRX518 0x0 +#define ACK_VersionInfoGet_VRX517 0x1 +#define ACK_VersionInfoGet_HW_VER11 0x0 +#define ACK_VersionInfoGet_HW_VER12 0x1 +#define ACK_VersionInfoGet_VRX200 0x05 +#define ACK_VersionInfoGet_VRX300 0x07 +#define ACK_VersionInfoGet_VRX500 0x08 +#define ACK_VersionInfoGet_R3 10 +#define ACK_VersionInfoGet_R4 11 +#define ACK_VersionInfoGet_R5 12 +#define ACK_VersionInfoGet_RELEASE 0 +#define ACK_VersionInfoGet_PRERELEASE 1 +#define ACK_VersionInfoGet_DEVELOP 3 +#define ACK_VersionInfoGet_ADSL_A 1 +#define ACK_VersionInfoGet_ADSL_BJ 2 +#define ACK_VersionInfoGet_VDSL2 6 +#define CMD_PAF_HS_Continue_WAIT 0x0 +#define CMD_PAF_HS_Continue_CONTINUE 0x1 +/* ----- Message Specific Constants Definition section (End) ----- */ + +/** Message ID for CMD_TC_StatusGet */ +#define CMD_TC_STATUSGET 0x0E22 + +/** + The message reads the used TC.In ADSL the TC type is selected during G.HS and + thus known when entering FULL_INIT. In VDSL it is selected later, during + FULL_INIT. Before this point the FW will report the TC as "unknown". +*/ +typedef struct CMD_TC_StatusGet CMD_TC_StatusGet_t; + +/** Message ID for ACK_TC_StatusGet */ +#define ACK_TC_STATUSGET 0x0E22 + +/** + Reporting of the used TC mode. +*/ +typedef struct ACK_TC_StatusGet ACK_TC_StatusGet_t; + +/** Message ID for EVT_TC_StatusGet */ +#define EVT_TC_STATUSGET 0x0E22 + +/** + This autonomous Event reports the to be used TC mode after being known. In R7 + FW (w.7.x.y.z.a) only generated when enabled in CMD_Misc_ConfigSet TcTypeEvt. +*/ +typedef struct EVT_TC_StatusGet EVT_TC_StatusGet_t; + +/** Message ID for CMD_TC_FW_InfoSet */ +#define CMD_TC_FW_INFOSET 0x1762 + +/** + The message informs the DSL-FW about the currently loaded TC FW driver. +*/ +typedef struct CMD_TC_FW_InfoSet CMD_TC_FW_InfoSet_t; + +/** Message ID for ACK_TC_FW_InfoSet */ +#define ACK_TC_FW_INFOSET 0x1762 + +/** + Acknowledgement to CMD_TC_FW_InfoSet. +*/ +typedef struct ACK_TC_FW_InfoSet ACK_TC_FW_InfoSet_t; + +/** Message ID for CMD_MAC_FrameConfigure */ +#define CMD_MAC_FRAMECONFIGURE 0x5348 + +/** + The message configures Ethernet properties, currently the MAC address of the + device only.The MAC address is needed in the FW as "MAC source address"for + PDUs not built by the host, like e.g. for the Ethernet encapsulated + Backchannel Data ERB in Vectoring. +*/ +typedef struct CMD_MAC_FrameConfigure CMD_MAC_FrameConfigure_t; + +/** Message ID for ACK_MAC_FrameConfigure */ +#define ACK_MAC_FRAMECONFIGURE 0x5348 + +/** + Acknowledgement to CMD_MAC_FrameConfigure. +*/ +typedef struct ACK_MAC_FrameConfigure ACK_MAC_FrameConfigure_t; + +/** Message ID for CMD_DataPathFailuresAlarmConfigure */ +#define CMD_DATAPATHFAILURESALARMCONFIGURE 0x1249 + +/** + Enables/Disables the generation of ALARM messages (ALM) for specific data- + path failures. If the corresponding Enable bit for a failure is set, then the + modem firmware will send an autonomous message ALM_DataPathFailuresGet if + this failure occurs. +*/ +typedef struct CMD_DataPathFailuresAlarmConfigure CMD_DataPathFailuresAlarmConfigure_t; + +/** Message ID for ACK_DataPathFailuresAlarmConfigure */ +#define ACK_DATAPATHFAILURESALARMCONFIGURE 0x1249 + +/** + Acknowledgement to CMD_DataPathFailuresAlarmConfigure. +*/ +typedef struct ACK_DataPathFailuresAlarmConfigure ACK_DataPathFailuresAlarmConfigure_t; + +/** Message ID for CMD_DataPathFailuresGet */ +#define CMD_DATAPATHFAILURESGET 0x0507 + +/** + Requests the data-path failure status. +*/ +typedef struct CMD_DataPathFailuresGet CMD_DataPathFailuresGet_t; + +/** Message ID for ACK_DataPathFailuresGet */ +#define ACK_DATAPATHFAILURESGET 0x0507 + +/** + Provides the data path failure status as requested by the command + CMD_DataPathFailuresGet. +*/ +typedef struct ACK_DataPathFailuresGet ACK_DataPathFailuresGet_t; + +/** Message ID for ALM_DataPathFailuresGet */ +#define ALM_DATAPATHFAILURESGET 0x0507 + +/** + This autonomous message reports the data-path failure status. It is sent only + if the message generation was enabled for the corresponding failure with + CMD_DataPathFailuresAlarmConfigure. +*/ +typedef struct ALM_DataPathFailuresGet ALM_DataPathFailuresGet_t; + +/** Message ID for CMD_PTM_BC0_StatsNE_Get */ +#define CMD_PTM_BC0_STATSNE_GET 0x2D0A + +/** + Requests the values of the near-end PTM data path performance counters for + bearer channel 0 (BC0) as defined in G.997.1 (Section 7.2.5.1. of [11]).The + counters are total counters. +*/ +typedef struct CMD_PTM_BC0_StatsNE_Get CMD_PTM_BC0_StatsNE_Get_t; + +/** Message ID for ACK_PTM_BC0_StatsNE_Get */ +#define ACK_PTM_BC0_STATSNE_GET 0x2D0A + +/** + Delivers the near-end total TPS-TC counter values for bearer channel 0 (BC0) + as requested by CMD_PTM_BC0_StatsNE_Get. (Section 7.2.5.1. of [11]) +*/ +typedef struct ACK_PTM_BC0_StatsNE_Get ACK_PTM_BC0_StatsNE_Get_t; + +/** Message ID for CMD_PTM_BC0_StatsNE_Set */ +#define CMD_PTM_BC0_STATSNE_SET 0x2D4A + +/** + Writes the TPS-TC CRC error and TPS-TC coding violation counters (Section + 7.2.5.1. of G.997.1 [11]).Why writing these counters? For "automoding", + meaning modems configured to support both ADSL and VDLS with automatic mode + selection. The first retrain is always done with an ADSL FW independent of + what was loaded before. Therefore, the counters must be saved by the host + before destroying them by the FW download and are written back before the + next link start of a FW that supports PTM. +*/ +typedef struct CMD_PTM_BC0_StatsNE_Set CMD_PTM_BC0_StatsNE_Set_t; + +/** Message ID for ACK_PTM_BC0_StatsNE_Set */ +#define ACK_PTM_BC0_STATSNE_SET 0x2D4A + +/** + Acknowledgement for the message CMD_PTM_BC0_StatsNE_Set. +*/ +typedef struct ACK_PTM_BC0_StatsNE_Set ACK_PTM_BC0_StatsNE_Set_t; + +/** Message ID for CMD_ATM_BC0_StatsNE_Get */ +#define CMD_ATM_BC0_STATSNE_GET 0x2E0A + +/** + This command is used to request the near-end data-path performance counters + for BC0 of an ATM-TC link as defined in Section 7.2.4. of G.997.1 [11]. +*/ +typedef struct CMD_ATM_BC0_StatsNE_Get CMD_ATM_BC0_StatsNE_Get_t; + +/** Message ID for ACK_ATM_BC0_StatsNE_Get */ +#define ACK_ATM_BC0_STATSNE_GET 0x2E0A + +/** + Provides the total near-end ATM-TC performance counters for bearer channel 0 + (BC0) as requested by the command CMD_ATM_BC0_StatsNE_Get.ADSL1/ADSL1 Lite + Fast Path reports its ATM -TC counters in this message too. +*/ +typedef struct ACK_ATM_BC0_StatsNE_Get ACK_ATM_BC0_StatsNE_Get_t; + +/** Message ID for CMD_ATM_BC0_StatsFE_Get */ +#define CMD_ATM_BC0_STATSFE_GET 0x330A + +/** + This command is used to request the far-end data-path performance counters + for BC0 of an ATM-TC link as defined in Section 7.2.4.2 of G.997.1 [11]. +*/ +typedef struct CMD_ATM_BC0_StatsFE_Get CMD_ATM_BC0_StatsFE_Get_t; + +/** Message ID for ACK_ATM_BC0_StatsFE_Get */ +#define ACK_ATM_BC0_STATSFE_GET 0x330A + +/** + Provides the total near-end ATM-TC performance counters for bearer channel 0 + (BC0) as requested by the command CMD_ATM_BC0_StatsFE_Get. +*/ +typedef struct ACK_ATM_BC0_StatsFE_Get ACK_ATM_BC0_StatsFE_Get_t; + +/** Message ID for CMD_ATM_BC0_StatsNE_Set */ +#define CMD_ATM_BC0_STATSNE_SET 0x2E4A + +/** + Writes the data-path performance counters for bearer channel 0 (BC0) of an + ATM-TC link (Section 7.2.4. of G.997.1 [11]).Why writing counters? The ADSL + FW of the VRX destroys the performance counters at the beginning of a re- + initialization since it starts with a FW download. Therefore the host has to + save the counters in FAIL state before triggering a re-init. When + reconfiguring the system in RESET state, the host writes the saved values as + start values back into the counters. To do this for the ATM-TC counters, this + message is used. +*/ +typedef struct CMD_ATM_BC0_StatsNE_Set CMD_ATM_BC0_StatsNE_Set_t; + +/** Message ID for ACK_ATM_BC0_StatsNE_Set */ +#define ACK_ATM_BC0_STATSNE_SET 0x2E4A + +/** + Acknowledgement for the message CMD_ATM_BC0_StatsNE_Set. +*/ +typedef struct ACK_ATM_BC0_StatsNE_Set ACK_ATM_BC0_StatsNE_Set_t; + +/** Message ID for CMD_ATM_BC0_TxStatsNE_Get */ +#define CMD_ATM_BC0_TXSTATSNE_GET 0x350A + +/** + Requests near-end ATM datapath performance transmit counters for bearer + channel 0 (BC0). +*/ +typedef struct CMD_ATM_BC0_TxStatsNE_Get CMD_ATM_BC0_TxStatsNE_Get_t; + +/** Message ID for ACK_ATM_BC0_TxStatsNE_Get */ +#define ACK_ATM_BC0_TXSTATSNE_GET 0x350A + +/** + Provides the ATM-TC transmit counters for beare channel 0 (BC0) as requested + by the command CMD_ATM_BC0_TxStatsNE_Get.ADSL1/ADSL1 Lite Fast Path reports + its ATM -TC counters in this message too. +*/ +typedef struct ACK_ATM_BC0_TxStatsNE_Get ACK_ATM_BC0_TxStatsNE_Get_t; + +/** Message ID for CMD_ATM_BC0_TxStatsNE_Set */ +#define CMD_ATM_BC0_TXSTATSNE_SET 0x354A + +/** + Writes the transmit data-path counters for BC0 of an ATM-TC link.For "Why + writing performance counters" see Page 669. +*/ +typedef struct CMD_ATM_BC0_TxStatsNE_Set CMD_ATM_BC0_TxStatsNE_Set_t; + +/** Message ID for ACK_ATM_BC0_TxStatsNE_Set */ +#define ACK_ATM_BC0_TXSTATSNE_SET 0x354A + +/** + Acknowledgement for the message CMD_ATM_BC0_TxStatsNE_Set. +*/ +typedef struct ACK_ATM_BC0_TxStatsNE_Set ACK_ATM_BC0_TxStatsNE_Set_t; + +/** Message ID for CMD_VersionInfoGet */ +#define CMD_VERSIONINFOGET 0x0010 + +/** + Requests version information from the VDSL2-Modem. +*/ +typedef struct CMD_VersionInfoGet CMD_VersionInfoGet_t; + +/** Message ID for ACK_VersionInfoGet */ +#define ACK_VERSIONINFOGET 0x0010 + +/** + Provides version information about hardware and firmware. The FW version + numbering scheme has a long and a short form (Table 368). +*/ +typedef struct ACK_VersionInfoGet ACK_VersionInfoGet_t; + +/** Message ID for CMD_PPA_FwVersionSet */ +#define CMD_PPA_FWVERSIONSET 0x2362 + +/** + Writes the PPA subsystem version to the DSL FW. +*/ +typedef struct CMD_PPA_FwVersionSet CMD_PPA_FwVersionSet_t; + +/** Message ID for ACK_PPA_FwVersionSet */ +#define ACK_PPA_FWVERSIONSET 0x2362 + +/** + Acknowledgement for message CMD_PPA_FwVersionSet. +*/ +typedef struct ACK_PPA_FwVersionSet ACK_PPA_FwVersionSet_t; + +/** Message ID for CMD_PPA_FwVersionGet */ +#define CMD_PPA_FWVERSIONGET 0x2322 + +/** + Requests the PPA Subsystem Version number (Read-back). +*/ +typedef struct CMD_PPA_FwVersionGet CMD_PPA_FwVersionGet_t; + +/** Message ID for ACK_PPA_FwVersionGet */ +#define ACK_PPA_FWVERSIONGET 0x2322 + +/** + Provides the PPA subsystem version. Read back of the value previously written + by CMD_PPA_FwVersionSet. +*/ +typedef struct ACK_PPA_FwVersionGet ACK_PPA_FwVersionGet_t; + +/** Message ID for CMD_PPE_FwVersionGet */ +#define CMD_PPE_FWVERSIONGET 0x2422 + +/** + Requests the PPE FW Version number. +*/ +typedef struct CMD_PPE_FwVersionGet CMD_PPE_FwVersionGet_t; + +/** Message ID for ACK_PPE_FwVersionGet */ +#define ACK_PPE_FWVERSIONGET 0x2422 + +/** + Provides the PPE FW version number. +*/ +typedef struct ACK_PPE_FwVersionGet ACK_PPE_FwVersionGet_t; + +/** Message ID for CMD_ADSL_FeatureMapGet */ +#define CMD_ADSL_FEATUREMAPGET 0x1322 + +/** + Requests the feature map indicating the ADSL FW features supported by this + binary. +*/ +typedef struct CMD_ADSL_FeatureMapGet CMD_ADSL_FeatureMapGet_t; + +/** Message ID for ACK_ADSL_FeatureMapGet */ +#define ACK_ADSL_FEATUREMAPGET 0x1322 + +/** + Reports the feature map indicating the ADSL FW features supported by this + binary. +*/ +typedef struct ACK_ADSL_FeatureMapGet ACK_ADSL_FeatureMapGet_t; + +/** Message ID for CMD_VDSL_FeatureMapGet */ +#define CMD_VDSL_FEATUREMAPGET 0x1422 + +/** + Requests the feature map indicating the VDSL FW features supported by this + binary. +*/ +typedef struct CMD_VDSL_FeatureMapGet CMD_VDSL_FeatureMapGet_t; + +/** Message ID for ACK_VDSL_FeatureMapGet */ +#define ACK_VDSL_FEATUREMAPGET 0x1422 + +/** + Reports the feature map indicating the VDSL FW features supported by this + binary. +*/ +typedef struct ACK_VDSL_FeatureMapGet ACK_VDSL_FeatureMapGet_t; + +/** Message ID for CMD_PAF_HS_Control */ +#define CMD_PAF_HS_CONTROL 0x1148 + +/** + The message is used to enable bonding (PAF) and to control the GHS + aggregation discovery and aggregation processes. The register numbers + referenced refer to IEEE 802.3ah [14], Clause 45. +*/ +typedef struct CMD_PAF_HS_Control CMD_PAF_HS_Control_t; + +/** Message ID for ACK_PAF_HS_Control */ +#define ACK_PAF_HS_CONTROL 0x1148 + +/** + The message acknowledges CMD_PAF_HS_Control. +*/ +typedef struct ACK_PAF_HS_Control ACK_PAF_HS_Control_t; + +/** Message ID for CMD_PAF_HS_ControlGet */ +#define CMD_PAF_HS_CONTROLGET 0x1108 + +/** + The message reads back settings for bonding configured with + CMD_PAF_HS_Control. +*/ +typedef struct CMD_PAF_HS_ControlGet CMD_PAF_HS_ControlGet_t; + +/** Message ID for ACK_PAF_HS_ControlGet */ +#define ACK_PAF_HS_CONTROLGET 0x1108 + +/** + The message acknowledges CMD_PAF_HS_ControlGet providing PAF bonding + parameters used in handshake as configured with CMD_PAF_HS_Control. +*/ +typedef struct ACK_PAF_HS_ControlGet ACK_PAF_HS_ControlGet_t; + +/** Message ID for CMD_PAF_HS_StatusGet */ +#define CMD_PAF_HS_STATUSGET 0xDD03 + +/** + The message requests aggregation discovery and aggregation status information + for EFM bonding. +*/ +typedef struct CMD_PAF_HS_StatusGet CMD_PAF_HS_StatusGet_t; + +/** Message ID for ACK_PAF_HS_StatusGet */ +#define ACK_PAF_HS_STATUSGET 0xDD03 + +/** + The message reports discovery and aggregation status information for EFM + bonding after request by CMD_PAF_HS_StatusGet.At the CPE side, the Host SW + concludes on a GET request if none of the following 4 bits are set: + discoveryClearIfSame, discoverySetIfClear, aggregClear , aggregSet. It does + not distinguish between "discovery GET" and "aggregation GET"; in case of any + "GET" both the discovery and the aggregation code are sent to the CO with the + CLR. +*/ +typedef struct ACK_PAF_HS_StatusGet ACK_PAF_HS_StatusGet_t; + +/** Message ID for CMD_PAF_HS_Continue */ +#define CMD_PAF_HS_CONTINUE 0x0C62 + +/** + The message writes the aggregation discovery code and the aggregation data + down to the FW and is used to trigger the CPE-FW to proceed in handshake + (sending CLR) after it had been waiting in GHS_BONDING_CLR state for the + necessary host interactions to be finished. These actions depend on the + request type (see ACK_PAF_HS_StatusGet): the processing of the remote + discovery register (for an aggregation discovery "Set If Clear" or "Clear If + Same" command) or PME Aggregate register (for an aggregation "Set" or "Clear" + command) in the SW and -in any case including a "Get" command - then updating + the local representations of both in the FW (which are sent to the CO in a + CLR). +*/ +typedef struct CMD_PAF_HS_Continue CMD_PAF_HS_Continue_t; + +/** Message ID for ACK_PAF_HS_Continue */ +#define ACK_PAF_HS_CONTINUE 0x0C62 + +/** + The message acknowledges CMD_PAF_HS_Continue. +*/ +typedef struct ACK_PAF_HS_Continue ACK_PAF_HS_Continue_t; + +/** Message ID for CMD_PAF_PME_ID_Set */ +#define CMD_PAF_PME_ID_SET 0x5948 + +/** + Sets the PME identification number. This number is transferred with the CLR + message to the CO. +*/ +typedef struct CMD_PAF_PME_ID_Set CMD_PAF_PME_ID_Set_t; + +/** Message ID for ACK_PAF_PME_ID_Set */ +#define ACK_PAF_PME_ID_SET 0x5948 + +/** + The message acknowledges CMD_PAF_PME_ID_Set. +*/ +typedef struct ACK_PAF_PME_ID_Set ACK_PAF_PME_ID_Set_t; + +/** + The message reads the used TC.In ADSL the TC type is selected during G.HS and + thus known when entering FULL_INIT. In VDSL it is selected later, during + FULL_INIT. Before this point the FW will report the TC as "unknown". +*/ +struct CMD_TC_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reporting of the used TC mode. +*/ +struct ACK_TC_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TC Used */ + DSL_uint16_t TC; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TC Used */ + DSL_uint16_t TC; +#endif +} __PACKED__ ; + + +/** + This autonomous Event reports the to be used TC mode after being known. In R7 + FW (w.7.x.y.z.a) only generated when enabled in CMD_Misc_ConfigSet TcTypeEvt. +*/ +struct EVT_TC_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TC Used */ + DSL_uint16_t TC; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TC Used */ + DSL_uint16_t TC; +#endif +} __PACKED__ ; + + +/** + The message informs the DSL-FW about the currently loaded TC FW driver. +*/ +struct CMD_TC_FW_InfoSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TC Loaded */ + DSL_uint16_t loadedTC; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TC Loaded */ + DSL_uint16_t loadedTC; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_TC_FW_InfoSet. +*/ +struct ACK_TC_FW_InfoSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message configures Ethernet properties, currently the MAC address of the + device only.The MAC address is needed in the FW as "MAC source address"for + PDUs not built by the host, like e.g. for the Ethernet encapsulated + Backchannel Data ERB in Vectoring. +*/ +struct CMD_MAC_FrameConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Source MAC Address Octets 0 to 1 */ + DSL_uint16_t SrcMacAddrB0_1; + /** Source MAC Address Octets 2 to 3 */ + DSL_uint16_t SrcMacAddrB2_3; + /** Source MAC Address Octets 4 to 5 */ + DSL_uint16_t SrcMacAddrB4_5; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Source MAC Address Octets 0 to 1 */ + DSL_uint16_t SrcMacAddrB0_1; + /** Source MAC Address Octets 2 to 3 */ + DSL_uint16_t SrcMacAddrB2_3; + /** Source MAC Address Octets 4 to 5 */ + DSL_uint16_t SrcMacAddrB4_5; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_MAC_FrameConfigure. +*/ +struct ACK_MAC_FrameConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Enables/Disables the generation of ALARM messages (ALM) for specific data- + path failures. If the corresponding Enable bit for a failure is set, then the + modem firmware will send an autonomous message ALM_DataPathFailuresGet if + this failure occurs. +*/ +struct CMD_DataPathFailuresAlarmConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC1 : 1; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 6; + /** OOS Failure NE, BC1 */ + DSL_uint16_t OOS_NE_BC1 : 1; + /** OOS Failure NE, BC0 */ + DSL_uint16_t OOS_NE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 4; + /** LCD Failure FE, BC1 */ + DSL_uint16_t LCD_FE_BC1 : 1; + /** NCD Failure FE, BC1 */ + DSL_uint16_t NCD_FE_BC1 : 1; + /** LCD Failure FE, BC0 */ + DSL_uint16_t LCD_FE_BC0 : 1; + /** NCD Failure FE, BC0 */ + DSL_uint16_t NCD_FE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 4; + /** LCD Failure NE, BC1 */ + DSL_uint16_t LCD_NE_BC1 : 1; + /** NCD Failure NE, BC1 */ + DSL_uint16_t NCD_NE_BC1 : 1; + /** LCD Failure NE, BC0 */ + DSL_uint16_t LCD_NE_BC0 : 1; + /** NCD Failure NE, BC0 */ + DSL_uint16_t NCD_NE_BC0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** OOS Failure NE, BC0 */ + DSL_uint16_t OOS_NE_BC0 : 1; + /** OOS Failure NE, BC1 */ + DSL_uint16_t OOS_NE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 6; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC0 : 1; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** NCD Failure NE, BC0 */ + DSL_uint16_t NCD_NE_BC0 : 1; + /** LCD Failure NE, BC0 */ + DSL_uint16_t LCD_NE_BC0 : 1; + /** NCD Failure NE, BC1 */ + DSL_uint16_t NCD_NE_BC1 : 1; + /** LCD Failure NE, BC1 */ + DSL_uint16_t LCD_NE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 4; + /** NCD Failure FE, BC0 */ + DSL_uint16_t NCD_FE_BC0 : 1; + /** LCD Failure FE, BC0 */ + DSL_uint16_t LCD_FE_BC0 : 1; + /** NCD Failure FE, BC1 */ + DSL_uint16_t NCD_FE_BC1 : 1; + /** LCD Failure FE, BC1 */ + DSL_uint16_t LCD_FE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 4; +#endif +} __PACKED__ ; + + +/** + Acknowledgement to CMD_DataPathFailuresAlarmConfigure. +*/ +struct ACK_DataPathFailuresAlarmConfigure +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the data-path failure status. +*/ +struct CMD_DataPathFailuresGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the data path failure status as requested by the command + CMD_DataPathFailuresGet. +*/ +struct ACK_DataPathFailuresGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC1 : 1; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 6; + /** OOS Failure NE, BC1 */ + DSL_uint16_t OOS_NE_BC1 : 1; + /** OOS Failure NE, BC0 */ + DSL_uint16_t OOS_NE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 4; + /** LCD Failure FE, BC1 */ + DSL_uint16_t LCD_FE_BC1 : 1; + /** NCD Failure FE, BC1 */ + DSL_uint16_t NCD_FE_BC1 : 1; + /** LCD Failure FE, BC0 */ + DSL_uint16_t LCD_FE_BC0 : 1; + /** NCD Failure FE, BC0 */ + DSL_uint16_t NCD_FE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 4; + /** LCD Failure NE, BC1 */ + DSL_uint16_t LCD_NE_BC1 : 1; + /** NCD Failure NE, BC1 */ + DSL_uint16_t NCD_NE_BC1 : 1; + /** LCD Failure NE, BC0 */ + DSL_uint16_t LCD_NE_BC0 : 1; + /** NCD Failure NE, BC0 */ + DSL_uint16_t NCD_NE_BC0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** OOS Failure NE, BC0 */ + DSL_uint16_t OOS_NE_BC0 : 1; + /** OOS Failure NE, BC1 */ + DSL_uint16_t OOS_NE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 6; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC0 : 1; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** NCD Failure NE, BC0 */ + DSL_uint16_t NCD_NE_BC0 : 1; + /** LCD Failure NE, BC0 */ + DSL_uint16_t LCD_NE_BC0 : 1; + /** NCD Failure NE, BC1 */ + DSL_uint16_t NCD_NE_BC1 : 1; + /** LCD Failure NE, BC1 */ + DSL_uint16_t LCD_NE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 4; + /** NCD Failure FE, BC0 */ + DSL_uint16_t NCD_FE_BC0 : 1; + /** LCD Failure FE, BC0 */ + DSL_uint16_t LCD_FE_BC0 : 1; + /** NCD Failure FE, BC1 */ + DSL_uint16_t NCD_FE_BC1 : 1; + /** LCD Failure FE, BC1 */ + DSL_uint16_t LCD_FE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 4; +#endif +} __PACKED__ ; + + +/** + This autonomous message reports the data-path failure status. It is sent only + if the message generation was enabled for the corresponding failure with + CMD_DataPathFailuresAlarmConfigure. +*/ +struct ALM_DataPathFailuresGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC1 : 1; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 6; + /** OOS Failure NE, BC1 */ + DSL_uint16_t OOS_NE_BC1 : 1; + /** OOS Failure NE, BC0 */ + DSL_uint16_t OOS_NE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 4; + /** LCD Failure FE, BC1 */ + DSL_uint16_t LCD_FE_BC1 : 1; + /** NCD Failure FE, BC1 */ + DSL_uint16_t NCD_FE_BC1 : 1; + /** LCD Failure FE, BC0 */ + DSL_uint16_t LCD_FE_BC0 : 1; + /** NCD Failure FE, BC0 */ + DSL_uint16_t NCD_FE_BC0 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 4; + /** LCD Failure NE, BC1 */ + DSL_uint16_t LCD_NE_BC1 : 1; + /** NCD Failure NE, BC1 */ + DSL_uint16_t NCD_NE_BC1 : 1; + /** LCD Failure NE, BC0 */ + DSL_uint16_t LCD_NE_BC0 : 1; + /** NCD Failure NE, BC0 */ + DSL_uint16_t NCD_NE_BC0 : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** OOS Failure NE, BC0 */ + DSL_uint16_t OOS_NE_BC0 : 1; + /** OOS Failure NE, BC1 */ + DSL_uint16_t OOS_NE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 6; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC0 : 1; + /** OOS Failure FE, BC0 */ + DSL_uint16_t OOS_FE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 6; + /** NCD Failure NE, BC0 */ + DSL_uint16_t NCD_NE_BC0 : 1; + /** LCD Failure NE, BC0 */ + DSL_uint16_t LCD_NE_BC0 : 1; + /** NCD Failure NE, BC1 */ + DSL_uint16_t NCD_NE_BC1 : 1; + /** LCD Failure NE, BC1 */ + DSL_uint16_t LCD_NE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 4; + /** NCD Failure FE, BC0 */ + DSL_uint16_t NCD_FE_BC0 : 1; + /** LCD Failure FE, BC0 */ + DSL_uint16_t LCD_FE_BC0 : 1; + /** NCD Failure FE, BC1 */ + DSL_uint16_t NCD_FE_BC1 : 1; + /** LCD Failure FE, BC1 */ + DSL_uint16_t LCD_FE_BC1 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 4; +#endif +} __PACKED__ ; + + +/** + Requests the values of the near-end PTM data path performance counters for + bearer channel 0 (BC0) as defined in G.997.1 (Section 7.2.5.1. of [11]).The + counters are total counters. +*/ +struct CMD_PTM_BC0_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Delivers the near-end total TPS-TC counter values for bearer channel 0 (BC0) + as requested by CMD_PTM_BC0_StatsNE_Get. (Section 7.2.5.1. of [11]) +*/ +struct ACK_PTM_BC0_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, LSW */ + DSL_uint16_t cntCRC_LSW; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, MSW */ + DSL_uint16_t cntCRC_MSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, LSW */ + DSL_uint16_t cntCV_LSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, MSW */ + DSL_uint16_t cntCV_MSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, LSW */ + DSL_uint16_t cntCRCP_LSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, MSW */ + DSL_uint16_t cntCRCP_MSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, LSW */ + DSL_uint16_t cntCVP_LSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, MSW */ + DSL_uint16_t cntCVP_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, LSW */ + DSL_uint16_t cntCRC_LSW; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, MSW */ + DSL_uint16_t cntCRC_MSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, LSW */ + DSL_uint16_t cntCV_LSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, MSW */ + DSL_uint16_t cntCV_MSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, LSW */ + DSL_uint16_t cntCRCP_LSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, MSW */ + DSL_uint16_t cntCRCP_MSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, LSW */ + DSL_uint16_t cntCVP_LSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, MSW */ + DSL_uint16_t cntCVP_MSW; +#endif +} __PACKED__ ; + + +/** + Writes the TPS-TC CRC error and TPS-TC coding violation counters (Section + 7.2.5.1. of G.997.1 [11]).Why writing these counters? For "automoding", + meaning modems configured to support both ADSL and VDLS with automatic mode + selection. The first retrain is always done with an ADSL FW independent of + what was loaded before. Therefore, the counters must be saved by the host + before destroying them by the FW download and are written back before the + next link start of a FW that supports PTM. +*/ +struct CMD_PTM_BC0_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, LSW */ + DSL_uint16_t cntCRC_LSW; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, MSW */ + DSL_uint16_t cntCRC_MSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, LSW */ + DSL_uint16_t cntCV_LSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, MSW */ + DSL_uint16_t cntCV_MSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, LSW */ + DSL_uint16_t cntCRCP_LSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, MSW */ + DSL_uint16_t cntCRCP_MSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, LSW */ + DSL_uint16_t cntCVP_LSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, MSW */ + DSL_uint16_t cntCVP_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, LSW */ + DSL_uint16_t cntCRC_LSW; + /** TPS-TC CRC Counter (CRC-P), NE, BC0, MSW */ + DSL_uint16_t cntCRC_MSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, LSW */ + DSL_uint16_t cntCV_LSW; + /** TPS-TC CV Counter (CV-P), NE, BC0, MSW */ + DSL_uint16_t cntCV_MSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, LSW */ + DSL_uint16_t cntCRCP_LSW; + /** TPS-TC CRC Counter (CRCP-P), NE, BC0, MSW */ + DSL_uint16_t cntCRCP_MSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, LSW */ + DSL_uint16_t cntCVP_LSW; + /** TPS-TC CV Counter (CVP-P), NE, BC0, MSW */ + DSL_uint16_t cntCVP_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_PTM_BC0_StatsNE_Set. +*/ +struct ACK_PTM_BC0_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + This command is used to request the near-end data-path performance counters + for BC0 of an ATM-TC link as defined in Section 7.2.4. of G.997.1 [11]. +*/ +struct CMD_ATM_BC0_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the total near-end ATM-TC performance counters for bearer channel 0 + (BC0) as requested by the command CMD_ATM_BC0_StatsNE_Get.ADSL1/ADSL1 Lite + Fast Path reports its ATM -TC counters in this message too. +*/ +struct ACK_ATM_BC0_StatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** NE HEC Violation Count (HEC-P), LSW */ + DSL_uint16_t hecp_LSW; + /** NE HEC Violation Count (HEC-P), MSW */ + DSL_uint16_t hecp_MSW; + /** NE Delineated Total Cell Count (CD-P), LSW */ + DSL_uint16_t cdp_LSW; + /** NE Delineated Total Cell Count (CD-P), MSW */ + DSL_uint16_t cdp_MSW; + /** NE User Total Cell Count (CU-P), LSW */ + DSL_uint16_t cup_LSW; + /** NE User Total Cell Count (CU-P), MSW */ + DSL_uint16_t cup_MSW; + /** NE Idle Cell Bit Error Count (IBE-P), LSW */ + DSL_uint16_t ibep_LSW; + /** NE Idle Cell Bit Error Count (IBE-P), MSW */ + DSL_uint16_t ibep_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** NE HEC Violation Count (HEC-P), LSW */ + DSL_uint16_t hecp_LSW; + /** NE HEC Violation Count (HEC-P), MSW */ + DSL_uint16_t hecp_MSW; + /** NE Delineated Total Cell Count (CD-P), LSW */ + DSL_uint16_t cdp_LSW; + /** NE Delineated Total Cell Count (CD-P), MSW */ + DSL_uint16_t cdp_MSW; + /** NE User Total Cell Count (CU-P), LSW */ + DSL_uint16_t cup_LSW; + /** NE User Total Cell Count (CU-P), MSW */ + DSL_uint16_t cup_MSW; + /** NE Idle Cell Bit Error Count (IBE-P), LSW */ + DSL_uint16_t ibep_LSW; + /** NE Idle Cell Bit Error Count (IBE-P), MSW */ + DSL_uint16_t ibep_MSW; +#endif +} __PACKED__ ; + + +/** + This command is used to request the far-end data-path performance counters + for BC0 of an ATM-TC link as defined in Section 7.2.4.2 of G.997.1 [11]. +*/ +struct CMD_ATM_BC0_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the total near-end ATM-TC performance counters for bearer channel 0 + (BC0) as requested by the command CMD_ATM_BC0_StatsFE_Get. +*/ +struct ACK_ATM_BC0_StatsFE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** FE HEC Violation Count (HEC-PFE), LSW */ + DSL_uint16_t hecpfe_LSW; + /** FE HEC Violation Count (HEC-PFE), MSW */ + DSL_uint16_t hecpfe_MSW; + /** FE Delineated Total Cell Count (CD-PFE), LSW */ + DSL_uint16_t cdpfe_LSW; + /** FE Delineated Total Cell Count (CD-PFE), MSW */ + DSL_uint16_t cdpfe_MSW; + /** FE User Total Cell Count (CU-PFE), LSW */ + DSL_uint16_t cupfe_LSW; + /** FE User Total Cell Count (CU-PFE), MSW */ + DSL_uint16_t cupfe_MSW; + /** FE Idle Cell Bit Error Count (IBE-PFE), LSW */ + DSL_uint16_t ibepfe_LSW; + /** FE Idle Cell Bit Error Count (IBE-PFE), MSW */ + DSL_uint16_t ibepfe_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** FE HEC Violation Count (HEC-PFE), LSW */ + DSL_uint16_t hecpfe_LSW; + /** FE HEC Violation Count (HEC-PFE), MSW */ + DSL_uint16_t hecpfe_MSW; + /** FE Delineated Total Cell Count (CD-PFE), LSW */ + DSL_uint16_t cdpfe_LSW; + /** FE Delineated Total Cell Count (CD-PFE), MSW */ + DSL_uint16_t cdpfe_MSW; + /** FE User Total Cell Count (CU-PFE), LSW */ + DSL_uint16_t cupfe_LSW; + /** FE User Total Cell Count (CU-PFE), MSW */ + DSL_uint16_t cupfe_MSW; + /** FE Idle Cell Bit Error Count (IBE-PFE), LSW */ + DSL_uint16_t ibepfe_LSW; + /** FE Idle Cell Bit Error Count (IBE-PFE), MSW */ + DSL_uint16_t ibepfe_MSW; +#endif +} __PACKED__ ; + + +/** + Writes the data-path performance counters for bearer channel 0 (BC0) of an + ATM-TC link (Section 7.2.4. of G.997.1 [11]).Why writing counters? The ADSL + FW of the VRX destroys the performance counters at the beginning of a re- + initialization since it starts with a FW download. Therefore the host has to + save the counters in FAIL state before triggering a re-init. When + reconfiguring the system in RESET state, the host writes the saved values as + start values back into the counters. To do this for the ATM-TC counters, this + message is used. +*/ +struct CMD_ATM_BC0_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** NE HEC Violation Count (HEC-P), LSW */ + DSL_uint16_t hecp_LSW; + /** NE HEC Violation Count (HEC-P), MSW */ + DSL_uint16_t hecp_MSW; + /** NE Delineated Total Cell Count (CD-P), LSW */ + DSL_uint16_t cdp_LSW; + /** NE Delineated Total Cell Count (CD-P), MSW */ + DSL_uint16_t cdp_MSW; + /** NE User Total Cell Count (CU-P), LSW */ + DSL_uint16_t cup_LSW; + /** NE User Total Cell Count (CU-P), MSW */ + DSL_uint16_t cup_MSW; + /** NE Idle Cell Bit Error Count (IBE-P), LSW */ + DSL_uint16_t ibep_LSW; + /** NE Idle Cell Bit Error Count (IBE-P), MSW */ + DSL_uint16_t ibep_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** NE HEC Violation Count (HEC-P), LSW */ + DSL_uint16_t hecp_LSW; + /** NE HEC Violation Count (HEC-P), MSW */ + DSL_uint16_t hecp_MSW; + /** NE Delineated Total Cell Count (CD-P), LSW */ + DSL_uint16_t cdp_LSW; + /** NE Delineated Total Cell Count (CD-P), MSW */ + DSL_uint16_t cdp_MSW; + /** NE User Total Cell Count (CU-P), LSW */ + DSL_uint16_t cup_LSW; + /** NE User Total Cell Count (CU-P), MSW */ + DSL_uint16_t cup_MSW; + /** NE Idle Cell Bit Error Count (IBE-P), LSW */ + DSL_uint16_t ibep_LSW; + /** NE Idle Cell Bit Error Count (IBE-P), MSW */ + DSL_uint16_t ibep_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_ATM_BC0_StatsNE_Set. +*/ +struct ACK_ATM_BC0_StatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests near-end ATM datapath performance transmit counters for bearer + channel 0 (BC0). +*/ +struct CMD_ATM_BC0_TxStatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the ATM-TC transmit counters for beare channel 0 (BC0) as requested + by the command CMD_ATM_BC0_TxStatsNE_Get.ADSL1/ADSL1 Lite Fast Path reports + its ATM -TC counters in this message too. +*/ +struct ACK_ATM_BC0_TxStatsNE_Get +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-end TX User Cell Count (TxCU), Current Period, LSW */ + DSL_uint16_t TxCU_LSW; + /** Near-end TX User Cell Count (TxCU), Current Period, MSW */ + DSL_uint16_t TxCU_MSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, LSW */ + DSL_uint16_t TxIdle_LSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, MSW */ + DSL_uint16_t TxIdle_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-end TX User Cell Count (TxCU), Current Period, LSW */ + DSL_uint16_t TxCU_LSW; + /** Near-end TX User Cell Count (TxCU), Current Period, MSW */ + DSL_uint16_t TxCU_MSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, LSW */ + DSL_uint16_t TxIdle_LSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, MSW */ + DSL_uint16_t TxIdle_MSW; +#endif +} __PACKED__ ; + + +/** + Writes the transmit data-path counters for BC0 of an ATM-TC link.For "Why + writing performance counters" see Page 669. +*/ +struct CMD_ATM_BC0_TxStatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-end TX User Cell Count (TxCU), Current Period, LSW */ + DSL_uint16_t TxCU_LSW; + /** Near-end TX User Cell Count (TxCU), Current Period, MSW */ + DSL_uint16_t TxCU_MSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, LSW */ + DSL_uint16_t TxIdle_LSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, MSW */ + DSL_uint16_t TxIdle_MSW; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Near-end TX User Cell Count (TxCU), Current Period, LSW */ + DSL_uint16_t TxCU_LSW; + /** Near-end TX User Cell Count (TxCU), Current Period, MSW */ + DSL_uint16_t TxCU_MSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, LSW */ + DSL_uint16_t TxIdle_LSW; + /** Near-end TX Idle Cell Count (TxIdle), Current Period, MSW */ + DSL_uint16_t TxIdle_MSW; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for the message CMD_ATM_BC0_TxStatsNE_Set. +*/ +struct ACK_ATM_BC0_TxStatsNE_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests version information from the VDSL2-Modem. +*/ +struct CMD_VersionInfoGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides version information about hardware and firmware. The FW version + numbering scheme has a long and a short form (Table 368). +*/ +struct ACK_VersionInfoGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Hardware Version Number */ + DSL_uint32_t HW_Version; + /** Reserved */ + DSL_uint32_t Res0; + /** Firmware Version Number (Long) */ + DSL_uint32_t FW_Version; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Hardware Version Number */ + DSL_uint32_t HW_Version; + /** Reserved */ + DSL_uint32_t Res0; + /** Firmware Version Number (Long) */ + DSL_uint32_t FW_Version; +#endif +} __PACKED__ ; + + +/** + Writes the PPA subsystem version to the DSL FW. +*/ +struct CMD_PPA_FwVersionSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPA Subsystem Version Number, LSW, 3. Digit */ + DSL_uint16_t SubSysVer3 : 8; + /** PPA Subsystem Version Number, LSW, 4. Digit */ + DSL_uint16_t SubSysVer4 : 8; + /** PPA Subsystem Version Number, MSW, 1. Digit */ + DSL_uint16_t SubSysVer1 : 8; + /** PPA Subsystem Version Number, MSW, 2. Digit */ + DSL_uint16_t SubSysVer2 : 8; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPA Subsystem Version Number, LSW, 4. Digit */ + DSL_uint16_t SubSysVer4 : 8; + /** PPA Subsystem Version Number, LSW, 3. Digit */ + DSL_uint16_t SubSysVer3 : 8; + /** PPA Subsystem Version Number, MSW, 2. Digit */ + DSL_uint16_t SubSysVer2 : 8; + /** PPA Subsystem Version Number, MSW, 1. Digit */ + DSL_uint16_t SubSysVer1 : 8; +#endif +} __PACKED__ ; + + +/** + Acknowledgement for message CMD_PPA_FwVersionSet. +*/ +struct ACK_PPA_FwVersionSet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Requests the PPA Subsystem Version number (Read-back). +*/ +struct CMD_PPA_FwVersionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the PPA subsystem version. Read back of the value previously written + by CMD_PPA_FwVersionSet. +*/ +struct ACK_PPA_FwVersionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPA Subsystem Version Number, LSW, 3. Digit */ + DSL_uint16_t SubSysVer3 : 8; + /** PPA Subsystem Version Number, LSW, 4. Digit */ + DSL_uint16_t SubSysVer4 : 8; + /** PPA Subsystem Version Number, MSW, 1. Digit */ + DSL_uint16_t SubSysVer1 : 8; + /** PPA Subsystem Version Number, MSW, 2. Digit */ + DSL_uint16_t SubSysVer2 : 8; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPA Subsystem Version Number, LSW, 4. Digit */ + DSL_uint16_t SubSysVer4 : 8; + /** PPA Subsystem Version Number, LSW, 3. Digit */ + DSL_uint16_t SubSysVer3 : 8; + /** PPA Subsystem Version Number, MSW, 2. Digit */ + DSL_uint16_t SubSysVer2 : 8; + /** PPA Subsystem Version Number, MSW, 1. Digit */ + DSL_uint16_t SubSysVer1 : 8; +#endif +} __PACKED__ ; + + +/** + Requests the PPE FW Version number. +*/ +struct CMD_PPE_FwVersionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Provides the PPE FW version number. +*/ +struct ACK_PPE_FwVersionGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 8; + /** PPE FW Version Number, 1. Digit */ + DSL_uint16_t PpeFwVer1 : 8; + /** PPE FW Version Number, 2. Digit */ + DSL_uint16_t PpeFwVer2 : 8; + /** PPE FW Version Number, 3. Digit */ + DSL_uint16_t PpeFwVer3 : 8; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PPE FW Version Number, 1. Digit */ + DSL_uint16_t PpeFwVer1 : 8; + /** Reserved */ + DSL_uint16_t Res0 : 8; + /** PPE FW Version Number, 3. Digit */ + DSL_uint16_t PpeFwVer3 : 8; + /** PPE FW Version Number, 2. Digit */ + DSL_uint16_t PpeFwVer2 : 8; +#endif +} __PACKED__ ; + + +/** + Requests the feature map indicating the ADSL FW features supported by this + binary. +*/ +struct CMD_ADSL_FeatureMapGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the feature map indicating the ADSL FW features supported by this + binary. +*/ +struct ACK_ADSL_FeatureMapGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Feature Map Length */ + DSL_uint16_t FeatMapLen; + /** Reserved */ + DSL_uint16_t Res0 : 3; + /** Feature-Bit12 */ + DSL_uint16_t W0F12 : 1; + /** Feature-Bit11 of Word 0: NTR */ + DSL_uint16_t W0F11 : 1; + /** Feature-Bit10 of Word 0: CIPolicy */ + DSL_uint16_t W0F10 : 1; + /** Feature-Bit9 of Word 0: Pre-emption & Short Packets */ + DSL_uint16_t W0F09 : 1; + /** Feature-Bit8 of Word 0: Counter Inhibiting */ + DSL_uint16_t W0F08 : 1; + /** Feature-Bit7 of Word 0: Short Init */ + DSL_uint16_t W0F07 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Feature-Bit5 of Word 0: G.INP Retransmission DS + SRA */ + DSL_uint16_t W0F05 : 1; + /** Feature-Bit4 of Word 0: G.INP Retransmission DS + Bonding (EFM) */ + DSL_uint16_t W0F04 : 1; + /** Feature-Bit3 of Word 0:PTM Off-chip Bonding BACP */ + DSL_uint16_t W0F03 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 2; + /** Feature-Bit0 of Word 0: Annex I */ + DSL_uint16_t W0F00 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 16; + /** Reserved */ + DSL_uint16_t Res4 : 16; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Feature Map Length */ + DSL_uint16_t FeatMapLen; + /** Feature-Bit0 of Word 0: Annex I */ + DSL_uint16_t W0F00 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 2; + /** Feature-Bit3 of Word 0:PTM Off-chip Bonding BACP */ + DSL_uint16_t W0F03 : 1; + /** Feature-Bit4 of Word 0: G.INP Retransmission DS + Bonding (EFM) */ + DSL_uint16_t W0F04 : 1; + /** Feature-Bit5 of Word 0: G.INP Retransmission DS + SRA */ + DSL_uint16_t W0F05 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Feature-Bit7 of Word 0: Short Init */ + DSL_uint16_t W0F07 : 1; + /** Feature-Bit8 of Word 0: Counter Inhibiting */ + DSL_uint16_t W0F08 : 1; + /** Feature-Bit9 of Word 0: Pre-emption & Short Packets */ + DSL_uint16_t W0F09 : 1; + /** Feature-Bit10 of Word 0: CIPolicy */ + DSL_uint16_t W0F10 : 1; + /** Feature-Bit11 of Word 0: NTR */ + DSL_uint16_t W0F11 : 1; + /** Feature-Bit12 */ + DSL_uint16_t W0F12 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 3; + /** Reserved */ + DSL_uint16_t Res3 : 16; + /** Reserved */ + DSL_uint16_t Res4 : 16; +#endif +} __PACKED__ ; + + +/** + Requests the feature map indicating the VDSL FW features supported by this + binary. +*/ +struct CMD_VDSL_FeatureMapGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Reports the feature map indicating the VDSL FW features supported by this + binary. +*/ +struct ACK_VDSL_FeatureMapGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Feature Map Length */ + DSL_uint16_t FeatMapLen; + /** Reserved */ + DSL_uint16_t Res0 : 3; + /** Feature-Bit12 */ + DSL_uint16_t W0F12 : 1; + /** Feature-Bit11 of Word 0: NTR */ + DSL_uint16_t W0F11 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Feature-Bit9 of Word 0: Pre-emption & Short Packets */ + DSL_uint16_t W0F09 : 1; + /** Feature-Bit8 of Word 0: Erasure Decoding /FORCEINP */ + DSL_uint16_t W0F08 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Feature-Bit6 of Word 0: Intra DTU Interleaving US */ + DSL_uint16_t W0F06 : 1; + /** Feature-Bit5 of Word 0: Intra DTU Interleaving DS */ + DSL_uint16_t W0F05 : 1; + /** Feature-Bit4 of Word 0: G.INP Retransmission US + DS + PAF (VDSL only) */ + DSL_uint16_t W0F04 : 1; + /** Feature-Bit3 of Word 0: PTM Off-chip Bonding BACP */ + DSL_uint16_t W0F03 : 1; + /** Feature-Bit2 of Word 2: Microfilter Detection and Hybrid Data */ + DSL_uint16_t W2F02 : 1; + /** Reserved */ + DSL_uint16_t Res3 : 2; + /** Reserved */ + DSL_uint16_t Res4 : 16; + /** Reserved */ + DSL_uint16_t Res5 : 16; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Feature Map Length */ + DSL_uint16_t FeatMapLen; + /** Reserved */ + DSL_uint16_t Res3 : 2; + /** Feature-Bit2 of Word 2: Microfilter Detection and Hybrid Data */ + DSL_uint16_t W2F02 : 1; + /** Feature-Bit3 of Word 0: PTM Off-chip Bonding BACP */ + DSL_uint16_t W0F03 : 1; + /** Feature-Bit4 of Word 0: G.INP Retransmission US + DS + PAF (VDSL only) */ + DSL_uint16_t W0F04 : 1; + /** Feature-Bit5 of Word 0: Intra DTU Interleaving DS */ + DSL_uint16_t W0F05 : 1; + /** Feature-Bit6 of Word 0: Intra DTU Interleaving US */ + DSL_uint16_t W0F06 : 1; + /** Reserved */ + DSL_uint16_t Res2 : 1; + /** Feature-Bit8 of Word 0: Erasure Decoding /FORCEINP */ + DSL_uint16_t W0F08 : 1; + /** Feature-Bit9 of Word 0: Pre-emption & Short Packets */ + DSL_uint16_t W0F09 : 1; + /** Reserved */ + DSL_uint16_t Res1 : 1; + /** Feature-Bit11 of Word 0: NTR */ + DSL_uint16_t W0F11 : 1; + /** Feature-Bit12 */ + DSL_uint16_t W0F12 : 1; + /** Reserved */ + DSL_uint16_t Res0 : 3; + /** Reserved */ + DSL_uint16_t Res4 : 16; + /** Reserved */ + DSL_uint16_t Res5 : 16; +#endif +} __PACKED__ ; + + +/** + The message is used to enable bonding (PAF) and to control the GHS + aggregation discovery and aggregation processes. The register numbers + referenced refer to IEEE 802.3ah [14], Clause 45. +*/ +struct CMD_PAF_HS_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** PCS Control Register (Register 3.61, Bit 0) */ + DSL_uint16_t PAF_Enable : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PCS Control Register (Register 3.61, Bit 0) */ + DSL_uint16_t PAF_Enable : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + The message acknowledges CMD_PAF_HS_Control. +*/ +struct ACK_PAF_HS_Control +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message reads back settings for bonding configured with + CMD_PAF_HS_Control. +*/ +struct CMD_PAF_HS_ControlGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message acknowledges CMD_PAF_HS_ControlGet providing PAF bonding + parameters used in handshake as configured with CMD_PAF_HS_Control. +*/ +struct ACK_PAF_HS_ControlGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** PCS Control Register (Register 3.61, Bit 0) */ + DSL_uint16_t PAF_Enable : 1; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PCS Control Register (Register 3.61, Bit 0) */ + DSL_uint16_t PAF_Enable : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; +#endif +} __PACKED__ ; + + +/** + The message requests aggregation discovery and aggregation status information + for EFM bonding. +*/ +struct CMD_PAF_HS_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + The message reports discovery and aggregation status information for EFM + bonding after request by CMD_PAF_HS_StatusGet.At the CPE side, the Host SW + concludes on a GET request if none of the following 4 bits are set: + discoveryClearIfSame, discoverySetIfClear, aggregClear , aggregSet. It does + not distinguish between "discovery GET" and "aggregation GET"; in case of any + "GET" both the discovery and the aggregation code are sent to the CO with the + CLR. +*/ +struct ACK_PAF_HS_StatusGet +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 9; + /** Discovery Clear-If-Same */ + DSL_uint16_t discoveryClearIfSame : 1; + /** Discovery Set-If-Clear */ + DSL_uint16_t discoverySetIfClear : 1; + /** Aggregation Clear */ + DSL_uint16_t aggregClear : 1; + /** Aggregation Set */ + DSL_uint16_t aggregSet : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** PCS Control Register (Register 3.60, Bit 12) */ + DSL_uint16_t PAF_Enable : 1; + /** Aggregation Discovery Code (Register 6.18) */ + DSL_uint16_t discoveryCode1; + /** Aggregation Discovery Code (Registers 6.19) */ + DSL_uint16_t discoveryCode2; + /** Aggregation Discovery Code (Registers 6.20) */ + DSL_uint16_t discoveryCode3; + /** Partner PME Aggregate Data (Registers 6.22) */ + DSL_uint16_t aggregateData1; + /** Partner PME Aggregate Data (Registers 6.23) */ + DSL_uint16_t aggregateData2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PCS Control Register (Register 3.60, Bit 12) */ + DSL_uint16_t PAF_Enable : 1; + /** Reserved */ + DSL_uint16_t Res1 : 2; + /** Aggregation Set */ + DSL_uint16_t aggregSet : 1; + /** Aggregation Clear */ + DSL_uint16_t aggregClear : 1; + /** Discovery Set-If-Clear */ + DSL_uint16_t discoverySetIfClear : 1; + /** Discovery Clear-If-Same */ + DSL_uint16_t discoveryClearIfSame : 1; + /** Reserved */ + DSL_uint16_t Res0 : 9; + /** Aggregation Discovery Code (Register 6.18) */ + DSL_uint16_t discoveryCode1; + /** Aggregation Discovery Code (Registers 6.19) */ + DSL_uint16_t discoveryCode2; + /** Aggregation Discovery Code (Registers 6.20) */ + DSL_uint16_t discoveryCode3; + /** Partner PME Aggregate Data (Registers 6.22) */ + DSL_uint16_t aggregateData1; + /** Partner PME Aggregate Data (Registers 6.23) */ + DSL_uint16_t aggregateData2; +#endif +} __PACKED__ ; + + +/** + The message writes the aggregation discovery code and the aggregation data + down to the FW and is used to trigger the CPE-FW to proceed in handshake + (sending CLR) after it had been waiting in GHS_BONDING_CLR state for the + necessary host interactions to be finished. These actions depend on the + request type (see ACK_PAF_HS_StatusGet): the processing of the remote + discovery register (for an aggregation discovery "Set If Clear" or "Clear If + Same" command) or PME Aggregate register (for an aggregation "Set" or "Clear" + command) in the SW and -in any case including a "Get" command - then updating + the local representations of both in the FW (which are sent to the CO in a + CLR). +*/ +struct CMD_PAF_HS_Continue +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** Continue Trigger */ + DSL_uint16_t trigger : 1; + /** Aggregation Discovery Code (Register 6.18) */ + DSL_uint16_t discoveryCode1; + /** Aggregation Discovery Code (Registers 6.19) */ + DSL_uint16_t discoveryCode2; + /** Aggregation Discovery Code (Registers 6.20) */ + DSL_uint16_t discoveryCode3; + /** Partner PME Aggregate Data (Registers 6.22) */ + DSL_uint16_t aggregateData1; + /** Partner PME Aggregate Data (Registers 6.23) */ + DSL_uint16_t aggregateData2; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** Continue Trigger */ + DSL_uint16_t trigger : 1; + /** Reserved */ + DSL_uint16_t Res0 : 15; + /** Aggregation Discovery Code (Register 6.18) */ + DSL_uint16_t discoveryCode1; + /** Aggregation Discovery Code (Registers 6.19) */ + DSL_uint16_t discoveryCode2; + /** Aggregation Discovery Code (Registers 6.20) */ + DSL_uint16_t discoveryCode3; + /** Partner PME Aggregate Data (Registers 6.22) */ + DSL_uint16_t aggregateData1; + /** Partner PME Aggregate Data (Registers 6.23) */ + DSL_uint16_t aggregateData2; +#endif +} __PACKED__ ; + + +/** + The message acknowledges CMD_PAF_HS_Continue. +*/ +struct ACK_PAF_HS_Continue +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + +/** + Sets the PME identification number. This number is transferred with the CLR + message to the CO. +*/ +struct CMD_PAF_PME_ID_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PME ID */ + DSL_uint16_t PmeId; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; + /** PME ID */ + DSL_uint16_t PmeId; +#endif +} __PACKED__ ; + + +/** + The message acknowledges CMD_PAF_PME_ID_Set. +*/ +struct ACK_PAF_PME_ID_Set +{ +#if DSL_BYTE_ORDER == DSL_BIG_ENDIAN + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#else + /** Index */ + DSL_uint16_t Index; + /** Length */ + DSL_uint16_t Length; +#endif +} __PACKED__ ; + + + + +#ifdef __cplusplus +} +#endif + +#ifdef __PACKED_DEFINED__ + #if !(defined (__GNUC__) || defined (__GNUG__)) + #pragma pack() + #endif + #undef __PACKED_DEFINED__ +#endif /* __PACKED_DEFINED__ */ + +/** @} */ + +#endif /** _DRV_DSL_CPE_VRX_MSG_TC_COUNTERS_H_*/ diff --git a/src/pm/drv_dsl_cpe_api_pm.c b/src/pm/drv_dsl_cpe_api_pm.c index 97b86c59de2b65c6c01d1a2e53796c33c596696d..dd45d24edf2a9e86c41e9230dca43550c3f2ff89 100644 --- a/src/pm/drv_dsl_cpe_api_pm.c +++ b/src/pm/drv_dsl_cpe_api_pm.c @@ -195,6 +195,8 @@ DSL_Error_t DSL_DRV_PM_Start( (DSL_PM_CountersData_t*)DSL_DRV_Malloc(sizeof(DSL_PM_CountersData_t)); if (DSL_DRV_PM_CONTEXT(pContext)->pCounters == DSL_NULL) { + DSL_DRV_MemFree(pContext->PM); + DSL_DEBUG(DSL_DBG_ERR, (pContext, SYS_DBG_ERR"DSL[%02d]: PM_Start: no memory for PM counters!" DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); @@ -207,6 +209,9 @@ DSL_Error_t DSL_DRV_PM_Start( (DSL_PM_CountersDump_t*)DSL_DRV_Malloc(sizeof(DSL_PM_CountersDump_t)); if (DSL_DRV_PM_CONTEXT(pContext)->pCountersDump == DSL_NULL) { + DSL_DRV_MemFree(DSL_DRV_PM_CONTEXT(pContext)->pCounters); + DSL_DRV_MemFree(pContext->PM); + DSL_DEBUG(DSL_DBG_ERR, (pContext, SYS_DBG_ERR"DSL[%02d]: PM_Start: no memory for PM dump counters!" DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); @@ -503,6 +508,10 @@ DSL_Error_t DSL_DRV_PM_Start( /* Initialize PM module device specific parameters*/ if( DSL_DRV_PM_DEV_Start(pContext) != DSL_SUCCESS ) { + DSL_DRV_MemFree(DSL_DRV_PM_CONTEXT(pContext)->pCounters); + DSL_DRV_MemFree(DSL_DRV_PM_CONTEXT(pContext)->pCountersDump); + DSL_DRV_MemFree(pContext->PM); + DSL_DEBUG(DSL_DBG_ERR, (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - PM module device specific init failed!" DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); @@ -547,6 +556,19 @@ DSL_Error_t DSL_DRV_PM_Start( DSL_DRV_CRLF, DSL_DEV_NUM(pContext), nErrCode)); } + /* Check the PM module Near-End and Far-End thread active flag */ + if( DSL_DRV_PM_CONTEXT(pContext)->pmThreadFe.bRun == DSL_FALSE && + DSL_DRV_PM_CONTEXT(pContext)->pmThreadNe.bRun == DSL_FALSE ) + { + DSL_DEBUG(DSL_DBG_ERR, + (pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - PM module NE and FE threads start failed!" + DSL_DRV_CRLF, DSL_DEV_NUM(pContext))); + + DSL_DRV_MemFree(DSL_DRV_PM_CONTEXT(pContext)->pCounters); + DSL_DRV_MemFree(DSL_DRV_PM_CONTEXT(pContext)->pCountersDump); + DSL_DRV_MemFree(pContext->PM); + } + DSL_DEBUG(DSL_DBG_MSG, (pContext, SYS_DBG_MSG"DSL[%02d]: PM module started..." DSL_DRV_CRLF, DSL_DEV_NUM(pContext)));