/****************************************************************************** Copyright 2016 - 2019 Intel Corporation Copyright 2015 - 2016 Lantiq Beteiligungs-GmbH & Co. KG Copyright 2009 - 2014 Lantiq Deutschland GmbH Copyright 2007 - 2008 Infineon Technologies AG For licensing information, see the file 'LICENSE' in the root folder of this software module. ******************************************************************************/ /** \file VRX specific DSL CLI, access function implementation */ #include "dsl_cpe_control.h" #if defined(INCLUDE_DSL_CPE_API_VRX) #include "dsl_cpe_cli.h" #include "drv_dsl_cpe_api.h" #include "drv_dsl_cpe_api_ioctl.h" /* MEI CPE driver specific headers*/ #include "drv_mei_cpe_interface.h" #ifdef INCLUDE_DSL_CPE_CLI_SUPPORT #include "dsl_cpe_bnd_vrx.h" #undef DSL_CCA_DBG_BLOCK #define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_CLI extern const char *sFailureReturn; /* for debugging: */ #ifdef DSL_CLI_LOCAL #undef DSL_CLI_LOCAL #endif #if 0 #define DSL_CLI_LOCAL #else #define DSL_CLI_LOCAL static #endif static const DSL_char_t g_sDms[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_uint16_t nMsgID (hex)" DSL_CPE_CRLF "- DSL_uint16_t nIndex (hex)" DSL_CPE_CRLF "- DSL_uint16_t nLength (hex)" DSL_CPE_CRLF "- DSL_uint16_t nPayload[0-256] (hex, for 32-bit messages payload contains maximum 128 32-bit values, leading 0's can be skipped)" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint16_t nMsgID (hex)" DSL_CPE_CRLF "- DSL_uint16_t nIndex (hex)" DSL_CPE_CRLF "- DSL_uint16_t nLength (hex)" DSL_CPE_CRLF "- DSL_uint16_t nPayload[256] (hex, for 32-bit messages payload contains maximum 128 32-bit values)" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DBG_DeviceMessageSend( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { /* maximum message size includinf ID, Index and Length field */ #define VRX_MSG_LEN 262 /** This bit of the Message ID identifies 32 bit aligned TC messages */ #define VDSL2_MBX_MSG_ID_IFX_MASK 0x0010 DSL_int_t ret = 0; DSL_DeviceMessage_t DevMsg; DSL_uint8_t msg[VRX_MSG_LEN]; DSL_uint16_t *pMsg16 = (DSL_uint16_t*)&msg[0]; DSL_uint16_t const *pMsgId = (DSL_uint16_t*)&msg[0]; DSL_uint32_t *pMsg32 = (DSL_uint32_t*)&msg[6]; DSL_char_t *pChar; DSL_uint32_t nParam = 0; DSL_uint32_t i = 0; DSL_boolean_t bXtcMsg = DSL_FALSE; if (pCommands == DSL_NULL) { DSL_CPE_FPrintf(out, DSL_CPE_RET DSL_CPE_CRLF , DSL_CPE_RET_VAL(DSL_ERROR)); return -1; } if (DSL_CPE_CLI_CheckParamNumber(pCommands, 3, DSL_CLI_MIN) == DSL_FALSE) { return -1; } pChar = pCommands; /* get MsgId, Index and Length parameter */ while (pChar != DSL_NULL) { /* Extract next parameter */ if (sscanf(pChar, "%x", &nParam) > 0) { i += 2; *pMsg16 = (DSL_uint16_t)nParam; /* Find next parameter */ pChar = strpbrk( pChar, " "); if (pChar != DSL_NULL) { pChar++; pMsg16++; } else { break; } } else { break; } if (i >= 6) break; } /* decide on the MsgId wether to treat 16 or 32bit params */ if (*pMsgId & VDSL2_MBX_MSG_ID_IFX_MASK) bXtcMsg = DSL_TRUE; while (pChar != DSL_NULL) { /* Extract next parameter */ if (sscanf(pChar, "%x", &nParam) > 0) { if (bXtcMsg == DSL_TRUE) { i += 4; *pMsg32 = (DSL_uint32_t)nParam; } else { i += 2; *pMsg16 = (DSL_uint16_t)nParam; } /* Find next parameter */ pChar = strpbrk( pChar, " "); if (pChar != DSL_NULL) { pChar++; if (bXtcMsg == DSL_TRUE) pMsg32++; else pMsg16++; } else { break; } } else { break; } if (i >= VRX_MSG_LEN) break; } if ( (i > 0) && (i < VRX_MSG_LEN) ) { /* Firmware message must consist of MsgID and two parameters minimum (6 bytes)*/ if (i < 6) { DSL_CPE_FPrintf(out, DSL_CPE_RET"(firmware message has to be at least 3 " "hex parameters long - '0x' does not have to be written)" DSL_CPE_CRLF , DSL_CPE_RET_VAL(DSL_ERROR)); return -1; } else { memset(&DevMsg, 0x0, sizeof(DSL_DeviceMessage_t)); DevMsg.data.pMsg = (DSL_uint8_t*)&msg; DevMsg.data.nSizeTx = (DSL_uint16_t)i; DevMsg.data.nSizeRx = (DSL_uint16_t)VRX_MSG_LEN; ret = DSL_CPE_Ioctl (fd, DSL_FIO_DBG_DEVICE_MESSAGE_SEND, (int) &DevMsg); if ((ret < 0) && (DevMsg.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(ret)); return ret; } else { DSL_CPE_FPrintf(out, DSL_CPE_RET"nData=\"", DSL_CPE_RET_VAL(ret)); pMsg16 = (DSL_uint16_t*)&msg[0]; pMsg32 = (DSL_uint32_t*)&msg[6]; /* print Msg ID, Index and Length*/ DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; i = 6; if (bXtcMsg == DSL_TRUE) { while (i < DevMsg.data.nSizeRx) { DSL_CPE_FPrintf(out, "%08X ", *pMsg32 ); pMsg32++; i += 4; } } else { while (i < DevMsg.data.nSizeRx) { DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; i += 2; } } DSL_CPE_FPrintf(out, "\"" DSL_CPE_CRLF); return 0; } } } else { DSL_CPE_FPrintf(out, "DSL: error during processing of message data." DSL_CPE_CRLF ); ret = -1; } return ret; } static const DSL_char_t g_sDmms[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_uint16_t nMsgID (hex)" DSL_CPE_CRLF "- DSL_uint16_t nIndex (hex)" DSL_CPE_CRLF "- DSL_uint16_t nLength (hex, N)" DSL_CPE_CRLF "- DSL_uint16_t nPayload[0-256] (hex, <data_1> <mask_1> ... <data_N> <mask_N>)" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint16_t nMsgID (hex)" DSL_CPE_CRLF "- DSL_uint16_t nIndex (hex)" DSL_CPE_CRLF "- DSL_uint16_t nLength (hex)" DSL_CPE_CRLF "- DSL_uint16_t nPayload[256] (hex, for 32-bit messages payload contains maximum 128 32-bit values)" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DBG_DeviceMessageModifySend( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { /* maximum mask size */ #define VRX_MASK_LEN (VRX_MSG_LEN - 6 /*message header size = 6*/) DSL_int_t ret = 0; DSL_DeviceMessageModify_t DevMsg; DSL_uint8_t msg[VRX_MSG_LEN]; DSL_uint16_t *pMsg16 = (DSL_uint16_t*)&msg[0]; DSL_uint16_t const *pMsgId = (DSL_uint16_t*)&msg[0]; DSL_uint32_t *pMsg32 = (DSL_uint32_t*)&msg[6]; DSL_uint8_t msk[VRX_MASK_LEN]; DSL_uint16_t *pMask16 = (DSL_uint16_t*)&msk[0]; DSL_uint32_t *pMask32 = (DSL_uint32_t*)&msk[0]; DSL_char_t *pChar; DSL_uint32_t nParam = 0; DSL_uint32_t i = 0; DSL_boolean_t bXtcMsg = DSL_FALSE; DSL_boolean_t bProcMask = DSL_FALSE; if (pCommands == DSL_NULL) { DSL_CPE_FPrintf(out, DSL_CPE_RET DSL_CPE_CRLF , DSL_CPE_RET_VAL(DSL_ERROR)); return -1; } if (DSL_CPE_CLI_CheckParamNumber(pCommands, 3, DSL_CLI_MIN) == DSL_FALSE) { return -1; } pChar = pCommands; memset(msg,0,VRX_MSG_LEN); memset(msk,0,VRX_MASK_LEN); /* get MsgId, Index and Length parameter */ while (pChar != DSL_NULL) { /* Extract next parameter */ if (sscanf(pChar, "%x", &nParam) > 0) { i += 2; *pMsg16 = (DSL_uint16_t)nParam; /* Find next parameter */ pChar = strpbrk( pChar, " "); if (pChar != DSL_NULL) { pChar++; pMsg16++; } else { break; } } else { break; } if (i >= 6) break; } /* decide on the MsgId wether to treat 16 or 32bit params */ if (*pMsgId & VDSL2_MBX_MSG_ID_IFX_MASK) bXtcMsg = DSL_TRUE; while (pChar != DSL_NULL) { /* Extract next parameter */ if (sscanf(pChar, "%x", &nParam) > 0) { if (bProcMask == DSL_TRUE) { if (bXtcMsg == DSL_TRUE) { *pMask32 = (DSL_uint32_t)nParam; pMask32++; } else { *pMask16 = (DSL_uint16_t)nParam; pMask16++; } bProcMask = DSL_FALSE; } else { if (bXtcMsg == DSL_TRUE) { i += 4; *pMsg32 = (DSL_uint32_t)nParam; pMsg32++; } else { i += 2; *pMsg16 = (DSL_uint16_t)nParam; pMsg16++; } bProcMask = DSL_TRUE; } /* Find next parameter */ pChar = strpbrk( pChar, " "); if (pChar != DSL_NULL) { pChar++; } else { break; } } else { break; } if (i >= VRX_MSG_LEN) break; } if ( (i > 0) && (i < VRX_MSG_LEN) ) { /* Firmware message must consist of MsgID and two parameters minimum (6 bytes)*/ if (i < 6) { DSL_CPE_FPrintf(out, DSL_CPE_RET"(firmware message has to be at least 3 " "hex parameters long - '0x' does not have to be written)" DSL_CPE_CRLF , DSL_CPE_RET_VAL(DSL_ERROR)); return -1; } else { memset(&DevMsg, 0x0, sizeof(DSL_DeviceMessageModify_t)); DevMsg.data.pMsg = (DSL_uint8_t*)&msg; DevMsg.data.pMsgMask= (DSL_uint8_t*)&msk; DevMsg.data.nSizeTx = (DSL_uint16_t)i; DevMsg.data.nSizeRx = (DSL_uint16_t)VRX_MSG_LEN; ret = DSL_CPE_Ioctl (fd, DSL_FIO_DBG_DEVICE_MESSAGE_MODIFY_SEND, (int) &DevMsg); if ((ret < 0) && (DevMsg.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(ret)); return ret; } else { /*Check that all data values passed with mask*/ if (bProcMask == DSL_TRUE) { DSL_CPE_FPrintf(out,"Last data value passed without mask."DSL_CPE_CRLF); ret = DSL_WRN_CONFIG_PARAM_IGNORED; } else { ret = 0; } DSL_CPE_FPrintf(out, DSL_CPE_RET"nData=\"", DSL_CPE_RET_VAL(ret)); pMsg16 = (DSL_uint16_t*)&msg[0]; pMsg32 = (DSL_uint32_t*)&msg[6]; /* print Msg ID, Index and Length*/ DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; i = 6; if (bXtcMsg == DSL_TRUE) { while (i < DevMsg.data.nSizeRx) { DSL_CPE_FPrintf(out, "%08X ", *pMsg32 ); pMsg32++; i += 4; } } else { while (i < DevMsg.data.nSizeRx) { DSL_CPE_FPrintf(out, "%04X ", *pMsg16 ); pMsg16++; i += 2; } } DSL_CPE_FPrintf(out, "\"" DSL_CPE_CRLF); return 0; } } } else { DSL_CPE_FPrintf(out, "DSL: error during processing of message data." DSL_CPE_CRLF ); ret = -1; } return ret; } static const DSL_char_t g_sAufg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_char_t xdsl_firmware[1-256]" DSL_CPE_CRLF /*TODO: Handle OnChipBonding */ #if defined(INCLUDE_DSL_BONDING) "- DSL_char_t xdsl_firmware2[1-256]"DSL_CPE_CRLF #endif DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_AutobootUsedFirmwareGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_CPE_Control_Context_t *pCtrlCtx = DSL_NULL; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } pCtrlCtx = DSL_CPE_GetGlobalContext(); if(pCtrlCtx == DSL_NULL) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(-1)); return -1; } if (DSL_CPE_LINES_PER_DEVICE == 2) { DSL_CPE_FPrintf (out, DSL_CPE_RET"xdsl_firmware=%s xdsl_firmware2=%s" DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), g_sFirmwareName1 != DSL_NULL ? g_sFirmwareName1 : "n/a", g_sFirmwareName2 != DSL_NULL ? g_sFirmwareName2 : "n/a"); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"xdsl_firmware=%s" DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), g_sFirmwareName1 != DSL_NULL ? g_sFirmwareName1 : "n/a"); } return 0; } static const DSL_char_t g_sAlf[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_char_t xdsl_firmware[1-256] (Attention: Use absolute firmware path only"DSL_CPE_CRLF /*TODO: Handle On chip bonding */ #if defined(INCLUDE_DSL_BONDING) "- DSL_char_t xdsl_firmware2[1-256] (Attention: Use absolute firmware path only"DSL_CPE_CRLF #endif DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_AutobootLoadFirmware( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_char_t sFirmwareName1[256] = { 0 }; DSL_char_t *pcFw = DSL_NULL; DSL_char_t *pcFw2 = DSL_NULL; DSL_char_t sFirmwareName2[256] = { 0 }; #ifdef INCLUDE_FW_REQUEST_SUPPORT DSL_AutobootControl_t autobootCtrl; DSL_AutobootStatus_t AutobootStatus; #endif /* INCLUDE_FW_REQUEST_SUPPORT*/ DSL_uint32_t nDevice = 0; DSL_CPE_Control_Context_t *pCtrlCtx = DSL_NULL; memset(&autobootCtrl, 0x00, sizeof(DSL_AutobootControl_t)); memset(&AutobootStatus, 0x00, sizeof(DSL_AutobootStatus_t)); if (DSL_CPE_LINES_PER_DEVICE == 2) { if (DSL_CPE_CLI_CheckParamNumber(pCommands, 2, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } } else { if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } } if (DSL_CPE_LINES_PER_DEVICE == 2) { sscanf (pCommands, "%256s %256s", sFirmwareName1, sFirmwareName2); } else { sscanf (pCommands, "%256s", sFirmwareName1); } /* Get first (default) firmware binary. */ if (strlen(sFirmwareName1) > 0) { if ( strcmp(sFirmwareName1, ".") != 0 ) { pcFw = &sFirmwareName1[0]; /* Update link to the first (default) FW binary. */ if (pcFw) { if (g_sFirmwareName1 != DSL_NULL) { DSL_CPE_Free(g_sFirmwareName1); } g_sFirmwareName1 = DSL_CPE_Malloc (strlen (pcFw) + 1); if (g_sFirmwareName1) { memset(g_sFirmwareName1, 0, strlen (pcFw) + 1); cpe_control_strncpy_s(g_sFirmwareName1, strlen (pcFw) + 1, pcFw, strlen (pcFw)); } DSL_CPE_FwFeaturesGet(g_sFirmwareName1, &g_nFwFeatures1); } } } /* Get second (on-chip bonding) firmware binary. */ if (DSL_CPE_LINES_PER_DEVICE == 2 && strlen(sFirmwareName2) > 0) { pcFw2 = &sFirmwareName2[0]; /* Update link to the second (on-chip bonding) FW binary. */ if (pcFw2) { if (g_sFirmwareName2 != DSL_NULL) { DSL_CPE_Free(g_sFirmwareName2); } g_sFirmwareName2 = DSL_CPE_Malloc (strlen (pcFw2) + 1); if (g_sFirmwareName2) { memset(g_sFirmwareName2, 0, strlen (pcFw2) + 1); cpe_control_strncpy_s(g_sFirmwareName2, strlen (pcFw2) + 1, pcFw2, strlen (pcFw2)); } DSL_CPE_FwFeaturesGet(g_sFirmwareName2, &g_nFwFeatures2); } } pCtrlCtx = DSL_CPE_GetGlobalContext(); if(pCtrlCtx == DSL_NULL) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(-1)); return -1; } DSL_CPE_Fd2DevNum(fd, &nDevice); pCtrlCtx->bForceFirmwareDownload[nDevice] = DSL_TRUE; #ifdef INCLUDE_FW_REQUEST_SUPPORT if (DSL_CPE_LINES_PER_DEVICE < 2) { ret = DSL_CPE_Ioctl (fd, DSL_FIO_AUTOBOOT_STATUS_GET, (int) &AutobootStatus); if ((ret < 0) && (AutobootStatus.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(autobootCtrl.accessCtl.nReturn)); return 0; } } if (DSL_CPE_LINES_PER_DEVICE < 2 && ((AutobootStatus.data.nStatus == DSL_AUTOBOOT_STATUS_FW_WAIT && AutobootStatus.data.nFirmwareRequestType != DSL_FW_REQUEST_NA) || (AutobootStatus.data.nStatus == DSL_AUTOBOOT_STATUS_STOPPED))) { ret = DSL_CPE_DownloadFirmware(fd, nDevice, AutobootStatus.data.nFirmwareRequestType, DSL_PORT_MODE_NA, pcFw, pcFw2); DSL_CPE_FPrintf (out, DSL_CPE_RET, DSL_CPE_RET_VAL(ret)); if (ret < DSL_SUCCESS) { DSL_CPE_FPrintf(out, " (Have you used absolute firmware path?)" DSL_CPE_CRLF); } } else { /* Trigger Autoboot restart sequence. FW binary will be requested from the DSL CPE API driver later*/ autobootCtrl.data.nCommand = DSL_AUTOBOOT_CTRL_RESTART_FULL; ret = DSL_CPE_Ioctl (fd, DSL_FIO_AUTOBOOT_CONTROL_SET, (int) &autobootCtrl); if ((ret < 0) && (autobootCtrl.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(autobootCtrl.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret)); } } #else ret = DSL_CPE_DownloadFirmware(fd, nDevice, DSL_FW_REQUEST_NA, pcFw, pcFw2); DSL_CPE_FPrintf (out, DSL_CPE_RET, DSL_CPE_RET_VAL(ret)); if (ret < DSL_SUCCESS) { DSL_CPE_FPrintf(out, " (Have you used absolute firmware path?)" DSL_CPE_CRLF); } #endif /* INCLUDE_FW_REQUEST_SUPPORT*/ return 0; } static const DSL_char_t g_sAlig[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_XTUDir_t nDirection" DSL_CPE_CRLF " near end = 0" DSL_CPE_CRLF " far end = 1" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_AuxLineInventory_t nData[" _MKSTR(DSL_G993_LI_MAXLEN_AUX)"]" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_AuxLineInventoryGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_uint32_t i = 0; DSL_AuxLineInventory_t pData; int nDirection = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } sscanf (pCommands, "%d", &nDirection); pData.nDirection = nDirection; memset(&pData, 0x0, sizeof(DSL_AuxLineInventory_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_AUX_LINE_INVENTORY_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nLength=%u nData=\"" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), (unsigned int)pData.data.nLength); for (i = 0; i < pData.data.nLength; i++) { if (i%10 == 0) DSL_CPE_FPrintf ( out, DSL_CPE_CRLF); DSL_CPE_FPrintf ( out, "%02x ", pData.data.pData[i]); } DSL_CPE_FPrintf ( out, "\""DSL_CPE_CRLF); } return 0; } #define DSL_CPE_CLI_MAX_PROFILES_PER_BANDS 2030 static const DSL_char_t g_sBpsg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint32_t nBandPlan" DSL_CPE_CRLF "- DSL_uint32_t nProfile" DSL_CPE_CRLF "- DSL_boolean_t bSupported" DSL_CPE_CRLF " false = 0" DSL_CPE_CRLF " true = 1" DSL_CPE_CRLF "- ... nParamNr[3] nCount[" _MKSTR(DSL_CPE_CLI_MAX_PROFILES_PER_BANDS) "]" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BandPlanSupportGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BandPlanSupport_t *pData = DSL_NULL; DSL_int_t nBandPlan = 0, nProfile = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } pData = (DSL_BandPlanSupport_t*)DSL_CPE_Malloc(sizeof(DSL_BandPlanSupport_t)); if (pData == DSL_NULL) { DSL_CPE_FPrintf(out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(DSL_ERR_MEMORY)); return 0; } ret = DSL_CPE_Ioctl (fd, DSL_FIO_BAND_PLAN_SUPPORT_GET, (int) pData); if ((ret < 0) && (pData->accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData->accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData->accessCtl.nReturn)); DSL_CPE_FPrintf (out, "nFormat=(nBandPlan(dec),nProfile(dec),bSupported(dec)) nData=\"" DSL_CPE_CRLF); for (nBandPlan = 0; nBandPlan < DSL_BANDPLAN_LAST; nBandPlan++) { for (nProfile = 0; nProfile < DSL_PROFILE_LAST; nProfile++) { DSL_CPE_FPrintf (out, "(%02d,%02d,%d) ", nBandPlan, nProfile, pData->data.bSupported[nBandPlan][nProfile]); } DSL_CPE_FPrintf (out, DSL_CPE_CRLF ); } DSL_CPE_FPrintf(out, "\"" DSL_CPE_CRLF ); } DSL_CPE_Free(pData); return 0; } static const DSL_char_t g_sBpstg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint32_t nBandPlan (deprecated)" DSL_CPE_CRLF " DSL_BANDPLAN_NA = -1" DSL_CPE_CRLF "- DSL_uint32_t nProfile" DSL_CPE_CRLF " DSL_PROFILE_8A = 0" DSL_CPE_CRLF " DSL_PROFILE_8B = 1" DSL_CPE_CRLF " DSL_PROFILE_8C = 2" DSL_CPE_CRLF " DSL_PROFILE_8D = 3" DSL_CPE_CRLF " DSL_PROFILE_12A = 4" DSL_CPE_CRLF " DSL_PROFILE_12B = 5" DSL_CPE_CRLF " DSL_PROFILE_17A = 6" DSL_CPE_CRLF " DSL_PROFILE_30A = 7" DSL_CPE_CRLF " DSL_PROFILE_35B = 8" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BandPlanStatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BandPlanStatus_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BandPlanStatus_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_BAND_PLAN_STATUS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nBandPlan=%d nProfile=%d" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nBandPlan, pData.data.nProfile); } return 0; } static const DSL_char_t g_sVig[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_char_t DSL_DriverVersionApi[" _MKSTR(MAX_INFO_STRING_LEN)"]"DSL_CPE_CRLF "- DSL_char_t DSL_ChipSetFWVersion[" _MKSTR(MAX_INFO_STRING_LEN)"]"DSL_CPE_CRLF "- DSL_char_t DSL_ChipSetHWVersion[" _MKSTR(MAX_INFO_STRING_LEN)"]"DSL_CPE_CRLF "- DSL_char_t DSL_ChipSetType[" _MKSTR(MAX_INFO_STRING_LEN)"]"DSL_CPE_CRLF "- DSL_char_t DSL_DriverVersionMeiBsp[" _MKSTR(MAX_INFO_STRING_LEN)"]"DSL_CPE_CRLF "- DSL_HybridType_t nHybridType"DSL_CPE_CRLF " unknown = -1"DSL_CPE_CRLF " na = 0"DSL_CPE_CRLF " pots = 1"DSL_CPE_CRLF " isdn_b = 2"DSL_CPE_CRLF " isdn_bj = 3"DSL_CPE_CRLF " universal_vrx500 = 4"DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_VersionInformationGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_VersionInformation_t pData; DSL_CPE_Control_Context_t *pCtrlCtx = DSL_NULL; DSL_char_t pAppPatch[8]; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_VersionInformation_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_VERSION_INFORMATION_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(ret)); } else { pCtrlCtx = DSL_CPE_GetGlobalContext(); if(pCtrlCtx == DSL_NULL) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(-1)); return -1; } if ((pCtrlCtx->driverVer.nMajor != pCtrlCtx->applicationVer.nMajor) || (pCtrlCtx->driverVer.nMinor != pCtrlCtx->applicationVer.nMinor)) { pData.accessCtl.nReturn = DSL_WRN_VERSION_INCOMPATIBLE; } pAppPatch[0] = 0; #ifndef DISABLE_DSL_PATCH_VERSION if (pCtrlCtx->applicationVer.nPatch != 0) { snprintf (pAppPatch, sizeof(pAppPatch), "%spa%d", (pCtrlCtx->driverVer.nPatch == 0) ? "-" : "", pCtrlCtx->applicationVer.nPatch); } #endif /*#ifndef DISABLE_DSL_PATCH_VERSION*/ DSL_CPE_FPrintf (out, DSL_CPE_RET"DSL_DriverVersionApi=%s%s DSL_ChipSetFWVersion=%s " "DSL_ChipSetHWVersion=%s DSL_ChipSetType=%s DSL_DriverVersionMeiBsp=%s " "nHybrid=%d" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.DSL_DriverVersionApi, pAppPatch, pData.data.DSL_ChipSetFWVersion, pData.data.DSL_ChipSetHWVersion, pData.data.DSL_ChipSetType, pData.data.DSL_DriverVersionMeiBsp, pData.data.nHybridType); } return 0; } static const DSL_char_t g_sDscs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "- DSL_uint32_t nDevice" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "- DSL_uint32_t nDevice" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DeviceSelectionConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_uint32_t nDevice = 0; DSL_CPE_Control_Context_t *pCtx = DSL_NULL; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } sscanf (pCommands, "%u", &nDevice); if (nDevice >= DSL_CPE_DSL_ENTITIES) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(-1)); } else { if ((pCtx = DSL_CPE_GetGlobalContext()) != DSL_NULL) { pCtx->nDevNum = nDevice; DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(0)); } else { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(-1)); } } return 0; } static const DSL_char_t g_sDscg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "- DSL_uint32_t nDevice" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DeviceSelectionConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_CPE_Control_Context_t *pCtx = DSL_NULL; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } if ((pCtx = DSL_CPE_GetGlobalContext()) != DSL_NULL) { DSL_CPE_FPrintf (out, "nReturn=%d nDevice=%d" DSL_CPE_CRLF,0, pCtx->nDevNum); } else { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(-1)); } return 0; } static const DSL_char_t g_sLlcs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_DEV_Filter_t nFilter" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " off = 0" DSL_CPE_CRLF " isdn = 1" DSL_CPE_CRLF " pots = 2" DSL_CPE_CRLF " pots_2 = 3" DSL_CPE_CRLF " pots_3 = 4" DSL_CPE_CRLF "- DSL_DEV_HsToneGroupMode_t nHsToneGroupMode" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " auto = 0" DSL_CPE_CRLF " manual = 1" DSL_CPE_CRLF "- DSL_DEV_HsToneGroup_t nHsToneGroup_A (hex)" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " VDSL2 B43 = 0001" DSL_CPE_CRLF " VDSL2 A43 = 0002" DSL_CPE_CRLF " VDSL2 V43 = 0004" DSL_CPE_CRLF " VDSL1 V43POTS = 0008" DSL_CPE_CRLF " VDSL1 V43ISDN = 0010" DSL_CPE_CRLF " ADSL1 C43 = 0020" DSL_CPE_CRLF " ADSL2 J43 = 0040" DSL_CPE_CRLF " ADSL2 B43C = 0080" DSL_CPE_CRLF " ADSL2 A43C = 0100" DSL_CPE_CRLF "- DSL_DEV_HsToneGroup_t nHsToneGroup_V (hex)" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " VDSL2 B43 = 0001" DSL_CPE_CRLF " VDSL2 A43 = 0002" DSL_CPE_CRLF " VDSL2 V43 = 0004" DSL_CPE_CRLF " VDSL1 V43POTS = 0008" DSL_CPE_CRLF " VDSL1 V43ISDN = 0010" DSL_CPE_CRLF " ADSL1 C43 = 0020" DSL_CPE_CRLF " ADSL2 J43 = 0040" DSL_CPE_CRLF " ADSL2 B43C = 0080" DSL_CPE_CRLF " ADSL2 A43C = 0100" DSL_CPE_CRLF "- DSL_DEV_HsToneGroup_t nHsToneGroup_AV (hex)" DSL_CPE_CRLF " not used anymore (set it to zero)" DSL_CPE_CRLF "- DSL_uint32_t nBaseAddr (hex)" DSL_CPE_CRLF "- DSL_uint8_t nIrqNum" DSL_CPE_CRLF "- DSL_boolean_t bNtrEnable" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " enable = 1" DSL_CPE_CRLF " disable = 0" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_LowLevelConfigurationSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_Error_t nReturn = DSL_SUCCESS; DSL_LowLevelConfiguration_t pData; unsigned int nToneGroup_A = 0; unsigned int nToneGroup_V = 0; unsigned int nToneGroup_AV = 0; unsigned int bNtrEnable = 0; int nFilter = 0; int nHsToneGroupMode = 0; char nIrqNum = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_MIN) == DSL_FALSE) { return -1; } if (DSL_CPE_CLI_CheckParamNumber(pCommands, 8, DSL_CLI_MAX) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_LowLevelConfiguration_t)); memset(&(pData.data), 0xFF, sizeof(DSL_DeviceLowLevelConfig_t)); sscanf (pCommands, "%d %d %x %x %x %x %hhd %u", &nFilter, &nHsToneGroupMode, &nToneGroup_A, &nToneGroup_V, &nToneGroup_AV, &pData.data.nBaseAddr, &nIrqNum, &bNtrEnable); pData.data.nHsToneGroup_A = nToneGroup_A; pData.data.nHsToneGroup_V = nToneGroup_V; pData.data.nHsToneGroup_AV = nToneGroup_AV; pData.data.nFilter = nFilter; pData.data.nHsToneGroupMode = nHsToneGroupMode; pData.data.nIrqNum = nIrqNum; pData.data.bNtrEnable = bNtrEnable; ret = DSL_CPE_Ioctl (fd, DSL_FIO_LOW_LEVEL_CONFIGURATION_SET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { /* Check Low Level configuration*/ nReturn = DSL_CPE_LowLevelConfigurationCheck(fd); if (nReturn != DSL_SUCCESS) { pData.accessCtl.nReturn = nReturn; } DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } return 0; } static const DSL_char_t g_sLlcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_DEV_Filter_t nFilter" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " off = 0" DSL_CPE_CRLF " isdn = 1" DSL_CPE_CRLF " pots = 2" DSL_CPE_CRLF " pots_2 = 3" DSL_CPE_CRLF " pots_3 = 4" DSL_CPE_CRLF "- DSL_DEV_HsToneGroupMode_t nHsToneGroupMode" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " auto = 0" DSL_CPE_CRLF " manual = 1" DSL_CPE_CRLF "- DSL_DEV_HsToneGroup_t nHsToneGroup_A (hex)" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " VDSL2 B43 = 0001" DSL_CPE_CRLF " VDSL2 A43 = 0002" DSL_CPE_CRLF " VDSL2 V43 = 0004" DSL_CPE_CRLF " VDSL1 V43POTS = 0008" DSL_CPE_CRLF " VDSL1 V43ISDN = 0010" DSL_CPE_CRLF " ADSL1 C43 = 0020" DSL_CPE_CRLF " ADSL2 J43 = 0040" DSL_CPE_CRLF " ADSL2 B43C = 0080" DSL_CPE_CRLF " ADSL2 A43C = 0100" DSL_CPE_CRLF "- DSL_DEV_HsToneGroup_t nHsToneGroup_V (hex)" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " VDSL2 B43 = 0001" DSL_CPE_CRLF " VDSL2 A43 = 0002" DSL_CPE_CRLF " VDSL2 V43 = 0004" DSL_CPE_CRLF " VDSL1 V43POTS = 0008" DSL_CPE_CRLF " VDSL1 V43ISDN = 0010" DSL_CPE_CRLF " ADSL1 C43 = 0020" DSL_CPE_CRLF " ADSL2 J43 = 0040" DSL_CPE_CRLF " ADSL2 B43C = 0080" DSL_CPE_CRLF " ADSL2 A43C = 0100" DSL_CPE_CRLF "- DSL_DEV_HsToneGroup_t nHsToneGroup_AV (hex)" DSL_CPE_CRLF " not used anymore" DSL_CPE_CRLF "- DSL_uint32_t nBaseAddr (hex)" DSL_CPE_CRLF "- DSL_uint8_t nIrqNum" DSL_CPE_CRLF "- DSL_boolean_t bNtrEnable" DSL_CPE_CRLF " na = -1" DSL_CPE_CRLF " enable = 1" DSL_CPE_CRLF " disable = 0" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_LowLevelConfigurationGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_LowLevelConfiguration_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0, sizeof(DSL_LowLevelConfiguration_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_LOW_LEVEL_CONFIGURATION_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET "nFilter=%d " "nHsToneGroupMode=%d " "nHsToneGroup_A=%x " "nHsToneGroup_V=%x " "nHsToneGroup_AV=%x " "nBaseAddr=%x " "nIrqNum=%u " "bNtrEnable=%d", DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nFilter, pData.data.nHsToneGroupMode, pData.data.nHsToneGroup_A, pData.data.nHsToneGroup_V, pData.data.nHsToneGroup_AV, pData.data.nBaseAddr, pData.data.nIrqNum, pData.data.bNtrEnable); } return 0; } static const DSL_char_t g_sG997lspbg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_AccessDir_t nDirection" DSL_CPE_CRLF " upstream = 0" DSL_CPE_CRLF " downstream = 1" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_AccessDir_t nDirection" DSL_CPE_CRLF " upstream = 0" DSL_CPE_CRLF " downstream = 1" DSL_CPE_CRLF "- DSL_int16_t[" _MKSTR(DSL_G997_MAX_NUMBER_OF_BANDS) "] LATN" DSL_CPE_CRLF "- DSL_int16_t[" _MKSTR(DSL_G997_MAX_NUMBER_OF_BANDS) "] SATN" DSL_CPE_CRLF "- DSL_int16_t[" _MKSTR(DSL_G997_MAX_NUMBER_OF_BANDS) "] SNR" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_G997_LineStatusPerBandGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_G997_LineStatusPerBand_t pData; DSL_int_t i = 0; int nDirection = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_G997_LineStatusPerBand_t)); sscanf (pCommands, "%d", &nDirection); pData.nDirection = nDirection; ret = DSL_CPE_Ioctl (fd, DSL_FIO_G997_LINE_STATUS_PER_BAND_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf(out, DSL_CPE_RET"nDirection=%u ", DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.nDirection ); for (i = 0; i < DSL_G997_MAX_NUMBER_OF_BANDS; i++) { DSL_CPE_FPrintf(out, "LATN[%d]=%hd ", i, pData.data.LATN[i]); } for (i = 0; i < DSL_G997_MAX_NUMBER_OF_BANDS; i++) { DSL_CPE_FPrintf(out, "SATN[%d]=%hd ", i, pData.data.SATN[i]); } for (i = 0; i < DSL_G997_MAX_NUMBER_OF_BANDS; i++) { DSL_CPE_FPrintf(out, "SNR[%d]=%hd ", i, pData.data.SNR[i]); } DSL_CPE_FPrintf(out, DSL_CPE_CRLF ); } return 0; } static const DSL_char_t g_sG997upbosg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_G997_AeleMode_t nAeleMode" DSL_CPE_CRLF " AELE_MODE_0 = 0" DSL_CPE_CRLF " AELE_MODE_1 = 1" DSL_CPE_CRLF " AELE_MODE_2 = 2" DSL_CPE_CRLF " AELE_MODE_3 = 3" DSL_CPE_CRLF "- DSL_uint16_t UpboElmt" DSL_CPE_CRLF "- DSL_int16_t RxThreshDs" DSL_CPE_CRLF "- DSL_int16_t[" _MKSTR(DSL_G997_MAX_NUMBER_OF_BANDS) "] nKleOPb" DSL_CPE_CRLF "- DSL_int16_t[" _MKSTR(DSL_G997_MAX_NUMBER_OF_BANDS) "] nKleRPb" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_G997_UsPowerBackOffStatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_G997_UsPowerBackOffStatus_t pData; DSL_int_t i = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0, sizeof(DSL_G997_UsPowerBackOffStatus_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_G997_US_POWER_BACK_OFF_STATUS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf(out, DSL_CPE_RET"nAeleMode=%u UpboElmt=%u RxThreshDs=%d ", DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nAeleMode, pData.data.UpboElmt, pData.data.RxThreshDs); for (i = 0; i < DSL_G997_MAX_NUMBER_OF_BANDS; i++) { DSL_CPE_FPrintf(out, "nKleOPb[%d]=%hu ", i, pData.data.nKl0EstimOPb[i]); } for (i = 0; i < DSL_G997_MAX_NUMBER_OF_BANDS; i++) { DSL_CPE_FPrintf(out, "nKleRPb[%d]=%hu ", i, pData.data.nKl0EstimRPb[i]); } DSL_CPE_FPrintf(out, DSL_CPE_CRLF ); } return 0; } static const DSL_char_t g_sLpmcs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_G997_PMMode_t PMMode" DSL_CPE_CRLF " DSL_G997_PMMODE_BIT_L3_STATE = 1" DSL_CPE_CRLF " DSL_G997_PMMODE_BIT_L2_STATE = 2" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_G997_LowPowerModeConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_G997_LowPowerModeConfig_t pData; unsigned int PMMode = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_G997_LowPowerModeConfig_t)); sscanf (pCommands, "%u", &PMMode); pData.data.PMMode = PMMode; ret = DSL_CPE_Ioctl (fd, DSL_FIO_G997_LOW_POWER_MODE_CONFIG_SET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } return 0; } #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sLpmcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_G997_PMMode_t PMMode" DSL_CPE_CRLF " DSL_G997_PMMODE_BIT_L3_STATE = 1" DSL_CPE_CRLF " DSL_G997_PMMODE_BIT_L2_STATE = 2" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_G997_LowPowerModeConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_G997_LowPowerModeConfig_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_G997_LowPowerModeConfig_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_G997_LOW_POWER_MODE_CONFIG_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"PMMode=%d" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.PMMode); } return 0; } #endif /*INCLUDE_DSL_CONFIG_GET*/ #ifdef INCLUDE_DSL_G997_STATUS static const DSL_char_t g_sG997ansg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_AccessDir_t nDirection" DSL_CPE_CRLF " upstream = 0" DSL_CPE_CRLF " downstream = 1" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_AccessDir_t nDirection" DSL_CPE_CRLF " upstream = 0" DSL_CPE_CRLF " downstream = 1" DSL_CPE_CRLF "- DSL_uint16_t nAttndrActMethod" DSL_CPE_CRLF "- DSL_uint16_t nAttndrActInpDs" DSL_CPE_CRLF "- DSL_uint16_t nAttndrActInpReinDs" DSL_CPE_CRLF "- DSL_uint16_t nAttndrActDelayDs" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_G997_AttainableNdrStatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_G997_AttainableNdrStatus_t pData; int nDirection = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_G997_AttainableNdrStatus_t)); sscanf (pCommands, "%d", &nDirection); pData.nDirection = nDirection; ret = DSL_CPE_Ioctl (fd, DSL_FIO_G997_ATTAINABLE_NDR_STATUS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nDirection=%u nAttndrActMethod=%d " "nAttndrActInpDs=%d nAttndrActInpReinDs=%d nAttndrActDelayDs=%d" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.nDirection, pData.data.nAttndrActMethod, pData.data.nAttndrActInpDs, pData.data.nAttndrActInpReinDs, pData.data.nAttndrActDelayDs); } return 0; } #endif /* INCLUDE_DSL_G997_STATUS*/ #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sDsmcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- IOCTL_MEI_VectorControl_t eVectorControl" DSL_CPE_CRLF " e_MEI_VECTOR_CTRL_OFF = 0" DSL_CPE_CRLF " e_MEI_VECTOR_CTRL_ON = 1" DSL_CPE_CRLF " e_MEI_VECTOR_FRIENDLY_CTRL_ON = 2" DSL_CPE_CRLF " e_MEI_VECTOR_CTRL_AUTO = 3" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DsmConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_dsmConfig_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_dsmConfig_t)); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_DSM_CONFIG_GET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"eVectorControl=%u " DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), pData.eVectorControl); } DSL_CPE_Close(mei_fd); return 0; } #endif /* INCLUDE_DSL_CONFIG_GET */ static const DSL_char_t g_sDsmcs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- IOCTL_MEI_VectorControl_t eVectorControl" DSL_CPE_CRLF " e_MEI_VECTOR_CTRL_OFF = 0" DSL_CPE_CRLF " e_MEI_VECTOR_CTRL_ON = 1" DSL_CPE_CRLF " e_MEI_VECTOR_FRIENDLY_CTRL_ON = 2" DSL_CPE_CRLF " e_MEI_VECTOR_FRIENDLY_CTRL_AUTO = 3" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DsmConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_dsmConfig_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; unsigned int eVectorControl = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_dsmConfig_t)); sscanf (pCommands, "%u", &eVectorControl); pData.eVectorControl = eVectorControl; if ((pData.eVectorControl < 0) || (pData.eVectorControl > 3)) { DSL_CPE_FPrintf(out, DSL_CPE_PREFIX "invalid parameters!" DSL_CPE_CRLF); DSL_CPE_FPrintf(out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(DSL_ERROR)); return 0; } DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_DSM_CONFIG_SET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret)); } DSL_CPE_Close(mei_fd); return 0; } static const DSL_char_t g_sDsmsg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- IOCTL_MEI_VectorStatus_t eVectorStatus" DSL_CPE_CRLF " e_MEI_VECTOR_STAT_OFF = 0" DSL_CPE_CRLF " e_MEI_VECTOR_STAT_ON_DS = 1" DSL_CPE_CRLF " e_MEI_VECTOR_STAT_ON_DS_US = 2" DSL_CPE_CRLF "- IOCTL_MEI_VectorFriendlyStatus_t eVectorFriendlyStatus" DSL_CPE_CRLF " e_MEI_VECTOR_FRIENDLY_STAT_OFF = 0" DSL_CPE_CRLF " e_MEI_VECTOR_FRIENDLY_STAT_ON_DS = 1" DSL_CPE_CRLF " e_MEI_VECTOR_FRIENDLY_STAT_ON_DS_US = 2" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DsmStatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_dsmStatus_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_dsmStatus_t)); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_DSM_STATUS_GET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"eVectorStatus=%u eVectorFriendlyStatus=%u " DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), pData.eVectorStatus, pData.eVectorFriendlyStatus); } DSL_CPE_Close(mei_fd); return 0; } static const DSL_char_t g_sDsmstatg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint32_t n_processed" DSL_CPE_CRLF "- DSL_uint32_t n_fw_dropped_size" DSL_CPE_CRLF "- DSL_uint32_t n_mei_dropped_size" DSL_CPE_CRLF "- DSL_uint32_t n_mei_dropped_no_pp_cb" DSL_CPE_CRLF "- DSL_uint32_t n_pp_dropped" DSL_CPE_CRLF "- DSL_uint32_t n_fw_total" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DsmStatisticsGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_dsmStatistics_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_dsmStatistics_t)); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_DSM_STATISTICS_GET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"n_processed=%u n_fw_dropped_size=%u " "n_mei_dropped_size=%u n_mei_dropped_no_pp_cb=%u n_pp_dropped=%u n_fw_total=%u" DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), pData.n_processed, pData.n_fw_dropped_size, pData.n_mei_dropped_size, pData.n_mei_dropped_no_pp_cb, pData.n_pp_dropped, pData.n_fw_total); } DSL_CPE_Close(mei_fd); return 0; } #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sDsmmcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF #if (DSL_CPE_MAX_DEVICE_NUMBER > 1) "Input Parameter" DSL_CPE_CRLF "- DSL_uint32_t nDevice (optional, not used in the 'backward compatible' mode)" DSL_CPE_CRLF DSL_CPE_CRLF #endif "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF #if (DSL_CPE_MAX_DEVICE_NUMBER > 1) "- DSL_uint32_t nDevice (optional, not used in the 'backward compatible' mode)" DSL_CPE_CRLF #endif "- DSL_uint8_t[6] nMacAddress (used hex format XX:XX:XX:XX:XX:XX)" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DsmMacConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_MacConfig_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_MacConfig_t)); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_MAC_CONFIG_GET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nMacAddress=%02X:%02X:%02X:%02X:%02X:%02X " DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), pData.nMacAddress[0], pData.nMacAddress[1], pData.nMacAddress[2], pData.nMacAddress[3], pData.nMacAddress[4], pData.nMacAddress[5]); } DSL_CPE_Close(mei_fd); return 0; } #endif /* INCLUDE_DSL_CONFIG_GET */ static const DSL_char_t g_sDsmmcs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF #if (DSL_CPE_MAX_DEVICE_NUMBER > 1) "- DSL_uint32_t nDevice (optional, not used in the 'backward compatible' mode)" DSL_CPE_CRLF #endif "- DSL_uint8_t[6] nMacAddress (used hex format XX:XX:XX:XX:XX:XX)" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF #if (DSL_CPE_MAX_DEVICE_NUMBER > 1) "- DSL_uint32_t nDevice (optional, not used in the 'backward compatible' mode)" DSL_CPE_CRLF #endif DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DsmMacConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_MacConfig_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; DSL_char_t sMacAdr[18]; DSL_CPE_MacAddress_t macAdr; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_MacConfig_t)); ret = sscanf (pCommands, "%18s", sMacAdr); ret = DSL_CPE_GetMacAdrFromString(sMacAdr, &macAdr); if (ret < DSL_SUCCESS) { DSL_CPE_FPrintf(out, DSL_CPE_PREFIX "inconsistent MAC address!" DSL_CPE_CRLF); DSL_CPE_FPrintf(out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(DSL_ERROR)); return 0; } else { cpe_control_memcpy_s(pData.nMacAddress, DSL_MAC_ADDRESS_OCTETS, &macAdr, sizeof(macAdr)); } DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_MAC_CONFIG_SET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret)); } DSL_CPE_Close(mei_fd); return 0; } #ifndef DSL_CPE_DEBUG_DISABLE static const DSL_char_t g_sBNDDBGst[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint32_t nAggregateReg" DSL_CPE_CRLF "- DSL_uint8_t nRemoteDiscoveryCode[6] (hex)" DSL_CPE_CRLF "- DSL_CPE_BND_MsStatus_t nMsStatus" DSL_CPE_CRLF " DSL_BND_MASTER = 0" DSL_CPE_CRLF " DSL_BND_SLAVE = 1" DSL_CPE_CRLF "- DSL_uint16_t nPafAvailable" DSL_CPE_CRLF "- DSL_uint16_t nRemotePafAvailable" DSL_CPE_CRLF "- DSL_uint16_t nPafAggregate" DSL_CPE_CRLF "- DSL_uint16_t nPafEnable" DSL_CPE_CRLF "- DSL_uint32_t nTxDataRate" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_DBG_StatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t i = 0; DSL_CPE_Control_Context_t *pCtx = DSL_NULL; DSL_CPE_BND_Context_t *pBnd = DSL_NULL; DSL_uint32_t nDevice = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } if ((pCtx = DSL_CPE_GetGlobalContext()) != DSL_NULL) { if ((pBnd = (DSL_CPE_BND_Context_t*)pCtx->pBnd) == DSL_NULL) { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(-1)); return 0; } } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(-1)); return 0; } if ((DSL_CPE_Fd2DevNum(fd, &nDevice)) < DSL_SUCCESS) { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(-1)); return 0; } DSL_CPE_FPrintf (out, DSL_CPE_RET"nAggregateReg=%u ", DSL_CPE_RET_VAL(DSL_SUCCESS), pBnd->aggregateReg); DSL_CPE_FPrintf (out, "nRemoteDiscoveryCode=\""); for (i = 0; i < 6; i++) { DSL_CPE_FPrintf (out, "0x%02x ", pBnd->remoteDiscoveryCode[i]); } DSL_CPE_FPrintf (out, "\""); DSL_CPE_FPrintf (out, "nMsStatus=%u nPafAvailable=%u nRemotePafAvailable=%u " "nPafAggregate=%u nPafEnable=%u nTxDataRate=%u"DSL_CPE_CRLF, pBnd->lineMonitorStateMachine[nDevice].MsStatus, pBnd->lineMonitorStateMachine[nDevice].PafAvailable, pBnd->lineMonitorStateMachine[nDevice].RemotePafAvailable, pBnd->lineMonitorStateMachine[nDevice].PafAggregate, pBnd->lineMonitorStateMachine[nDevice].PafEnable, pBnd->lineMonitorStateMachine[nDevice].TxDataRate); return 0; } #endif /* #ifndef DSL_CPE_DEBUG_DISABLE */ static const DSL_char_t g_sBNDcs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_DslModeSelection_t nDslMode" DSL_CPE_CRLF " mode adsl = 0" DSL_CPE_CRLF #if defined(INCLUDE_DSL_CPE_API_VRX) " mode vdsl = 1" DSL_CPE_CRLF #endif /* defined(INCLUDE_DSL_CPE_API_VRX) */ "- DSL_boolean_t bPafEnable" DSL_CPE_CRLF " disable = 0" DSL_CPE_CRLF " enable = 1" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_ConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BND_ConfigSet_t pData; DSL_uint_t nDslMode = 0; DSL_uint_t pafEnable = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 2, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BND_ConfigSet_t)); sscanf (pCommands, "%u %u", &nDslMode, &pafEnable); pData.nDslMode = nDslMode; pData.data.bPafEnable = pafEnable; ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_CONFIG_SET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } return 0; } #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sBNDcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_DslModeSelection_t nDslMode" DSL_CPE_CRLF " mode adsl = 0" DSL_CPE_CRLF #if defined(INCLUDE_DSL_CPE_API_VRX) " mode vdsl = 1" DSL_CPE_CRLF #endif /* defined(INCLUDE_DSL_CPE_API_VRX) */ DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_DslModeSelection_t nDslMode" DSL_CPE_CRLF " mode adsl = 0" DSL_CPE_CRLF #if defined(INCLUDE_DSL_CPE_API_VRX) " mode vdsl = 1" DSL_CPE_CRLF #endif /* defined(INCLUDE_DSL_CPE_API_VRX) */ "- DSL_boolean_t bPafEnable" DSL_CPE_CRLF " false = 0" DSL_CPE_CRLF " true = 1" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_ConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BND_ConfigGet_t pData; DSL_uint_t nDslMode = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BND_ConfigGet_t)); sscanf (pCommands, "%u", &nDslMode); pData.nDslMode = nDslMode; ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_CONFIG_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nDslMode=%u bPafEnable=%u" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.nDslMode, pData.data.bPafEnable); } return 0; } #endif /* INCLUDE_DSL_CONFIG_GET*/ static const DSL_char_t g_sBNDhsg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_BND_ActivationMode_t nActivationMode (hex)" DSL_CPE_CRLF " DSL_BND_NO_COMMAND = 0x00000000" DSL_CPE_CRLF " DSL_BND_DISCOVERY_SET_IF_CLEAR = 0x00000001" DSL_CPE_CRLF " DSL_BND_DISCOVERY_CLEAR_IF_SAME = 0x00000002" DSL_CPE_CRLF " DSL_BND_AGGREGATE_SET = 0x00000004" DSL_CPE_CRLF " DSL_BND_AGGREGATE_CLR = 0x00000008" DSL_CPE_CRLF "- DSL_uint32_t nAggregateData" DSL_CPE_CRLF "- DSL_BND_RemotePafSupported_t nRemotePafSupported" DSL_CPE_CRLF " DSL_BND_ENABLE_NOT_INITIALIZED = -1" DSL_CPE_CRLF " DSL_BND_ENABLE_OFF = 0" DSL_CPE_CRLF " DSL_BND_ENABLE_ON = 1" DSL_CPE_CRLF "- DSL_uint8_t nDiscoveryCode[6] (hex)" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_HsStatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, i; DSL_BND_HsStatusGet_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BND_HsStatusGet_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_HS_STATUS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nActivationMode=0x%08x nAggregateData=%d " "nRemotePafSupported=%d ", DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nActivationMode, pData.data.nAggregateData, pData.data.nRemotePafSupported); DSL_CPE_FPrintf (out, "nDiscoveryCode=\""); for (i = 0; i < 6; i++) { DSL_CPE_FPrintf (out, "0x%02x ", pData.data.nDiscoveryCode[i]); } DSL_CPE_FPrintf (out, "\"" DSL_CPE_CRLF); } return 0; } static const DSL_char_t g_sBNDETHDBGcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint16_t nControlRegister" DSL_CPE_CRLF "- DSL_uint16_t nRxFragmentsDrop" DSL_CPE_CRLF "- DSL_uint16_t nRxFragmentsLink0" DSL_CPE_CRLF "- DSL_uint16_t nRxFragmentsLink1" DSL_CPE_CRLF "- DSL_uint32_t nRxGoodFragments" DSL_CPE_CRLF "- DSL_uint16_t nRxPackets" DSL_CPE_CRLF "- DSL_uint16_t nTxFragmentsLink0" DSL_CPE_CRLF "- DSL_uint16_t nTxFragmentsLink1" DSL_CPE_CRLF "- DSL_uint16_t nTxPackets" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_ETH_DBG_CountersGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BND_EthDbgCounters_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BND_EthDbgCounters_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_ETH_DBG_COUNTERS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nControlRegister=%hu nRxFragmentsDrop=%hu " "nRxFragmentsLink0=%hu nRxFragmentsLink1=%hu nRxGoodFragments=%u " "nRxPackets=%hu nTxFragmentsLink0=%hu nTxFragmentsLink1=%hu nTxPackets=%hu" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nControlRegister, pData.data.nRxFragmentsDrop, pData.data.nRxFragmentsLink0, pData.data.nRxFragmentsLink1, pData.data.nRxGoodFragments, pData.data.nRxPackets, pData.data.nTxFragmentsLink0, pData.data.nTxFragmentsLink1, pData.data.nTxPackets); } return 0; } static const DSL_char_t g_sBNDETHcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint16_t nRxBadFragments" DSL_CPE_CRLF "- DSL_uint32_t nRxErroredFragments" DSL_CPE_CRLF "- DSL_uint32_t nRxLargeFragments" DSL_CPE_CRLF "- DSL_uint16_t nRxLostEnds" DSL_CPE_CRLF "- DSL_uint16_t nRxLostFragments" DSL_CPE_CRLF "- DSL_uint16_t nRxLostStarts" DSL_CPE_CRLF "- DSL_uint32_t nRxOverlfows" DSL_CPE_CRLF "- DSL_uint32_t nRxSmallFragments" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_ETH_CountersGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BND_EthCounters_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BND_EthCounters_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_ETH_COUNTERS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nRxBadFragments=%hu nRxErroredFragments=%u " "nRxLargeFragments=%u nRxLostEnds=%hu nRxLostFragments=%hu nRxLostStarts=%hu " "nRxOverlfows=%u nRxSmallFragments=%u" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nRxBadFragments, pData.data.nRxErroredFragments, pData.data.nRxLargeFragments, pData.data.nRxLostEnds, pData.data.nRxLostFragments, pData.data.nRxLostStarts, pData.data.nRxOverlfows, pData.data.nRxSmallFragments); } return 0; } static const DSL_char_t g_sBNDpmss[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_PortMode_t nPortMode" DSL_CPE_CRLF " DSL_PORT_MODE_NA = 0" DSL_CPE_CRLF " DSL_PORT_MODE_SINGLE = 1" DSL_CPE_CRLF " DSL_PORT_MODE_DUAL = 2" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_BND_PortModeSyncSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_BND_PortModeSync_t pData; DSL_uint_t portMode = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_BND_PortModeSync_t)); sscanf (pCommands, "%u", &portMode); pData.data.nPortMode = portMode; ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_PORT_MODE_SYNC_SET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } return 0; } static const DSL_char_t g_sVpcs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_BF_VdslProfileConfigData_t nVdslProfile (hex)" DSL_CPE_CRLF " DSL_BF_PROFILE_8A = 0x00000001" DSL_CPE_CRLF " DSL_BF_PROFILE_8B = 0x00000002" DSL_CPE_CRLF " DSL_BF_PROFILE_8C = 0x00000004" DSL_CPE_CRLF " DSL_BF_PROFILE_8D = 0x00000008" DSL_CPE_CRLF " DSL_BF_PROFILE_12A = 0x00000010" DSL_CPE_CRLF " DSL_BF_PROFILE_12B = 0x00000020" DSL_CPE_CRLF " DSL_BF_PROFILE_17A = 0x00000040" DSL_CPE_CRLF " DSL_BF_PROFILE_30A = 0x00000080" DSL_CPE_CRLF " DSL_BF_PROFILE_35B = 0x00000100" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_VdslProfileConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_VdslProfileConfig_t pData; unsigned int nVdslProfile = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_VdslProfileConfig_t)); sscanf (pCommands, "%x", &nVdslProfile); pData.data.nVdslProfile = nVdslProfile; ret = DSL_CPE_Ioctl (fd, DSL_FIO_VDSL_PROFILE_CONFIG_SET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } return 0; } #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sVpcg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_BF_VdslProfileConfigData_t nVdslProfile (hex)" DSL_CPE_CRLF " DSL_BF_PROFILE_8A = 0x00000001" DSL_CPE_CRLF " DSL_BF_PROFILE_8B = 0x00000002" DSL_CPE_CRLF " DSL_BF_PROFILE_8C = 0x00000004" DSL_CPE_CRLF " DSL_BF_PROFILE_8D = 0x00000008" DSL_CPE_CRLF " DSL_BF_PROFILE_12A = 0x00000010" DSL_CPE_CRLF " DSL_BF_PROFILE_12B = 0x00000020" DSL_CPE_CRLF " DSL_BF_PROFILE_17A = 0x00000040" DSL_CPE_CRLF " DSL_BF_PROFILE_30A = 0x00000080" DSL_CPE_CRLF " DSL_BF_PROFILE_35B = 0x00000100" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_VdslProfileConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_VdslProfileConfig_t pData; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_VdslProfileConfig_t)); ret = DSL_CPE_Ioctl (fd, DSL_FIO_VDSL_PROFILE_CONFIG_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nVdslProfile=0x%08X" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.data.nVdslProfile); } return 0; } #endif /* #ifdef INCLUDE_DSL_CONFIG_GET*/ #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sMEIPocg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint16_t nPllOffset" DSL_CPE_CRLF " PLL_OFFSET_MIN = -32768" DSL_CPE_CRLF " PLL_OFFSET_MAX = 32767" DSL_CPE_CRLF " PLL_DISABLED = 32768" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_MEI_PllOffsetConfigGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_pllOffsetConfig_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_pllOffsetConfig_t)); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_PLL_OFFSET_CONFIG_GET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nPllOffset=%d" DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), pData.nPllOffset); } DSL_CPE_Close(mei_fd); return 0; } #endif /* INCLUDE_DSL_CONFIG_GET */ static const DSL_char_t g_sMEIPocs[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "- DSL_uint16_t nPllOffset" DSL_CPE_CRLF " PLL_OFFSET_MIN = -32768" DSL_CPE_CRLF " PLL_OFFSET_MAX = 32767" DSL_CPE_CRLF " PLL_DISABLED = 32768" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_MEI_PllOffsetConfigSet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_pllOffsetConfig_t pData; DSL_uint32_t nDevice = 0; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_pllOffsetConfig_t)); sscanf (pCommands, "%d", &pData.nPllOffset); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_PLL_OFFSET_CONFIG_SET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret)); } DSL_CPE_Close(mei_fd); return 0; } static const DSL_char_t g_sRaSg[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF #if (DSL_CPE_MAX_DEVICE_NUMBER > 1) "- DSL_uint32_t nDevice (optional, not used in the 'backward compatible' mode)" DSL_CPE_CRLF #endif "- DSL_AccessDir_t nDirection" DSL_CPE_CRLF " upstream = 0" DSL_CPE_CRLF " downstream = 1" DSL_CPE_CRLF DSL_CPE_CRLF "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF #if (DSL_CPE_MAX_DEVICE_NUMBER > 1) "- DSL_uint32_t nDevice (optional, not used in the 'backward compatible' mode)" DSL_CPE_CRLF #endif "- DSL_uint8_t nDirection" DSL_CPE_CRLF "- DSL_G997_RA_MODE_t RA_MODE" DSL_CPE_CRLF " manual = 1" DSL_CPE_CRLF " at init = 2" DSL_CPE_CRLF " dynamic = 3" DSL_CPE_CRLF " dynamic SOS = 4" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_G997_RateAdaptationStatusGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0; DSL_G997_RateAdaptationStatus_t pData; int nDirection = 0; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 1, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(DSL_G997_RateAdaptationStatus_t)); sscanf (pCommands, "%d", &nDirection); pData.nDirection = nDirection; ret = DSL_CPE_Ioctl (fd, DSL_FIO_G997_RATE_ADAPTATION_STATUS_GET, (int) &pData); if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.accessCtl.nReturn)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nDirection=%hu RA_MODE=%u" DSL_CPE_CRLF, DSL_CPE_RET_VAL(pData.accessCtl.nReturn), pData.nDirection, pData.data.RA_MODE); } return 0; } #ifdef INCLUDE_DSL_CONFIG_GET static const DSL_char_t g_sDig[] = #ifndef DSL_CPE_DEBUG_DISABLE "Long Form: %s" DSL_CPE_CRLF "Short Form: %s" DSL_CPE_CRLF DSL_CPE_CRLF "Input Parameter" DSL_CPE_CRLF "%s" "Output Parameter" DSL_CPE_CRLF "- DSL_Error_t nReturn" DSL_CPE_CRLF "%s" "- DSL_uint8_t nMaxDeviceNumber" DSL_CPE_CRLF "- DSL_uint8_t nLinesPerDevice" DSL_CPE_CRLF "- DSL_uint8_t nChannelsPerLine" DSL_CPE_CRLF "- DSL_uint8_t nEntitiesEnabled" DSL_CPE_CRLF DSL_CPE_CRLF ""; #else ""; #endif DSL_CLI_LOCAL DSL_int_t DSL_CPE_CLI_DeviceInfoGet( DSL_int_t fd, DSL_char_t *pCommands, DSL_CPE_File_t *out) { DSL_int_t ret = 0, mei_fd; IOCTL_MEI_devinfo_t pData; DSL_uint32_t nDevice; DSL_char_t dev_name[32] = {0}; if (DSL_CPE_CLI_CheckParamNumber(pCommands, 0, DSL_CLI_EQUALS) == DSL_FALSE) { return -1; } memset(&pData, 0x0, sizeof(IOCTL_MEI_devinfo_t)); DSL_CPE_Fd2DevNum(fd, &nDevice); snprintf(dev_name, sizeof(dev_name), "/dev/mei_cpe/%u", nDevice); mei_fd = DSL_CPE_Open(dev_name); if (mei_fd <= 0) { DSL_CPE_Close(mei_fd); DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(mei_fd)); return 0; } ret = ioctl(mei_fd, FIO_MEI_DRV_DEVINFO_GET, (DSL_int_t)&pData); if (ret != 0) { DSL_CPE_FPrintf (out, sFailureReturn, DSL_CPE_RET_VAL(pData.ictl.retCode)); } else { DSL_CPE_FPrintf (out, DSL_CPE_RET"nMaxDeviceNumber=%u nLinesPerDevice=%u " "nChannelsPerLine=%u nEntitiesEnabled=%u" DSL_CPE_CRLF, DSL_CPE_RET_VAL(ret), pData.maxDeviceNumber, pData.linesPerDevice, pData.channelsPerLine, pData.entitiesEnabled); } DSL_CPE_Close(mei_fd); return 0; } #endif /* INCLUDE_DSL_CONFIG_GET */ DSL_void_t DSL_CPE_CLI_DeviceCommandsRegister (DSL_void_t) { /* Debug functionalities */ DSL_CPE_CLI_CMD_ADD_DEVICE ("dms", "DeviceMessageSend", DSL_CPE_CLI_DBG_DeviceMessageSend, g_sDms); DSL_CPE_CLI_CMD_ADD_DEVICE ("dmms", "DeviceMessageModifySend", DSL_CPE_CLI_DBG_DeviceMessageModifySend, g_sDmms); /* Common functionalities */ DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("aufg", "AutobootUsedFirmwareGet", DSL_CPE_CLI_AutobootUsedFirmwareGet, g_sAufg); DSL_CPE_CLI_CMD_ADD_DEVICE ("alf", "AutobootLoadFirmware", DSL_CPE_CLI_AutobootLoadFirmware, g_sAlf); DSL_CPE_CLI_CMD_ADD_DEVICE ("alig", "AuxLineInventoryGet", DSL_CPE_CLI_AuxLineInventoryGet, g_sAlig); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("bpsg", "BandPlanSupportGet", DSL_CPE_CLI_BandPlanSupportGet, g_sBpsg); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("bpstg", "BandPlanSTatusGet", DSL_CPE_CLI_BandPlanStatusGet, g_sBpstg); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("vig", "VersionInformationGet", DSL_CPE_CLI_VersionInformationGet, g_sVig); if (DSL_CPE_DSL_ENTITIES > 1) { DSL_CPE_CLI_CMD_ADD_DEVICE ("dscs", "DeviceSelectionConfigSet", DSL_CPE_CLI_DeviceSelectionConfigSet, g_sDscs); DSL_CPE_CLI_CMD_ADD_DEVICE ("dscg", "DeviceSelectionConfigGet", DSL_CPE_CLI_DeviceSelectionConfigGet, g_sDscg); } DSL_CPE_CLI_CMD_ADD_DEVICE ("llcs", "LowLevelConfigurationSet", DSL_CPE_CLI_LowLevelConfigurationSet, g_sLlcs); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("llcg", "LowLevelConfigurationGet", DSL_CPE_CLI_LowLevelConfigurationGet, g_sLlcg); /* G.997.1 related functionlities */ DSL_CPE_CLI_CMD_ADD_DEVICE ("g997lspbg", "G997_LineStatusPerBandGet", DSL_CPE_CLI_G997_LineStatusPerBandGet, g_sG997lspbg); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("g997upbosg", "G997_UsPowerBackOffStatusGet", DSL_CPE_CLI_G997_UsPowerBackOffStatusGet, g_sG997upbosg); DSL_CPE_CLI_CMD_ADD_DEVICE ("g997lpmcs", "G997_LowPowerModeConfigSet", DSL_CPE_CLI_G997_LowPowerModeConfigSet, g_sLpmcs); #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("g997lpmcg", "G997_LowPowerModeConfigGet", DSL_CPE_CLI_G997_LowPowerModeConfigGet, g_sLpmcg); #endif /* #ifdef INCLUDE_DSL_CONFIG_GET*/ #ifdef INCLUDE_DSL_G997_STATUS DSL_CPE_CLI_CMD_ADD_DEVICE ("g997ansg", "G997_AttainableNdrStatusGet", DSL_CPE_CLI_G997_AttainableNdrStatusGet, g_sG997ansg); #endif /* #ifdef INCLUDE_DSL_G997_STATUS*/ #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE ("dsmcg", "DSM_ConfigGet", DSL_CPE_CLI_DsmConfigGet, g_sDsmcg); #endif /* INCLUDE_DSL_CONFIG_GET*/ DSL_CPE_CLI_CMD_ADD_DEVICE ("dsmcs", "DSM_ConfigSet", DSL_CPE_CLI_DsmConfigSet, g_sDsmcs); DSL_CPE_CLI_CMD_ADD_DEVICE ("dsmsg", "DSM_StatusGet", DSL_CPE_CLI_DsmStatusGet, g_sDsmsg); DSL_CPE_CLI_CMD_ADD_DEVICE ("dsmstatg", "DSM_STATisticsGet", DSL_CPE_CLI_DsmStatisticsGet, g_sDsmstatg); #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE ("dsmmcg", "DSM_MacConfigGet", DSL_CPE_CLI_DsmMacConfigGet, g_sDsmmcg); #endif /* INCLUDE_DSL_CONFIG_GET*/ DSL_CPE_CLI_CMD_ADD_DEVICE ("dsmmcs", "DSM_MacConfigSet", DSL_CPE_CLI_DsmMacConfigSet, g_sDsmmcs); if (INCLUDE_DSL_BONDING) { /* Debug functionalities */ #ifndef DSL_CPE_DEBUG_DISABLE DSL_CPE_CLI_CMD_ADD_DEVICE ("bnddbgsg", "BND_DBG_StatusGet", DSL_CPE_CLI_BND_DBG_StatusGet, g_sBNDDBGst); #endif /* #ifndef DSL_CPE_DEBUG_DISABLE */ DSL_CPE_CLI_CMD_ADD_DEVICE ("bndcs", "BND_ConfigSet", DSL_CPE_CLI_BND_ConfigSet, g_sBNDcs); #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE ("bndcg", "BND_ConfigGet", DSL_CPE_CLI_BND_ConfigGet, g_sBNDcg); #endif /* #ifdef INCLUDE_DSL_CONFIG_GET*/ DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("bndhsg", "BND_HsStatusGet", DSL_CPE_CLI_BND_HsStatusGet, g_sBNDhsg); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("bndethdbgcg", "BND_ETH_DBG_CountersGet", DSL_CPE_CLI_BND_ETH_DBG_CountersGet, g_sBNDETHDBGcg); DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("bndethcg", "BND_ETH_CountersGet", DSL_CPE_CLI_BND_ETH_CountersGet, g_sBNDETHcg); DSL_CPE_CLI_CMD_ADD_DEVICE ("bndpmss", "BND_PortModeSyncSet", DSL_CPE_CLI_BND_PortModeSyncSet, g_sBNDpmss); } DSL_CPE_CLI_CMD_ADD_DEVICE ("vpcs", "VdslProfileConfigSet", DSL_CPE_CLI_VdslProfileConfigSet, g_sVpcs); #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG ("vpcg", "VdslProfileConfigGet", DSL_CPE_CLI_VdslProfileConfigGet, g_sVpcg); #endif /* INCLUDE_DSL_CONFIG_GET*/ #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE ("meipocg", "MEI_PllOffsetConfigGet", DSL_CPE_CLI_MEI_PllOffsetConfigGet, g_sMEIPocg); #endif /* INCLUDE_DSL_CONFIG_GET*/ DSL_CPE_CLI_CMD_ADD_DEVICE ("meipocs", "MEI_PllOffsetConfigSet", DSL_CPE_CLI_MEI_PllOffsetConfigSet, g_sMEIPocs); DSL_CPE_CLI_CMD_ADD_DEVICE ("g997rasg", "G997_RateAdaptationStatusGet", DSL_CPE_CLI_G997_RateAdaptationStatusGet, g_sRaSg); #ifdef INCLUDE_DSL_CONFIG_GET DSL_CPE_CLI_CMD_ADD_DEVICE ("dig", "DeviceInfoGet", DSL_CPE_CLI_DeviceInfoGet, g_sDig); #endif /* INCLUDE_DSL_CONFIG_GET*/ } #endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */ #endif /* INCLUDE_DSL_CPE_API_VRX */