| /** \file vp_debug.c |
| * vp_debug.c |
| * |
| * This file contains the implementation of VP_DEBUG MACRO. |
| * |
| * Copyright (c) 2011, Microsemi |
| * |
| * $Revision: 1.1.2.1.14.1.8.3 $ |
| * $LastChangedDate: 2011-11-07 13:39:50 -0600 (Mon, 07 Nov 2011) $ |
| */ |
| |
| #include "vp_api_cfg.h" |
| #include "vp_api.h" |
| #include "vp_debug.h" |
| |
| #if defined (VP_CC_VCP2_SERIES) || defined (VP_CC_MELT_SERIES) |
| #include "hbi_common.h" |
| #endif |
| |
| uint32 vpDebugSelectMask = VP_OPTION_DEFAULT_DEBUG_SELECT; |
| |
| /** |
| * VpRegisterDump() |
| * This function is used to dump the content of all device registers. |
| * |
| * Preconditions: |
| * Device context should be created. |
| * |
| * Postconditions: |
| * Debug output of "all" registers. |
| */ |
| VpStatusType |
| VpRegisterDump( |
| VpDevCtxType *pDevCtx) |
| { |
| VpStatusType status; |
| VP_API_ENTER(VpDevCtxType, pDevCtx, "RegisterDump"); |
| |
| /* Basic argument checking */ |
| if (pDevCtx == VP_NULL) { |
| status = VP_STATUS_INVALID_ARG; |
| } else { |
| status = VP_CALL_DEV_FUNC(RegisterDump, (pDevCtx)); |
| } |
| |
| VP_API_EXIT(VpDevCtxType, pDevCtx, "RegisterDump", status); |
| return status; |
| } /* VpRegisterDump() */ |
| |
| /** |
| * VpObjectDump() |
| * This function is used to dump the contents of a Device Context and Device |
| * Object (if pDevCtx != VP_NULL) and/or the contents of a Line Context and Line |
| * Object (if pLineCtx != VP_NULL). Either pDevCtx or pLineCtx must be VP_NULL, |
| * but not both. |
| * |
| * Preconditions: |
| * VP_CC_DEBUG_SELECT must include VP_DBG_ERROR for this function to be |
| * compiled in. |
| * |
| * Postconditions: |
| * Debug output of "all" registers. |
| */ |
| VpStatusType |
| VpObjectDump( |
| VpLineCtxType *pLineCtx, |
| VpDevCtxType *pDevCtx) |
| { |
| VpStatusType status = VP_STATUS_FUNC_NOT_SUPPORTED; |
| |
| #if (VP_CC_DEBUG_SELECT & (VP_DBG_API_FUNC | VP_DBG_INFO)) |
| bool singleLine = (pLineCtx != VP_NULL); |
| #endif |
| |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_API_FUNC) |
| if (singleLine) { |
| VP_API_ENTER(VpLineCtxType, pLineCtx, "ObjectDump"); |
| } else { |
| VP_API_ENTER(VpDevCtxType, pDevCtx, "ObjectDump"); |
| } |
| #endif |
| |
| /* Basic argument checking */ |
| if ( |
| ((pDevCtx == VP_NULL) && (pLineCtx == VP_NULL)) || |
| ((pDevCtx != VP_NULL) && (pLineCtx != VP_NULL)) |
| ) { |
| status = VP_STATUS_INVALID_ARG; |
| } else { |
| |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_INFO) |
| VpSysDebugPrintf("\npDevCtx = %lu\n", (unsigned long)pDevCtx); |
| VpSysDebugPrintf("pLineCtx = %lu\n", (unsigned long)pLineCtx); |
| |
| /* Contexts are device-independent, so code for displaying them is |
| included here. */ |
| if (singleLine) { |
| VpSysDebugPrintf("\nDumping Line Context:\n"); |
| VpSysDebugPrintf("\tpLineCtx->pDevCtx = %lu\n", (unsigned long)(pLineCtx->pDevCtx)); |
| VpSysDebugPrintf("\tpLineCtx->pLineObj = %lu\n", (unsigned long)(pLineCtx->pLineObj)); |
| pDevCtx = pLineCtx->pDevCtx; |
| status = VP_CALL_DEV_FUNC(ObjectDump, (pLineCtx, VP_NULL)); |
| } else { |
| int line; |
| VpSysDebugPrintf("\nDumping Device Context:\n"); |
| VpSysDebugPrintf("\tpDevCtx->deviceType = %d\n", (int)(pDevCtx->deviceType)); |
| VpSysDebugPrintf("\tpDevCtx->pDevObj = %lu\n", (unsigned long)(pDevCtx->pDevObj)); |
| VpSysDebugPrintf("\tpDevCtx->pLineCtx[%d] = {", VP_MAX_LINES_PER_DEVICE); |
| for (line = 0; line < VP_MAX_LINES_PER_DEVICE; line++) { |
| VpSysDebugPrintf(" %lu", (unsigned long)(pDevCtx->pLineCtx[line])); |
| } |
| VpSysDebugPrintf(" }\n"); |
| status = VP_CALL_DEV_FUNC(ObjectDump, (VP_NULL, pDevCtx)); |
| } |
| #endif /* (VP_CC_DEBUG_SELECT & VP_DBG_INFO) */ |
| |
| } |
| |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_API_FUNC) |
| if (singleLine) { |
| VP_API_EXIT(VpLineCtxType, pLineCtx, "ObjectDump", status); |
| } else { |
| VP_API_EXIT(VpDevCtxType, pDevCtx, "ObjectDump", status); |
| } |
| #endif |
| |
| return status; |
| } /* VpObjectDump() */ |
| |
| #ifdef VP_DEBUG |
| |
| static bool |
| DeviceDebugEnabled( |
| uint32 debugSelectMask, |
| char *msgTypeStr, |
| VpDeviceIdType deviceId) |
| { |
| if (!debugSelectMask) |
| return FALSE; |
| |
| /* Display the message type and device ID. */ |
| VpSysDebugPrintf(msgTypeStr); |
| VP_PRINT_DEVICE_ID(deviceId); |
| VpSysDebugPrintf(": "); |
| return TRUE; |
| } |
| |
| static bool |
| LineDebugEnabled( |
| uint32 debugSelectMask, |
| char *msgTypeStr, |
| VpLineIdType lineId) |
| { |
| if (!debugSelectMask) |
| return FALSE; |
| |
| /* Display the message type and line ID. */ |
| VpSysDebugPrintf(msgTypeStr); |
| VP_PRINT_LINE_ID((lineId)); |
| VpSysDebugPrintf(": "); |
| return TRUE; |
| } |
| |
| /* This function is a "fallback" for the case where an object was expected, but |
| VP_NULL was passed. */ |
| static bool |
| NULLDebugEnabled( |
| uint32 msgType, |
| char *errorMsg, |
| char *msgTypeStr) |
| { |
| if (msgType & vpDebugSelectMask) { |
| VpSysDebugPrintf(color_fg(red) "%s", errorMsg); |
| } |
| return VpDebugEnabled_None(msgType, msgTypeStr, VP_NULL); |
| } |
| |
| #if defined (VP_CC_VCP2_SERIES) |
| bool |
| VpDebugEnabled_VpVcp2DeviceObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpVcp2DeviceObjectType *pDevObj) |
| { |
| uint32 debugSelectMask; |
| VpDeviceIdType deviceId; |
| |
| if (pDevObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pDevObj->debugSelectMask; |
| deviceId = pDevObj->deviceId; |
| VP_ASSERT(pDevObj != VP_NULL); |
| return DeviceDebugEnabled(msgType & debugSelectMask, msgTypeStr, deviceId); |
| } |
| |
| bool |
| VpDebugEnabled_VpVcp2LineObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpVcp2LineObjectType *pLineObj) |
| { |
| uint32 debugSelectMask; |
| VpLineIdType lineId; |
| |
| if (pLineObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pLineObj->debugSelectMask; |
| lineId = pLineObj->lineId; |
| VP_ASSERT(pLineObj != VP_NULL); |
| return LineDebugEnabled(msgType & debugSelectMask, msgTypeStr, lineId); |
| } |
| #endif /* VP_CC_VCP2_SERIES*/ |
| |
| #if defined (VP_CC_MELT_SERIES) |
| bool |
| VpDebugEnabled_VpMeltDeviceObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpMeltDeviceObjectType *pDevObj) |
| { |
| uint32 debugSelectMask; |
| VpDeviceIdType deviceId; |
| |
| if (pDevObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pDevObj->debugSelectMask; |
| deviceId = pDevObj->deviceId; |
| VP_ASSERT(pDevObj != VP_NULL); |
| return DeviceDebugEnabled(msgType & debugSelectMask, msgTypeStr, deviceId); |
| } |
| |
| bool |
| VpDebugEnabled_VpMeltLineObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpMeltLineObjectType *pLineObj) |
| { |
| uint32 debugSelectMask; |
| VpLineIdType lineId; |
| |
| if (pLineObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pLineObj->debugSelectMask; |
| lineId = pLineObj->lineId; |
| VP_ASSERT(pLineObj != VP_NULL); |
| return LineDebugEnabled(msgType & debugSelectMask, msgTypeStr, lineId); |
| } |
| #endif /* VP_CC_MELT_SERIES */ |
| |
| #ifdef VP_CC_890_SERIES |
| bool |
| VpDebugEnabled_Vp890DeviceObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp890DeviceObjectType *pDevObj) |
| { |
| uint32 debugSelectMask; |
| VpDeviceIdType deviceId; |
| |
| if (pDevObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pDevObj->debugSelectMask; |
| deviceId = pDevObj->deviceId; |
| VP_ASSERT(pDevObj != VP_NULL); |
| return DeviceDebugEnabled(msgType & debugSelectMask, msgTypeStr, deviceId); |
| } |
| |
| bool |
| VpDebugEnabled_Vp890LineObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp890LineObjectType *pLineObj) |
| { |
| uint32 debugSelectMask; |
| VpLineIdType lineId; |
| |
| if (pLineObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pLineObj->debugSelectMask; |
| lineId = pLineObj->lineId; |
| VP_ASSERT(pLineObj != VP_NULL); |
| return LineDebugEnabled(msgType & debugSelectMask, msgTypeStr, lineId); |
| } |
| #endif /* VP_CC_890_SERIES */ |
| |
| #ifdef VP_CC_880_SERIES |
| bool |
| VpDebugEnabled_Vp880DeviceObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp880DeviceObjectType *pDevObj) |
| { |
| uint32 debugSelectMask; |
| VpDeviceIdType deviceId; |
| |
| if (pDevObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pDevObj->debugSelectMask; |
| deviceId = pDevObj->deviceId; |
| VP_ASSERT(pDevObj != VP_NULL); |
| return DeviceDebugEnabled(msgType & debugSelectMask, msgTypeStr, deviceId); |
| } |
| |
| bool |
| VpDebugEnabled_Vp880LineObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp880LineObjectType *pLineObj) |
| { |
| uint32 debugSelectMask; |
| VpLineIdType lineId; |
| |
| if (pLineObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pLineObj->debugSelectMask; |
| lineId = pLineObj->lineId; |
| VP_ASSERT(pLineObj != VP_NULL); |
| return LineDebugEnabled(msgType & debugSelectMask, msgTypeStr, lineId); |
| } |
| #endif /* VP_CC_880_SERIES */ |
| |
| #ifdef VP_CC_580_SERIES |
| bool |
| VpDebugEnabled_Vp580DeviceObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp580DeviceObjectType *pDevObj) |
| { |
| uint32 debugSelectMask; |
| VpDeviceIdType deviceId; |
| |
| if (pDevObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pDevObj->debugSelectMask; |
| deviceId = pDevObj->deviceId; |
| VP_ASSERT(pDevObj != VP_NULL); |
| return DeviceDebugEnabled(msgType & debugSelectMask, msgTypeStr, deviceId); |
| } |
| |
| bool |
| VpDebugEnabled_Vp580LineObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp580LineObjectType *pLineObj) |
| { |
| uint32 debugSelectMask; |
| VpLineIdType lineId; |
| |
| if (pLineObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pLineObj->debugSelectMask; |
| lineId = pLineObj->lineId; |
| VP_ASSERT(pLineObj != VP_NULL); |
| return LineDebugEnabled(msgType & debugSelectMask, msgTypeStr, lineId); |
| } |
| #endif /* VP_CC_580_SERIES */ |
| |
| #ifdef VP_CC_792_SERIES |
| static bool |
| VpDebugEnabled_Vp792DeviceObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp792DeviceObjectType *pDevObj) |
| { |
| uint32 debugSelectMask; |
| VpDeviceIdType deviceId; |
| |
| if (pDevObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pDevObj->options.debugSelect; |
| deviceId = pDevObj->deviceId; |
| VP_ASSERT(pDevObj != VP_NULL); |
| return DeviceDebugEnabled(msgType & debugSelectMask, msgTypeStr, deviceId); |
| } |
| |
| static bool |
| VpDebugEnabled_Vp792LineObjectType( |
| uint32 msgType, |
| char *msgTypeStr, |
| Vp792LineObjectType *pLineObj) |
| { |
| uint32 debugSelectMask; |
| VpLineIdType lineId; |
| |
| if (pLineObj == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineObj == VP_NULL) ", msgTypeStr); |
| } |
| |
| debugSelectMask = pLineObj->options.debugSelect; |
| lineId = pLineObj->lineId; |
| VP_ASSERT(pLineObj != VP_NULL); |
| return LineDebugEnabled(msgType & debugSelectMask, msgTypeStr, lineId); |
| } |
| #endif /* VP_CC_792_SERIES */ |
| |
| bool |
| VpDebugEnabled_VpDeviceIdType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpDeviceIdType *pDeviceId) |
| { |
| VP_ASSERT(pDeviceId != VP_NULL); |
| return DeviceDebugEnabled(msgType & vpDebugSelectMask, msgTypeStr, *pDeviceId); |
| } |
| |
| bool |
| VpDebugEnabled_VpLineIdType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpLineIdType *pLineId) |
| { |
| VP_ASSERT(pLineId != VP_NULL); |
| return LineDebugEnabled(msgType & vpDebugSelectMask, msgTypeStr, *pLineId); |
| } |
| |
| |
| /* |
| * This function returns TRUE if the specified message type is enabled for the specified device. |
| * As a side effect, it displays the message type and device ID. |
| */ |
| bool |
| VpDebugEnabled_VpDevCtxType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpDevCtxType *pDevCtx) |
| { |
| if (pDevCtx == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pDevCtx == VP_NULL) ", msgTypeStr); |
| } |
| |
| switch (pDevCtx->deviceType) { |
| |
| #ifdef VP_CC_VCP2_SERIES |
| case VP_DEV_VCP2_SERIES: |
| return VpDebugEnabled_VpVcp2DeviceObjectType(msgType, msgTypeStr, pDevCtx->pDevObj); |
| #endif |
| #ifdef VP_CC_MELT_SERIES |
| case VP_DEV_MELT_SERIES: |
| return VpDebugEnabled_VpMeltDeviceObjectType(msgType, msgTypeStr, pDevCtx->pDevObj); |
| #endif |
| #ifdef VP_CC_890_SERIES |
| case VP_DEV_890_SERIES: |
| return VpDebugEnabled_Vp890DeviceObjectType(msgType, msgTypeStr, pDevCtx->pDevObj); |
| #endif |
| #ifdef VP_CC_880_SERIES |
| case VP_DEV_880_SERIES: |
| return VpDebugEnabled_Vp880DeviceObjectType(msgType, msgTypeStr, pDevCtx->pDevObj); |
| #endif |
| #ifdef VP_CC_792_SERIES |
| case VP_DEV_792_SERIES: |
| return VpDebugEnabled_Vp792DeviceObjectType(msgType, msgTypeStr, pDevCtx->pDevObj); |
| #endif |
| default: |
| /* For other device types (for which we are still using VP_DOUT) |
| use the global debug select mask. */ |
| return VpDebugEnabled_None(msgType, msgTypeStr, (void *)0); |
| } |
| } |
| |
| /* |
| * This function returns TRUE if the specified message type is enabled for the specified line. |
| * As a side effect, it displays the message type and line ID. |
| */ |
| bool |
| VpDebugEnabled_VpLineCtxType( |
| uint32 msgType, |
| char *msgTypeStr, |
| VpLineCtxType *pLineCtx) |
| { |
| if (pLineCtx == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineCtx == VP_NULL) ", msgTypeStr); |
| } |
| |
| if (pLineCtx->pDevCtx == VP_NULL) { |
| return NULLDebugEnabled(msgType, "(pLineCtx->pDevCtx == VP_NULL) ", msgTypeStr); |
| } |
| |
| switch (pLineCtx->pDevCtx->deviceType) { |
| |
| #ifdef VP_CC_VCP2_SERIES |
| case VP_DEV_VCP2_SERIES: |
| return VpDebugEnabled_VpVcp2LineObjectType(msgType, msgTypeStr, pLineCtx->pLineObj); |
| #endif |
| #ifdef VP_CC_MELT_SERIES |
| case VP_DEV_MELT_SERIES: |
| return VpDebugEnabled_VpMeltLineObjectType(msgType, msgTypeStr, pLineCtx->pLineObj); |
| #endif |
| #ifdef VP_CC_890_SERIES |
| case VP_DEV_890_SERIES: |
| return VpDebugEnabled_Vp890LineObjectType(msgType, msgTypeStr, pLineCtx->pLineObj); |
| #endif |
| #ifdef VP_CC_880_SERIES |
| case VP_DEV_880_SERIES: |
| return VpDebugEnabled_Vp880LineObjectType(msgType, msgTypeStr, pLineCtx->pLineObj); |
| #endif |
| #ifdef VP_CC_580_SERIES |
| case VP_DEV_580_SERIES: |
| return VpDebugEnabled_Vp580LineObjectType(msgType, msgTypeStr, pLineCtx->pLineObj); |
| #endif |
| #ifdef VP_CC_792_SERIES |
| case VP_DEV_792_SERIES: |
| return VpDebugEnabled_Vp792LineObjectType(msgType, msgTypeStr, pLineCtx->pLineObj); |
| #endif |
| default: |
| /* For other device types (for which we are still using VP_DOUT) |
| use the global debug select mask. */ |
| return VpDebugEnabled_None(msgType, msgTypeStr, (void *)0); |
| } |
| } |
| |
| bool |
| VpDebugEnabled_None( |
| uint32 msgType, |
| char *msgTypeStr, |
| void *nothing) |
| { |
| if (!(msgType & vpDebugSelectMask)) |
| return FALSE; |
| |
| VpSysDebugPrintf(msgTypeStr); |
| VpSysDebugPrintf(": "); |
| return TRUE; |
| } |
| |
| #ifdef VP_DEBUG |
| static const char * |
| VpGetEnumString( |
| const char *strTable[], |
| int numStrings, |
| int value) |
| { |
| static char buf[7] = "0x0000"; /* not reentrant */ |
| static const char hex[16] = "0123456789ABCD"; |
| |
| if ((value < 0) || (value >= numStrings) || (strTable[value] == VP_NULL)) { |
| |
| /* Can't find a string for the requested value. */ |
| buf[5] = hex[value & 0xF]; |
| value >>= 4; |
| buf[4] = hex[value & 0xF]; |
| value >>= 4; |
| buf[3] = hex[value & 0xF]; |
| value >>= 4; |
| buf[2] = hex[value & 0xF]; |
| return buf; |
| } |
| |
| /* Found the requested string in the table. */ |
| return strTable[value]; |
| } |
| #endif /* VP_DEBUG */ |
| |
| #if (VP_CC_DEBUG_SELECT & (VP_DBG_API_FUNC | VP_DBG_EVENT)) |
| const char * |
| VpGetString_VpStatusType( |
| VpStatusType status) |
| { |
| static const char *strTable[VP_STATUS_NUM_TYPES] = { |
| "SUCCESS", |
| "FAILURE", |
| "FUNC_NOT_SUPPORTED", |
| "INVALID_ARG", |
| "MAILBOX_BUSY", |
| "ERR_VTD_CODE", |
| "OPTION_NOT_SUPPORTED", |
| "ERR_VERIFY", |
| "DEVICE_BUSY", |
| "MAILBOX_EMPTY", |
| "ERR_MAILBOX_DATA", |
| "ERR_HBI", |
| "ERR_IMAGE", |
| "IN_CRTCL_SECTN", |
| "DEV_NOT_INITIALIZED", |
| "ERR_PROFILE", |
| "16", |
| "CUSTOM_TERM_NOT_CFG", |
| "DEDICATED_PINS", |
| "INVALID_LINE", |
| "LINE_NOT_CONFIG", |
| "INPUT_PARAM_OOR" |
| }; |
| |
| /* Make sure we update the above table when we update VpStatusType: */ |
| VP_ASSERT(VP_STATUS_NUM_TYPES == 22); |
| |
| return VpGetEnumString(strTable, VP_STATUS_NUM_TYPES, (int)status); |
| } |
| #endif /* (VP_CC_DEBUG_SELECT & (VP_DBG_API_FUNC | VP_DBG_EVENT)) */ |
| |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_API_FUNC) |
| const char * |
| VpGetString_VpOptionIdType( |
| VpOptionIdType optionId) |
| { |
| static const char *strTable[VP_NUM_OPTION_IDS] = { |
| "VP_DEVICE_OPTION_ID_PULSE", /* only differs by prefix */ |
| "CRITICAL_FLT", |
| "ZERO_CROSS", |
| "RAMP2STBY", |
| "PULSE_MODE", |
| "TIMESLOT", |
| "CODEC", |
| "PCM_HWY", |
| "LOOPBACK", |
| "LINE_STATE", |
| "EVENT_MASK", |
| VP_NULL, |
| "RING_CNTRL", |
| VP_NULL, |
| "DTMF_MODE", |
| "DEVICE_IO", |
| VP_NULL, |
| "PCM_TXRX_CNTRL", |
| "PULSE2", |
| "LINE_IO_CFG", |
| "DEV_IO_CFG", |
| "DTMF_SPEC", |
| "PARK_MODE", |
| "DCFEED_SLOPE", |
| "SWITCHER_CTRL", |
| "HOOK_DETECT_MODE", |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| VP_NULL, |
| "VP_OPTION_ID_PULSE", /* only differs by prefix */ |
| "DEBUG_SELECT", |
| "ABS_GAIN", |
| "PCM_SIG_CTL", |
| "LINESTATE_CTL_MODE" |
| }; |
| |
| /* Make sure we update the above table when we update VpOptionIdType: */ |
| VP_ASSERT(VP_NUM_OPTION_IDS == 0x29); |
| |
| return VpGetEnumString(strTable, VP_NUM_OPTION_IDS, (int)optionId); |
| } |
| #endif /* (VP_CC_DEBUG_SELECT & VP_DBG_API_FUNC) */ |
| |
| #ifdef VP_DEBUG |
| const char * |
| VpGetString_VpProfileType( |
| VpProfileType profType) |
| { |
| static const char *strTable[VP_NUM_PROFILE_TYPES] = { |
| "DEVICE", |
| "AC", |
| "DC", |
| "RING", |
| "RINGCAD", |
| "TONE", |
| "METER", |
| "CID", |
| "TONECAD", |
| "FXO_CONFIG", |
| "CUSTOM_TERM", |
| "CAL" |
| }; |
| |
| /* Make sure we update the above table when we update VpProfileType: */ |
| VP_ASSERT(VP_NUM_PROFILE_TYPES == 12); |
| |
| return VpGetEnumString(strTable, VP_NUM_PROFILE_TYPES, (int)profType); |
| } |
| #endif /* VP_DEBUG */ |
| |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_EVENT) |
| void VpDisplayEvent( |
| VpEventType *pEvent) |
| { |
| typedef struct { |
| VpEventCategoryType category; |
| uint16 id; |
| char *nameStr; |
| bool hasEventData; |
| bool hasParmHandle; |
| } VpEventInfo; |
| |
| static const VpEventInfo eventInfoTable[] = { |
| { VP_EVCAT_FAULT, VP_DEV_EVID_BAT_FLT, "BAT_FLT", TRUE, FALSE }, |
| { VP_EVCAT_FAULT, VP_DEV_EVID_CLK_FLT, "CLK_FLT", TRUE, FALSE }, |
| { VP_EVCAT_FAULT, VP_LINE_EVID_THERM_FLT, "THERM_FLT", TRUE, FALSE }, |
| { VP_EVCAT_FAULT, VP_LINE_EVID_DC_FLT, "DC_FLT", TRUE, FALSE }, |
| { VP_EVCAT_FAULT, VP_LINE_EVID_AC_FLT, "AC_FLT", TRUE, FALSE }, |
| { VP_EVCAT_FAULT, VP_LINE_EVID_SYNC_FLT, "SYNC_FLT", FALSE, FALSE }, |
| { VP_EVCAT_FAULT, VP_LINE_EVID_RES_LEAK_FLT, "RES_LEAK_FLT", TRUE, TRUE }, |
| { VP_EVCAT_FAULT, VP_LINE_EVID_SEAL_CUR_FLT, "SEAL_CURRENT_FLT", TRUE, FALSE }, |
| { VP_EVCAT_FAULT, VP_DEV_EVID_WDT_FLT, "WDT_FLT", FALSE, FALSE }, |
| { VP_EVCAT_FAULT, VP_DEV_EVID_EVQ_OFL_FLT, "EVQ_OFL_FLT", FALSE, FALSE }, |
| { VP_EVCAT_FAULT, VP_DEV_EVID_SYSTEM_FLT, "SYSTEM_FLT", TRUE, FALSE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_HOOK_OFF, "HOOK_OFF", FALSE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_HOOK_ON, "HOOK_ON", FALSE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_GKEY_DET, "GKEY_DET", FALSE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_GKEY_REL, "GKEY_REL", FALSE, FALSE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_FLASH, "FLASH", FALSE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_STARTPULSE, "STARTPULSE", FALSE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_DTMF_DIG, "DTMF_DIG", TRUE, FALSE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_PULSE_DIG, "PULSE_DIG", TRUE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_MTONE, "MTONE", FALSE, FALSE }, |
| { VP_EVCAT_SIGNALING, VP_DEV_EVID_TS_ROLLOVER, "TS_ROLLOVER", FALSE, FALSE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_US_TONE_DETECT, "US_TONE_DETECT", TRUE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_DS_TONE_DETECT, "DS_TONE_DETECT", TRUE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_DEV_EVID_SEQUENCER, "SEQUENCER", TRUE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_BREAK_MAX, "BREAK_MAX", TRUE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_EXTD_FLASH, "EXTD_FLASH", FALSE, TRUE }, |
| { VP_EVCAT_SIGNALING, VP_LINE_EVID_HOOK_PREQUAL, "HOOK_PREQUAL", TRUE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_DEV_EVID_BOOT_CMP, "BOOT_CMP", TRUE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_LLCMD_TX_CMP, "LLCMD_TX_CMP", FALSE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_LLCMD_RX_CMP, "LLCMD_RX_CMP", FALSE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_DEV_EVID_DNSTR_MBOX, "DNSTR_MBOX", FALSE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_RD_OPTION, "RD_OPTION", TRUE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_RD_LOOP, "RD_LOOP", FALSE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_EVID_CAL_CMP, "CAL_CMP", FALSE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_EVID_CAL_BUSY, "CAL_BUSY", FALSE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_GAIN_CMP, "GAIN_CMP", FALSE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_DEV_EVID_DEV_INIT_CMP, "DEV_INIT_CMP", TRUE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_LINE_INIT_CMP, "LINE_INIT_CMP", FALSE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_DEV_EVID_IO_ACCESS_CMP, "IO_ACCESS_CMP", TRUE, FALSE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_LINE_IO_RD_CMP, "LINE_IO_RD_CMP", FALSE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_LINE_IO_WR_CMP, "LINE_IO_WR_CMP", FALSE, TRUE }, |
| { VP_EVCAT_RESPONSE, VP_LINE_EVID_SLAC_INIT_CMP, "SLAC_INIT_CMP", TRUE, FALSE }, |
| { VP_EVCAT_TEST, VP_LINE_EVID_TEST_CMP, "TEST_CMP", FALSE, TRUE }, |
| { VP_EVCAT_TEST, VP_LINE_EVID_DTONE_DET, "DTONE_DET", TRUE, FALSE }, |
| { VP_EVCAT_TEST, VP_LINE_EVID_DTONE_LOSS, "DTONE_LOSS", TRUE, FALSE }, |
| { VP_EVCAT_TEST, VP_DEV_EVID_STEST_CMP, "STEST_CMP", TRUE, FALSE }, |
| { VP_EVCAT_TEST, VP_DEV_EVID_CHKSUM, "CHKSUM", FALSE, TRUE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_MTR_CMP, "MTR_CMP", FALSE, FALSE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_MTR_ABORT, "MTR_ABORT", TRUE, FALSE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_CID_DATA, "CID_DATA", TRUE, FALSE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_RING_CAD, "RING_CAD", TRUE, FALSE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_SIGNAL_CMP, "SIGNAL_CMP", TRUE, TRUE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_MTR_CAD, "MTR_CAD", TRUE, FALSE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_TONE_CAD, "TONE_CAD", FALSE, FALSE }, |
| { VP_EVCAT_PROCESS, VP_LINE_EVID_MTR_ROLLOVER, "MTR_ROLLOVER", TRUE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_RING_ON, "RING_ON", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_LIU, "LIU", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_LNIU, "LNIU", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_FEED_DIS, "FEED_DIS", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_FEED_EN, "FEED_EN", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_DISCONNECT, "DISCONNECT", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_RECONNECT, "RECONNECT", FALSE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_POLREV, "POLREV", TRUE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_POH, "POH", TRUE, TRUE }, |
| { VP_EVCAT_FXO, VP_LINE_EVID_PNOH, "PNOH", TRUE, TRUE }, |
| { (VpEventCategoryType)0, 0, "", TRUE, TRUE } |
| }; |
| const VpEventInfo *pEventInfo = eventInfoTable; |
| char eventDataStr[16] = ""; |
| char parmHandleStr[16] = ""; |
| char eventNameStr[32] = ""; |
| bool lineSpecific = (pEvent->pLineCtx != VP_NULL); |
| |
| if (pEvent->status != VP_STATUS_SUCCESS) { |
| VP_DOUT_(EVENT, VP_DBG_EVENT_COLOR, VpDevCtxType, pEvent->pDevCtx, ("status = %s", VpGetString_VpStatusType(pEvent->status))); |
| return; |
| } |
| |
| /* Find the event in the table. */ |
| while ( |
| (pEventInfo->id != 0) && |
| ((pEventInfo->category != pEvent->eventCategory) || (pEventInfo->id != pEvent->eventId)) |
| ) { |
| pEventInfo++; |
| } |
| |
| /* Build display strings. */ |
| if (pEventInfo->id == 0) { |
| sprintf(eventNameStr, "cat=0x%4.4X id=0x%4.4X", pEvent->eventCategory, pEvent->eventId); |
| } else { |
| sprintf(eventNameStr, "id=%s", pEventInfo->nameStr); |
| } |
| if (pEventInfo->hasEventData) { |
| sprintf(eventDataStr, " data=0x%4.4X", pEvent->eventData); |
| } |
| if (pEventInfo->hasParmHandle) { |
| sprintf(parmHandleStr, " parm=0x%4.4X", pEvent->parmHandle); |
| } |
| |
| #define PRINTF_VPEVENT \ |
| ("%s%s%s%s", eventNameStr, eventDataStr, parmHandleStr, (pEvent->hasResults ? " +results" : "")) |
| |
| if (lineSpecific) { |
| VP_DOUT_(EVENT, VP_DBG_EVENT_COLOR, VpLineCtxType, pEvent->pLineCtx, PRINTF_VPEVENT); |
| } else { |
| VP_DOUT_(EVENT, VP_DBG_EVENT_COLOR, VpDevCtxType, pEvent->pDevCtx, PRINTF_VPEVENT); |
| } |
| } |
| |
| void VpDisplayResults( |
| VpEventType *pEvent, |
| void *pResult) |
| { |
| char outbuf[800]; |
| char *pOut = outbuf + sprintf(outbuf, "results={"); |
| bool lineSpecific = (pEvent->pLineCtx != VP_NULL); |
| VpEventCategoryType cat = pEvent->eventCategory; |
| uint16 id = pEvent->eventId; |
| |
| if (!pEvent->hasResults) { |
| return; |
| } |
| |
| if ( |
| ((cat == VP_EVCAT_RESPONSE) && (id == VP_DEV_EVID_BOOT_CMP)) || |
| ((cat == VP_EVCAT_TEST) && (id == VP_DEV_EVID_CHKSUM)) |
| ) { |
| VpChkSumType *pChkSum = (VpChkSumType *)pResult; |
| pOut += sprintf(pOut, "loadChecksum=0x%8.8X ", (unsigned)pChkSum->loadChecksum); |
| pOut += sprintf(pOut, "vInfo={"); |
| pOut += sprintf(pOut, "vtdRevCode=0x%4.4X ", pChkSum->vInfo.vtdRevCode); |
| pOut += sprintf(pOut, "swProductId=0x%2.2X ", pChkSum->vInfo.swProductId); |
| pOut += sprintf(pOut, "swVerMajor=0x%2.2X ", pChkSum->vInfo.swVerMajor); |
| pOut += sprintf(pOut, "swVerMinor=0x%2.2X}", pChkSum->vInfo.swVerMinor); |
| } else if ((cat == VP_EVCAT_TEST) && (id == VP_LINE_EVID_TEST_CMP)) { |
| /* To do */ |
| pOut += sprintf(pOut, "(test result not displayed)"); |
| } else if (cat == VP_EVCAT_RESPONSE) { |
| switch (pEvent->eventId) { |
| case VP_LINE_EVID_LLCMD_RX_CMP: { |
| uint8 *pData = (uint8 *)pResult; |
| uint16 bytes = pEvent->eventData; |
| while (bytes--) { |
| pOut += sprintf(pOut, " %2.2X", *(pData++)); |
| } |
| break; |
| } |
| case VP_LINE_EVID_RD_OPTION: |
| /* To do */ |
| pOut += sprintf(pOut, "(option value not displayed)"); |
| break; |
| case VP_LINE_EVID_RD_LOOP: { |
| VpLoopCondResultsType *pLoopCond = (VpLoopCondResultsType *)pResult; |
| pOut += sprintf(pOut, "rloop=%d ", pLoopCond->rloop); |
| pOut += sprintf(pOut, "ilg=%d ", pLoopCond->ilg); |
| pOut += sprintf(pOut, "imt=%d ", pLoopCond->imt); |
| pOut += sprintf(pOut, "vbat1=%d ", pLoopCond->vbat1); |
| pOut += sprintf(pOut, "vsab=%d ", pLoopCond->vsab); |
| pOut += sprintf(pOut, "vbat2=%d ", pLoopCond->vbat2); |
| pOut += sprintf(pOut, "mspl=%d ", pLoopCond->mspl); |
| pOut += sprintf(pOut, "vbat3=%d ", pLoopCond->vbat3); |
| pOut += sprintf(pOut, "selectedBat=%d ", pLoopCond->selectedBat); |
| pOut += sprintf(pOut, "dcFeedReg=%d", pLoopCond->dcFeedReg); |
| break; |
| } |
| case VP_LINE_EVID_GAIN_CMP: { |
| VpRelGainResultsType *pRelGain = (VpRelGainResultsType *)pResult; |
| pOut += sprintf(pOut, "gResult=%d ", pRelGain->gResult); |
| pOut += sprintf(pOut, "gxValue=%4.4X ", pRelGain->gxValue); |
| pOut += sprintf(pOut, "grValue=%4.4X", pRelGain->grValue); |
| break; |
| } |
| case VP_DEV_EVID_IO_ACCESS_CMP: |
| /* We can't distinguish between VpDeviceIoAccessDataType and |
| VpDeviceIoAccessExtType here. */ |
| pOut += sprintf(pOut, "(cannot display result)"); |
| break; |
| case VP_LINE_EVID_LINE_IO_RD_CMP: { |
| VpLineIoAccessType *pLineIoAccess = (VpLineIoAccessType *)pResult; |
| pOut += sprintf(pOut, "direction=%d ", pLineIoAccess->direction); |
| pOut += sprintf(pOut, "ioBits={"); |
| pOut += sprintf(pOut, "mask=%2.2X ", pLineIoAccess->ioBits.mask); |
| pOut += sprintf(pOut, "data=%2.2X}", pLineIoAccess->ioBits.data); |
| break; |
| } |
| case VP_LINE_EVID_QUERY_CMP: { |
| VpQueryResultsType *pQueryResults = (VpQueryResultsType *)pResult; |
| int i; |
| switch (pEvent->eventData) { |
| case VP_QUERY_ID_TEMPERATURE: |
| pOut += sprintf(pOut, "temp=%d", pQueryResults->temp); |
| break; |
| case VP_QUERY_ID_METER_COUNT: |
| pOut += sprintf(pOut, "meterCount=%u", pQueryResults->meterCount); |
| break; |
| case VP_QUERY_ID_LOOP_RES: |
| pOut += sprintf(pOut, "rloop=%u", pQueryResults->rloop); |
| break; |
| case VP_QUERY_ID_SEAL_CUR: |
| pOut += sprintf(pOut, "sealCur={"); |
| pOut += sprintf(pOut, "sealApplyTime=%u ", pQueryResults->sealCur.sealApplyTime); |
| pOut += sprintf(pOut, "sealCycleTime=%u ", pQueryResults->sealCur.sealCycleTime); |
| pOut += sprintf(pOut, "maxCurrent=%u ", pQueryResults->sealCur.maxCurrent); |
| pOut += sprintf(pOut, "minCurrent=%u ", pQueryResults->sealCur.minCurrent); |
| pOut += sprintf(pOut, "sealMaskArray[]={"); |
| for (i = 0; i < VP_SEAL_CURRENT_ARRAY_SIZE; i++) { |
| pOut += sprintf(pOut, "0x%4.4X ", pQueryResults->sealCur.sealMaskArray[i]); |
| } |
| pOut += sprintf(pOut, "} }"); |
| break; |
| default: |
| /* Unknown Query ID. */ |
| VP_ERROR(VpDevCtxType, pEvent->pDevCtx, ("Unknown query ID %d", pEvent->eventData)); |
| return; |
| } |
| break; |
| } |
| default: |
| VP_ERROR(VpDevCtxType, pEvent->pDevCtx, ("Unknown event results type (eventId=0x%4.4X)", pEvent->eventId)); |
| return; |
| } |
| } |
| |
| sprintf(pOut, "}"); |
| if (lineSpecific) { |
| VP_DOUT_(EVENT, VP_DBG_EVENT_COLOR, VpLineCtxType, pEvent->pLineCtx, ("%s", outbuf)); |
| } else { |
| VP_DOUT_(EVENT, VP_DBG_EVENT_COLOR, VpDevCtxType, pEvent->pDevCtx, ("%s", outbuf)); |
| } |
| } |
| |
| #endif /* (VP_CC_DEBUG_SELECT & VP_DBG_EVENT) */ |
| |
| #if ((VP_CC_DEBUG_SELECT & VP_DBG_HAL) && (defined(VP_CC_VCP2_SERIES) || defined(VP_CC_MELT_SERIES) || \ |
| defined(VP_CC_VCP_SERIES) || defined(VP_CC_792_SERIES))) |
| void |
| VpDisplayHbiAccess( |
| VpDeviceType deviceType, |
| VpDeviceIdType deviceId, |
| unsigned bufLen, |
| uint16 *buf) |
| { |
| VP_HAL(VpDeviceIdType, &deviceId, ("%u-word opaque HBI block {", bufLen)); |
| |
| while (bufLen > 0) { |
| uint16 cmd = *buf++; |
| unsigned dataLength = VpDisplayHbiCmd(deviceType, deviceId, cmd); |
| bufLen--; |
| if (dataLength > 0) { |
| if (dataLength > bufLen) { |
| VP_ERROR(VpDeviceIdType, &deviceId, ("Not enough data for HAL Access!")); |
| dataLength = bufLen; |
| } |
| VpDisplayHbiData(deviceId, dataLength, buf); |
| buf += dataLength; |
| bufLen -= dataLength; |
| } |
| } |
| |
| VP_HAL(VpDeviceIdType, &deviceId, ("} end of block")); |
| } |
| |
| #define HBI_WORDS_PER_LINE 8 |
| #define HBI_WORD_FILLER "---- " |
| #define HBI_COMMAND_LINE_FILLER " = " |
| |
| unsigned |
| VpDisplayHbiCmd( |
| VpDeviceType deviceType, |
| VpDeviceIdType deviceId, |
| uint16 cmd) |
| { |
| char output[128]; |
| unsigned dataLength = 0; |
| |
| switch (deviceType) { |
| |
| #if (defined(VP_CC_VCP2_SERIES) || defined(VP_CC_MELT_SERIES) || defined(VP_CC_VCP_SERIES)) |
| case VP_DEV_VCP_SERIES: |
| case VP_DEV_VCP2_SERIES: |
| case VP_DEV_MELT_SERIES: |
| if (cmd == 0xFFFF) { |
| sprintf(output, "%4.4X%s%s", (int)cmd, HBI_COMMAND_LINE_FILLER, "No Op"); |
| } else if ((cmd & 0xFF00) == 0xFE00) { |
| sprintf(output, "%4.4X%s%s 0x%2.2X", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Select Page", (int)(cmd & 0xFF)); |
| } else if ((cmd & 0xFF00) == (0xFD00)) { |
| sprintf(output, "%4.4X%s%s 0x%2.2X", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Config Interface", (int)(cmd & 0xFF)); |
| } else if ((cmd & 0xFE00) == (0xFA00)) { |
| dataLength = (cmd & 0xFF) + 1; |
| sprintf(output, "%4.4X%s%s (%u word%s)", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Continue Paged Access", dataLength, (dataLength > 1 ? "s" : "")); |
| } else if ((cmd & 0xFE00) == (0xF800)) { |
| dataLength = (cmd & 0xFF) + 1; |
| sprintf(output, "%4.4X%s%s (%u word%s)", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Start Paged Access", dataLength, (dataLength > 1 ? "s" : "")); |
| } else { |
| unsigned offset = (cmd & 0x7F00) >> 8; |
| bool direct = ((cmd & 0x8000) != 0); |
| bool write = ((cmd & 0x0080) != 0); |
| dataLength = (cmd & 0x007F) + 1; |
| sprintf(output, "%4.4X%s%s Offset %s (%u word%s at offset 0x%2.2X)", (int)cmd, |
| HBI_COMMAND_LINE_FILLER, (direct ? "Direct" : "Paged"), |
| (write ? "Write" : "Read"), dataLength, (dataLength > 1 ? "s" : ""), |
| offset); |
| } |
| break; |
| #endif /* (defined(VP_CC_VCP2_SERIES) || defined(VP_CC_VCP_SERIES) || defined(VP_CC_MELT_SERIES)) */ |
| |
| #ifdef VP_CC_792_SERIES |
| case VP_DEV_792_SERIES: |
| if (cmd == 0xFFFF) { |
| sprintf(output, "%4.4X%s %s", (int)cmd, HBI_COMMAND_LINE_FILLER, "No Op"); |
| } else if (cmd == 0xF701) { |
| dataLength = 2; |
| sprintf(output, "%4.4X%s %s", (int)cmd, HBI_COMMAND_LINE_FILLER, "Read Shared Interrupt Regs"); |
| } else if ((cmd & 0xFF00) == (0xFD00)) { |
| sprintf(output, "%4.4X%s %s 0x%2.2X", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Config Interface", (int)(cmd & 0xFF)); |
| } else if ((cmd & 0xFF00) == 0xFE00) { |
| if ((cmd & 0x00FF) == 0x00FF) { |
| sprintf(output, "%4.4X%s %s", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Code Load Page Broadcast"); |
| } else if ((cmd & 0x008F) == 0x0080) { |
| unsigned slacId = (cmd & 0x0070) >> 4; |
| sprintf(output, "%4.4X%s(slac %u) %s", (int)cmd, HBI_COMMAND_LINE_FILLER, slacId, |
| "Select Code Load Page"); |
| } else if ((cmd & 0x0080) == 0x0000) { |
| unsigned slacId = (cmd & 0x0070) >> 4; |
| unsigned page = cmd & 0x000F; |
| sprintf(output, "%4.4X%s(slac %u) %s %u", (int)cmd, HBI_COMMAND_LINE_FILLER, slacId, |
| "Select Page", page); |
| } else { |
| sprintf(output, "%4.4X%s%s", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "INVALID COMMAND WORD!"); |
| } |
| } else if ((cmd & 0xFF00) == (0xFD00)) { |
| sprintf(output, "%4.4X%s %s 0x%2.2X", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Config Interface", (int)(cmd & 0xFF)); |
| } else if ((cmd & 0xFF00) == (0xFC00)) { |
| unsigned offset = (cmd & 0x00F0) >> 4; |
| dataLength = (cmd & 0x000F) + 1; |
| sprintf(output, "%4.4X%s %s (%u word%s at offset 0x%2.2X)", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Direct Page Broadcast", dataLength, (dataLength > 1 ? "s" : ""), offset); |
| } else if ((cmd & 0xFE00) == (0xFA00)) { |
| dataLength = (cmd & 0xFF) + 1; |
| sprintf(output, "%4.4X%s %s (%u word%s)", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Continue Mailbox Access", dataLength, (dataLength > 1 ? "s" : "")); |
| } else if ((cmd & 0xFE00) == (0xF800)) { |
| dataLength = (cmd & 0xFF) + 1; |
| sprintf(output, "%4.4X%s %s (%u word%s)", (int)cmd, HBI_COMMAND_LINE_FILLER, |
| "Start Mailbox Access", dataLength, (dataLength > 1 ? "s" : "")); |
| } else if (cmd & 0x8000) { |
| unsigned offset = (cmd & 0x7F00) >> 8; |
| bool write = (cmd & 0x0080); |
| unsigned slacId = (cmd & 0x0070) >> 4; |
| dataLength = (cmd & 0x000F) + 1; |
| sprintf(output, "%4.4X%s(slac %u) %s %s (%u word%s at offset 0x%2.2X)", |
| (int)cmd, HBI_COMMAND_LINE_FILLER, slacId, |
| "Direct Page", (write ? "Write" : "Read"), dataLength, |
| (dataLength > 1 ? "s" : ""), offset); |
| } else { |
| unsigned offset = (cmd & 0x7F00) >> 8; |
| bool write = ((cmd & 0x0080) != 0); |
| dataLength = (cmd & 0x007F) + 1; |
| sprintf(output, "%4.4X%s Paged %s (%u word%s at offset 0x%2.2X)", (int)cmd, |
| HBI_COMMAND_LINE_FILLER, (write ? "Write" : "Read"), dataLength, |
| (dataLength > 1 ? "s" : ""), offset); |
| } |
| break; |
| #endif /* VP_CC_792_SERIES */ |
| |
| default: |
| sprintf(output, "%4.4X (cmd)", (int)cmd); |
| } |
| |
| VP_HAL(VpDeviceIdType, &deviceId, ("%s", output)); |
| return dataLength; |
| } |
| |
| void |
| VpDisplayHbiData( |
| VpDeviceIdType deviceId, |
| unsigned bufLen, |
| uint16 *buf) |
| { |
| char output[128] = " "; |
| char *pOut = &output[7]; |
| unsigned disp = 0; |
| |
| if (buf == VP_NULL) { |
| VP_HAL(VpDeviceIdType, &deviceId, (" (%u words of zeroes)", bufLen)); |
| return; |
| } |
| |
| while (bufLen--) { |
| pOut += sprintf(pOut, "%4.4X ", *buf++); |
| disp++; |
| if ((bufLen == 0) || ((disp % HBI_WORDS_PER_LINE) == 0)) { |
| VP_HAL(VpDeviceIdType, &deviceId, ("%s", output)); |
| pOut = &output[7]; |
| } |
| } |
| } |
| |
| bool |
| VpHalHbiReadWrapper( |
| VpDeviceType deviceType, |
| VpDeviceIdType deviceId, |
| uint16 cmd, |
| uint8 numwords, |
| uint16p data) |
| { |
| bool status = VpHalHbiRead(deviceId, cmd, numwords, data); |
| VpDisplayHbiCmd(deviceType, deviceId, cmd); |
| VpDisplayHbiData(deviceId, numwords + 1, data); |
| return status; |
| } |
| |
| #endif /* ((VP_CC_DEBUG_SELECT & VP_DBG_HAL) && (defined(VP_CC_VCP2_SERIES) || defined(VP_CC_MELT_SERIES) || defined(VP_CC_VCP_SERIES))) */ |
| |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_SSL) |
| |
| const char * |
| VpGetString_VpCriticalSecType( |
| VpCriticalSecType criticalSecType) |
| { |
| static const char *strTable[VP_NUM_CRITICAL_SEC_TYPES] = { |
| "VP_MPI_CRITICAL_SEC", |
| "VP_HBI_CRITICAL_SEC", |
| "VP_CODE_CRITICAL_SEC" |
| }; |
| |
| VP_ASSERT(VP_NUM_CRITICAL_SEC_TYPES == VP_CODE_CRITICAL_SEC + 1); |
| |
| return VpGetEnumString(strTable, VP_NUM_CRITICAL_SEC_TYPES, (int)criticalSecType); |
| } |
| |
| uint8 |
| VpSysEnterCriticalWrapper( |
| VpDeviceIdType deviceId, |
| VpCriticalSecType criticalSecType) |
| { |
| uint8 depth = VpSysEnterCritical(deviceId, criticalSecType); |
| VP_SSL(VpDeviceIdType, &(deviceId), ("VpSysEnterCritical(%s) = %u", VpGetString_VpCriticalSecType(criticalSecType), (unsigned)depth)); |
| return depth; |
| } |
| |
| uint8 |
| VpSysExitCriticalWrapper( |
| VpDeviceIdType deviceId, |
| VpCriticalSecType criticalSecType) |
| { |
| uint8 depth = VpSysExitCritical(deviceId, criticalSecType); |
| VP_SSL(VpDeviceIdType, &(deviceId), ("VpSysExitCritical(%s) = %u", VpGetString_VpCriticalSecType(criticalSecType), (unsigned)depth)); |
| return depth; |
| } |
| |
| #endif /* (VP_CC_DEBUG_SELECT & VP_DBG_SSL) */ |
| |
| #if defined (VP_CC_880_SERIES) || defined (VP_CC_890_SERIES) |
| #if (VP_CC_DEBUG_SELECT & VP_DBG_ERROR) |
| void |
| VpPrintTermType( |
| VpTermType termType) |
| { |
| #define VP_SUPPORT_TERM_SIZE (8) |
| uint8 termIndex; |
| VpTermType termSupported[VP_SUPPORT_TERM_SIZE] = { |
| VP_TERM_FXS_GENERIC, VP_TERM_FXS_ISOLATE, VP_TERM_FXS_SPLITTER, |
| VP_TERM_FXS_LOW_PWR, VP_TERM_FXS_SPLITTER_LP, VP_TERM_FXS_ISOLATE_LP, |
| VP_TERM_FXO_GENERIC, VP_TERM_FXO_DISC |
| }; |
| char *termString[VP_SUPPORT_TERM_SIZE] = { |
| "VP_TERM_FXS_GENERIC", "VP_TERM_FXS_ISOLATE", "VP_TERM_FXS_SPLITTER", |
| "VP_TERM_FXS_LOW_PWR", "VP_TERM_FXS_SPLITTER_LP", "VP_TERM_FXS_ISOLATE_LP", |
| "VP_TERM_FXO_GENERIC", "VP_TERM_FXO_DISC" |
| }; |
| |
| for (termIndex = 0; termIndex < VP_SUPPORT_TERM_SIZE; termIndex++) { |
| if (termType == termSupported[termIndex]) { |
| VpSysDebugPrintf("\n\n\rpLineObj->termType = %d : %s", |
| termType, termString[termIndex]); |
| return; |
| } |
| } |
| VpSysDebugPrintf("\n\n\rpLineObj->termType = %d : UNKNOWN TERM TYPE", |
| termType); |
| } |
| |
| void |
| VpPrintLineStateType( |
| VpLineStateType lineState, |
| char *strLineState) |
| { |
| #define VP_SUPPORT_STATE_SIZE (18) |
| uint8 stateIndex; |
| |
| VpLineStateType lineStateArray[VP_SUPPORT_STATE_SIZE] = { |
| VP_LINE_STANDBY, VP_LINE_TIP_OPEN, VP_LINE_ACTIVE, VP_LINE_ACTIVE_POLREV, |
| VP_LINE_TALK, VP_LINE_TALK_POLREV, VP_LINE_OHT, VP_LINE_OHT_POLREV, |
| VP_LINE_DISCONNECT, VP_LINE_RINGING, VP_LINE_RINGING_POLREV, |
| VP_LINE_STANDBY_POLREV, VP_LINE_RING_OPEN, VP_LINE_FXO_OHT, |
| VP_LINE_FXO_LOOP_OPEN, VP_LINE_FXO_LOOP_CLOSE, VP_LINE_FXO_TALK, |
| VP_LINE_FXO_RING_GND |
| }; |
| char *lineStateStr[VP_SUPPORT_STATE_SIZE] = { |
| "VP_LINE_STANDBY", "VP_LINE_TIP_OPEN", "VP_LINE_ACTIVE", |
| "VP_LINE_ACTIVE_POLREV", "VP_LINE_TALK", "VP_LINE_TALK_POLREV", |
| "VP_LINE_OHT", "VP_LINE_OHT_POLREV", "VP_LINE_DISCONNECT", |
| "VP_LINE_RINGING", "VP_LINE_RINGING_POLREV", "VP_LINE_STANDBY_POLREV", |
| "VP_LINE_RING_OPEN", "VP_LINE_FXO_OHT", "VP_LINE_FXO_LOOP_OPEN", |
| "VP_LINE_FXO_LOOP_CLOSE", "VP_LINE_FXO_TALK", "VP_LINE_FXO_RING_GND" |
| }; |
| |
| for (stateIndex = 0; stateIndex < VP_SUPPORT_STATE_SIZE; stateIndex++) { |
| if (lineState == lineStateArray[stateIndex]) { |
| VpSysDebugPrintf("\n\r%s = %d : %s", |
| strLineState, lineState, lineStateStr[stateIndex]); |
| return; |
| } |
| } |
| VpSysDebugPrintf("\n\r%s = %d : UNKNOWN LINE STATE", |
| strLineState, lineState); |
| } |
| |
| void |
| VpPrintOptionRingControlType( |
| VpOptionRingControlType *ringCtrl) |
| { |
| VpPrintOptionZeroCrossType(ringCtrl->zeroCross); |
| VpSysDebugPrintf("\npLineObj->ringCtrl.ringExitDbncDur = %d", ringCtrl->ringExitDbncDur); |
| VpPrintLineStateType(ringCtrl->ringTripExitSt, "pLineObj->ringCtrl.ringTripExitSt"); |
| |
| } |
| |
| void |
| VpPrintOptionZeroCrossType( |
| VpOptionZeroCrossType zeroCross) |
| { |
| switch(zeroCross) { |
| case VP_OPTION_ZC_M4B: |
| VpSysDebugPrintf("\npLineObj->ringCtrl.zeroCross = VP_OPTION_ZC_M4B"); |
| break; |
| |
| case VP_OPTION_ZC_B4M: |
| VpSysDebugPrintf("\npLineObj->ringCtrl.zeroCross = VP_OPTION_ZC_B4M"); |
| break; |
| |
| case VP_OPTION_ZC_NONE: |
| VpSysDebugPrintf("\npLineObj->ringCtrl.zeroCross = VP_OPTION_ZC_NONE"); |
| break; |
| |
| default: |
| VpSysDebugPrintf("\npLineObj->ringCtrl.zeroCross = UNKNOWN (%d)", |
| zeroCross); |
| } |
| } |
| |
| void |
| VpPrintRelayControlType( |
| VpRelayControlType relayState) |
| { |
| switch(relayState) { |
| case VP_RELAY_NORMAL: |
| VpSysDebugPrintf("\npLineObj->relayState = VP_RELAY_NORMAL"); |
| break; |
| |
| case VP_RELAY_RESET: |
| VpSysDebugPrintf("\npLineObj->relayState = VP_RELAY_RESET"); |
| break; |
| |
| case VP_RELAY_BRIDGED_TEST: |
| VpSysDebugPrintf("\npLineObj->relayState = VP_RELAY_BRIDGED_TEST"); |
| break; |
| |
| default: |
| VpSysDebugPrintf("\npLineObj->relayState = UNKNOWN (%d)", |
| relayState); |
| } |
| } |
| |
| void |
| VpPrintOptionCodecType( |
| VpOptionCodecType codec) |
| { |
| char *codecStr[] = { |
| "VP_OPTION_ALAW", "VP_OPTION_MLAW", "VP_OPTION_LINEAR", |
| "VP_OPTION_WIDEBAND" |
| }; |
| |
| if (codec <= 3) { |
| VpSysDebugPrintf("\npLineObj->codec = %s", codecStr[codec]); |
| } else { |
| VpSysDebugPrintf("\npLineObj->codec = UNKNOWN (%d)", codec); |
| } |
| } |
| |
| void |
| VpPrintOptionPcmTxRxCntrlType( |
| VpOptionPcmTxRxCntrlType pcmTxRxCtrl) |
| { |
| char *pcmCtrlStr[] = { |
| "VP_OPTION_PCM_BOTH", "VP_OPTION_PCM_RX_ONLY", "VP_OPTION_PCM_TX_ONLY", |
| "VP_OPTION_PCM_ALWAYS_ON" |
| }; |
| |
| if (pcmTxRxCtrl <= 3) { |
| VpSysDebugPrintf("\npLineObj->pcmTxRxCtrl = %s", pcmCtrlStr[pcmTxRxCtrl]); |
| } else { |
| VpSysDebugPrintf("\npLineObj->pcmTxRxCtrl = UNKNOWN (%d)", pcmTxRxCtrl); |
| } |
| } |
| |
| void |
| VpPrintCallerIdType( |
| VpCallerIdType *callerId) |
| { |
| uint8 msgIndex; |
| |
| VpSysDebugPrintf("\n\npLineObj->callerId.status = 0x%08lX", callerId->status); |
| VpSysDebugPrintf("\npLineObj->callerId.dtmfStatus = 0x%04X", callerId->dtmfStatus); |
| VpSysDebugPrintf("\npLineObj->callerId.digitDet = 0x%04X", callerId->digitDet); |
| VpSysDebugPrintf("\npLineObj->callerId.cliTimer = %d", callerId->cliTimer); |
| VpSysDebugPrintf("\npLineObj->callerId.currentData = 0x%02X", callerId->currentData); |
| VpSysDebugPrintf("\npLineObj->callerId.cidCheckSum = 0x%04X", callerId->cidCheckSum); |
| VpSysDebugPrintf("\npLineObj->callerId.cliDebounceTime = %d", callerId->cliDebounceTime); |
| VpSysDebugPrintf("\npLineObj->callerId.pCliProfile = %p", callerId->pCliProfile); |
| VpSysDebugPrintf("\npLineObj->callerId.cliDetectTone1 = 0x%04X", callerId->cliDetectTone1); |
| VpSysDebugPrintf("\npLineObj->callerId.cliDetectTone2 = 0x%04X", callerId->cliDetectTone2); |
| VpSysDebugPrintf("\npLineObj->callerId.cliMPIndex = %d", callerId->cliMPIndex); |
| VpSysDebugPrintf("\npLineObj->callerId.cliMSIndex = %d", callerId->cliMSIndex); |
| VpSysDebugPrintf("\npLineObj->callerId.cliIndex = %d", callerId->cliIndex); |
| |
| VpSysDebugPrintf("\npLineObj->callerId.primaryMsgLen = %d", callerId->primaryMsgLen); |
| VpSysDebugPrintf("\npLineObj->callerId.primaryBuffer ="); |
| for (msgIndex = 0; msgIndex < VP_SIZEOF_CID_MSG_BUFFER; msgIndex++) { |
| if (!(msgIndex % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" 0x%02X", callerId->primaryBuffer[msgIndex]); |
| } |
| |
| VpSysDebugPrintf("\npLineObj->callerId.secondaryMsgLen = %d", callerId->secondaryMsgLen); |
| VpSysDebugPrintf("\npLineObj->callerId.secondaryBuffer ="); |
| for (msgIndex = 0; msgIndex < VP_SIZEOF_CID_MSG_BUFFER; msgIndex++) { |
| if (!(msgIndex % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" 0x%02X", callerId->secondaryBuffer[msgIndex]); |
| } |
| } |
| |
| void |
| VpPrintVpCslacTimerStruct( |
| VpCslacTimerStruct *lineTimers) |
| { |
| if (lineTimers->type == VP_CSLAC_FXO_TIMER) { |
| #if (defined(VP_CC_880_SERIES) && defined(VP880_FXO_SUPPORT)) \ |
| || (defined(VP_CC_890_SERIES) && defined(VP890_FXO_SUPPORT)) |
| VpSysDebugPrintf("\npLineObj->lineTimers.type = VP_CSLAC_FXO_TIMER"); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.highToLowTime = %d", |
| lineTimers->timers.fxoTimer.highToLowTime); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.prevHighToLowTime = %d", |
| lineTimers->timers.fxoTimer.prevHighToLowTime); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.timeLastPolRev = %d", |
| lineTimers->timers.fxoTimer.timeLastPolRev); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.timePrevPolRev = %d", |
| lineTimers->timers.fxoTimer.timePrevPolRev); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.maxPeriod = %d", |
| lineTimers->timers.fxoTimer.maxPeriod); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.lastStateChange = %d", |
| lineTimers->timers.fxoTimer.lastStateChange); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.lastNotLiu = %d", |
| lineTimers->timers.fxoTimer.lastNotLiu); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.disconnectDebounce = %d", |
| lineTimers->timers.fxoTimer.disconnectDebounce); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.disconnectDuration = %d", |
| lineTimers->timers.fxoTimer.disconnectDuration); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.liuDebounce = %d", |
| lineTimers->timers.fxoTimer.liuDebounce); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.ringOffDebounce = %d", |
| lineTimers->timers.fxoTimer.ringOffDebounce); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.ringTimer = %d", |
| lineTimers->timers.fxoTimer.ringTimer); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.cidCorrectionTimer = %d", |
| lineTimers->timers.fxoTimer.cidCorrectionTimer); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.bCalTimer = %d", |
| lineTimers->timers.fxoTimer.bCalTimer); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.fxoDiscIO2Change = %d", |
| lineTimers->timers.fxoTimer.fxoDiscIO2Change); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.pllRecovery = %d", |
| lineTimers->timers.fxoTimer.pllRecovery); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.currentMonitorTimer = %d", |
| lineTimers->timers.fxoTimer.currentMonitorTimer); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.measureBFilterTimer = %d", |
| lineTimers->timers.fxoTimer.measureBFilterTimer); |
| VpSysDebugPrintf("\n\ttimers.fxoTimer.lowVoltageTimer = %d", |
| lineTimers->timers.fxoTimer.lowVoltageTimer); |
| VpSysDebugPrintf("\n\rpLineObj->cadence.noCount = %s", |
| ((lineTimers->timers.fxoTimer.noCount == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpLineObj->cadence.lastState = %s", |
| ((lineTimers->timers.fxoTimer.lastState == TRUE) ? "TRUE" : "FALSE")); |
| #endif |
| } else { |
| uint8 timerIndex; |
| char *timerNames[VP_LINE_TIMER_LAST] = { |
| "VP_LINE_CID_DEBOUNCE", "VP_LINE_TIMER_CID_DTMF", |
| "VP_LINE_TIMER_FAULT", "VP_LINE_RING_EXIT_PROCESS", |
| "VP_LINE_HOOK_FREEZE", "VP_LINE_DISCONNECT_EXIT", |
| "VP_LINE_GND_START_TIMER", "VP_LINE_CAL_LINE_TIMER", |
| "VP_LINE_PING_TIMER", "VP_LINE_TRACKER_DISABLE", |
| "VP_LINE_GPIO_CLKOUT_TIMER", "VP_LINE_INTERNAL_TESTTERM_TIMER", |
| "VP_LINE_SPEEDUP_RECOVERY_TIMER" |
| }; |
| |
| VpSysDebugPrintf("\npLineObj->lineTimers.type = VP_CSLAC_FXS_TIMER"); |
| VpSysDebugPrintf("\npLineObj->lineTimers.trackingTime = %d", |
| lineTimers->timers.trackingTime); |
| VpSysDebugPrintf("\npLineObj->lineTimers.timer ="); |
| for (timerIndex = 0; timerIndex < VP_LINE_TIMER_LAST; timerIndex++) { |
| if (!(timerIndex % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" 0x%04X", lineTimers->timers.timer[timerIndex]); |
| if (lineTimers->timers.timer[timerIndex] & VP_ACTIVATE_TIMER) { |
| VpSysDebugPrintf(" - %s is Active\n\t", timerNames[timerIndex]); |
| } |
| } |
| } |
| } |
| |
| void |
| VpPrintSeqDataType( |
| VpSeqDataType *cadence) |
| { |
| VpSysDebugPrintf("\n\npLineObj->cadence.pActiveCadence = %p", cadence->pActiveCadence); |
| VpSysDebugPrintf("\npLineObj->cadence.pCurrentPos = %p", cadence->pCurrentPos); |
| VpSysDebugPrintf("\npLineObj->cadence.status = 0x%04X", cadence->status); |
| VpSysDebugPrintf("\npLineObj->cadence.index = %d", cadence->index); |
| VpSysDebugPrintf("\npLineObj->cadence.length = %d", cadence->length); |
| { |
| uint8 branchDepth; |
| VpSysDebugPrintf("\npLineObj->cadence.count ="); |
| for (branchDepth = 0; branchDepth < VP_CSLAC_MAX_BRANCH_DEPTH; branchDepth++) { |
| VpSysDebugPrintf(" 0x%02X", cadence->count[branchDepth]); |
| } |
| } |
| { |
| uint8 regDataIndex; |
| VpSysDebugPrintf("\npLineObj->cadence.regData ="); |
| for (regDataIndex = 0; regDataIndex < VPCSLAC_MAX_GENERATOR_DATA; regDataIndex++) { |
| if (!(regDataIndex % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" 0x%02X", cadence->regData[regDataIndex]); |
| } |
| } |
| VpSysDebugPrintf("\npLineObj->cadence.timeRemain = %d", cadence->timeRemain); |
| VpSysDebugPrintf("\npLineObj->cadence.branchAt = %d", cadence->branchAt); |
| VpSysDebugPrintf("\npLineObj->cadence.meteringBurst = %d", cadence->meteringBurst); |
| VpSysDebugPrintf("\n\rpLineObj->cadence.meterPendingAbort = %s", |
| ((cadence->meterPendingAbort == TRUE) ? "TRUE" : "FALSE")); |
| VpPrintLineStateType(cadence->meterAbortLineState, "pLineObj->cadence.meterAbortLineState"); |
| |
| VpSysDebugPrintf("\npLineObj->cadence.startFreq = 0x%04X", cadence->startFreq); |
| VpSysDebugPrintf("\npLineObj->cadence.stopFreq = 0x%04X", cadence->stopFreq); |
| VpSysDebugPrintf("\npLineObj->cadence.freqStep = 0x%04X", cadence->freqStep); |
| VpSysDebugPrintf("\n\rpLineObj->cadence.isFreqIncrease = %s", |
| ((cadence->isFreqIncrease == TRUE) ? "TRUE" : "FALSE")); |
| |
| VpSysDebugPrintf("\npLineObj->cadence.startLevel = 0x%04X", cadence->startLevel); |
| VpSysDebugPrintf("\npLineObj->cadence.stopLevel = 0x%04X", cadence->stopLevel); |
| VpSysDebugPrintf("\npLineObj->cadence.levelStep = 0x%04X", cadence->levelStep); |
| } |
| |
| void |
| VpPrintCidSeqDataType( |
| VpCidSeqDataType *cidSeq) |
| { |
| VpSysDebugPrintf("\n\npLineObj->cidSeq.pActiveCadence = %p", cidSeq->pActiveCadence); |
| VpSysDebugPrintf("\npLineObj->cidSeq.pCurrentPos = %p", cidSeq->pCurrentPos); |
| VpSysDebugPrintf("\npLineObj->cidSeq.index = %d", cidSeq->index); |
| VpSysDebugPrintf("\npLineObj->cidSeq.timeRemain = %d", cidSeq->timeRemain); |
| } |
| |
| void |
| VpPrintApiIntLineState( |
| VpApiIntLineStateType *lineState) |
| { |
| VpPrintLineStateType(lineState->currentState, "pLineObj->lineState.currentState"); |
| VpPrintLineStateType(lineState->previous, "pLineObj->lineState.previous"); |
| VpPrintLineStateType(lineState->usrCurrent, "pLineObj->lineState.usrCurrent"); |
| VpSysDebugPrintf("\npLineObj->lineState.condition = 0x%04X", lineState->condition); |
| VpSysDebugPrintf("\npLineObj->lineState.calType = %d", lineState->calType); |
| } |
| |
| void |
| VpPrintDigitGenDataType( |
| VpDigitGenerationDataType *digitGenStruct) |
| { |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.dtmfOnTime = %d", |
| digitGenStruct->dtmfOnTime); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.dtmfOffTime = %d", |
| digitGenStruct->dtmfOffTime); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.breakTime = %d", |
| digitGenStruct->breakTime); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.makeTime = %d", |
| digitGenStruct->makeTime); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.flashTime = %d", |
| digitGenStruct->flashTime); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.dpInterDigitTime = %d", |
| digitGenStruct->dpInterDigitTime); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.dtmfHighFreqLevel = %d %d", |
| digitGenStruct->dtmfHighFreqLevel[0], digitGenStruct->dtmfHighFreqLevel[1]); |
| VpSysDebugPrintf("\n\rpLineObj->digitGenStruct.dtmfLowFreqLevel = %d %d", |
| digitGenStruct->dtmfLowFreqLevel[0], digitGenStruct->dtmfLowFreqLevel[1]); |
| } |
| |
| void |
| VpPrintDynamicInfoStruct( |
| VpDeviceDynamicInfoType *dynamicInfo) |
| { |
| VpSysDebugPrintf("\n\n\rpDevObj->dynamicInfo.lastChan = %d", |
| dynamicInfo->lastChan); |
| VpSysDebugPrintf("\n\rpDevObj->dynamicInfo.clkFault = %s", |
| ((dynamicInfo->clkFault == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpDevObj->dynamicInfo.bat1Fault = %s", |
| ((dynamicInfo->bat1Fault == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpDevObj->dynamicInfo.bat2Fault = %s", |
| ((dynamicInfo->bat2Fault == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpDevObj->dynamicInfo.bat3Fault = %s", |
| ((dynamicInfo->bat3Fault == TRUE) ? "TRUE" : "FALSE")); |
| } |
| |
| void |
| VpPrintStaticInfoStruct( |
| VpDeviceStaticInfoType *staticInfo) |
| { |
| VpSysDebugPrintf("\n\rpDevObj->staticInfo.rcnPcn = 0x%02X 0x%02X", |
| staticInfo->rcnPcn[0], staticInfo->rcnPcn[1]); |
| VpSysDebugPrintf("\n\rpDevObj->staticInfo.maxChannels = %d", |
| staticInfo->maxChannels); |
| } |
| |
| /* Bit-wise values from VpDeviceStateType */ |
| void |
| VpPrintStateInformation( |
| uint16 state) |
| { |
| VpSysDebugPrintf("\n\n\rpDevObj->state = 0x%04X", state); |
| } |
| |
| void |
| VpPrintDeviceProfileStruct( |
| VpDeviceType deviceType, |
| void *devProfileData) |
| { |
| if (deviceType == VP_DEV_880_SERIES) { |
| #ifdef VP_CC_880_SERIES |
| VpSysDebugPrintf("\n\n\rpDevObj->devProfileData.profVersion = %d", |
| ((Vp880DeviceProfileType *)devProfileData)->profVersion); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.pcmClkRate = %d", |
| ((Vp880DeviceProfileType *)devProfileData)->pcmClkRate); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.tickRate = 0x%04X", |
| ((Vp880DeviceProfileType *)devProfileData)->tickRate); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.devCfg1 = 0x%02X", |
| ((Vp880DeviceProfileType *)devProfileData)->devCfg1); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.clockSlot = 0x%02X", |
| ((Vp880DeviceProfileType *)devProfileData)->clockSlot); |
| #endif |
| |
| } else if (deviceType == VP_DEV_890_SERIES) { |
| #ifdef VP_CC_890_SERIES |
| VpSysDebugPrintf("\n\n\rpDevObj->devProfileData.profVersion = %d", |
| ((Vp890DeviceProfileType *)devProfileData)->profVersion); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.pcmClkRate = %d", |
| ((Vp890DeviceProfileType *)devProfileData)->pcmClkRate); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.mClkMask = 0x%02X", |
| ((Vp890DeviceProfileType *)devProfileData)->mClkMask); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.tickRate = 0x%04X", |
| ((Vp890DeviceProfileType *)devProfileData)->tickRate); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.devCfg1 = 0x%02X", |
| ((Vp890DeviceProfileType *)devProfileData)->devCfg1); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.clockSlot = 0x%02X", |
| ((Vp890DeviceProfileType *)devProfileData)->clockSlot); |
| |
| #ifdef VP890_FXS_SUPPORT |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.swParams = 0x%02X 0x%02X 0x%02X", |
| ((Vp890DeviceProfileType *)devProfileData)->swParams[0], |
| ((Vp890DeviceProfileType *)devProfileData)->swParams[1], |
| ((Vp890DeviceProfileType *)devProfileData)->swParams[2]); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.timingParams = 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X", |
| ((Vp890DeviceProfileType *)devProfileData)->timingParams[0], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParams[1], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParams[2], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParams[3], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParams[4], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParams[5]); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.timingParamsFR = 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X", |
| ((Vp890DeviceProfileType *)devProfileData)->timingParamsFR[0], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParamsFR[1], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParamsFR[2], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParamsFR[3], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParamsFR[4], |
| ((Vp890DeviceProfileType *)devProfileData)->timingParamsFR[5]); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.peakManagement = %s", |
| ((((Vp890DeviceProfileType *)devProfileData)->peakManagement == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpDevObj->devProfileData.lowVoltOverride = %s", |
| ((((Vp890DeviceProfileType *)devProfileData)->lowVoltOverride == TRUE) ? "TRUE" : "FALSE")); |
| #endif /* VP890_FXS_SUPPORT */ |
| #endif /* VP_CC_890_SERIES */ |
| } |
| } |
| |
| void |
| VpPrintEventMaskStruct( |
| bool isDeviceInfo, |
| bool isMask, |
| VpOptionEventMaskType *eventMask) |
| { |
| char objectString[30]; |
| char lineOrDevString[30]; |
| |
| if (isMask) { |
| VpMemCpy(objectString, "EventsMask", sizeof("EventsMask")); |
| } else { |
| VpMemCpy(objectString, "Events", sizeof("Events")); |
| } |
| |
| if (isDeviceInfo) { |
| VpMemCpy(lineOrDevString, "pDevObj->device", sizeof("pDevObj->device")); |
| } else { |
| VpMemCpy(lineOrDevString, "pLineObj->line", sizeof("pLineObj->line")); |
| } |
| |
| VpSysDebugPrintf("\n\n\r%s%s.faults = 0x%04X", lineOrDevString, objectString, |
| eventMask->faults); |
| VpSysDebugPrintf("\n\r%s%s.signaling = 0x%04X", lineOrDevString, objectString, |
| eventMask->signaling); |
| VpSysDebugPrintf("\n\r%s%s.response = 0x%04X", lineOrDevString, objectString, |
| eventMask->response); |
| VpSysDebugPrintf("\n\r%s%s.test = 0x%04X", lineOrDevString, objectString, |
| eventMask->test); |
| VpSysDebugPrintf("\n\r%s%s.process = 0x%04X", lineOrDevString, objectString, |
| eventMask->process); |
| VpSysDebugPrintf("\n\r%s%s.fxo = 0x%04X", lineOrDevString, objectString, |
| eventMask->fxo); |
| VpSysDebugPrintf("\n\r%s%s.packet = 0x%04X", lineOrDevString, objectString, |
| eventMask->packet); |
| } |
| |
| void |
| VpPrintCriticalFltStruct( |
| VpOptionCriticalFltType *criticalFault) |
| { |
| VpSysDebugPrintf("\n\n\rpDevObj->criticalFault.acFltDiscEn = %s", |
| ((criticalFault->acFltDiscEn == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpDevObj->criticalFault.dcFltDiscEn = %s", |
| ((criticalFault->dcFltDiscEn == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpDevObj->criticalFault.thermFltDiscEn = %s", |
| ((criticalFault->thermFltDiscEn == TRUE) ? "TRUE" : "FALSE")); |
| } |
| |
| void |
| VpPrintGetResultsOptionStruct( |
| VpGetResultsOptionsType *getResultsOption) |
| { |
| VpSysDebugPrintf("\n\n\rpDevObj->getResultsOption.chanId = %d", |
| getResultsOption->chanId); |
| VpSysDebugPrintf("\n\rpDevObj->getResultsOption.optionType = 0x%04X", |
| getResultsOption->optionType); |
| { |
| uint8 byteCount; |
| uint8 *pOptionData = (uint8 *)(&getResultsOption->optionData); |
| uint8 optionSize = sizeof(VpGetResultsOptionsDataType); |
| |
| VpSysDebugPrintf("\n\rpDevObj->getResultsOption.optionData ="); |
| for (byteCount = 0; byteCount < optionSize; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" 0x%02X", *pOptionData); |
| pOptionData++; |
| } |
| } |
| } |
| |
| void |
| VpPrintRelGainResultsStruct( |
| VpRelGainResultsType *relGainResults) |
| { |
| VpSysDebugPrintf("\n\n\rpDevObj->relGainResults.gResult = %d", |
| relGainResults->gResult); |
| VpSysDebugPrintf("\n\rpDevObj->relGainResults.gxValue = 0x%04X", |
| relGainResults->gxValue); |
| VpSysDebugPrintf("\n\rpDevObj->relGainResults.grValue = 0x%04X", |
| relGainResults->grValue); |
| } |
| |
| void |
| VpPrintDeviceProfileTable( |
| VpCSLACDeviceProfileTableType *devProfileTable) |
| { |
| uint8 byteCount; |
| |
| VpSysDebugPrintf("\n\n\rpDevObj->devProfileTable.pDevProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_DEV_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pDevProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pAcProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_AC_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pAcProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pDcProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_DC_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pDcProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pRingingProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_RINGING_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pRingingProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pToneCadProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_TONE_CADENCE_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pToneCadProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pToneProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_TONE_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pToneProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pRingingCadProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_RING_CADENCE_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pRingingCadProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pMeteringProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_METERING_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pMeteringProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pCallerIdProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_CALLERID_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pCallerIdProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pFxoConfigProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_FXO_CONFIG_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pFxoConfigProfileTable[byteCount]); |
| } |
| |
| VpSysDebugPrintf("\n\rpDevObj->devProfileTable.pCustomTermProfileTable ="); |
| for (byteCount = 0; byteCount < VP_CSLAC_CUSTOM_TERM_PROF_TABLE_SIZE; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" %p", devProfileTable->pCustomTermProfileTable[byteCount]); |
| } |
| } |
| |
| void |
| VpPrintProfileTableEntry( |
| VpCSLACProfileTableEntryType *profEntry) |
| { |
| VpSysDebugPrintf("\n\n\rpDevObj->profEntry.devProfEntry = 0x%04X", |
| profEntry->devProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.acProfEntry = 0x%04X", |
| profEntry->acProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.dcProfEntry = 0x%04X", |
| profEntry->dcProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.ringingProfEntry = 0x%04X", |
| profEntry->ringingProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.ringCadProfEntry = 0x%04X", |
| profEntry->ringCadProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.toneProfEntry = 0x%04X", |
| profEntry->toneProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.toneCadProfEntry = 0x%04X", |
| profEntry->toneCadProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.meterProfEntry = 0x%04X", |
| profEntry->meterProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.cidCadProfEntry = 0x%04X", |
| profEntry->cidCadProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.fxoConfigProfEntry = 0x%04X", |
| profEntry->fxoConfigProfEntry); |
| VpSysDebugPrintf("\n\rpDevObj->profEntry.customTermProfEntry = 0x%04X", |
| profEntry->customTermProfEntry); |
| } |
| |
| #if defined (VP890_FXS_SUPPORT) || defined (VP880_FXS_SUPPORT) |
| void |
| VpPrintPulseSpecs( |
| uint8 specNumber, |
| VpOptionPulseType *pulseSpecs) |
| { |
| char specString[2] = {'\0', '\0'}; |
| |
| if (specNumber == 1) { |
| specString[0] = '2'; |
| } |
| |
| VpSysDebugPrintf("\n\n\rpDevObj->pulseSpecs%s.breakMin = %d", |
| specString, pulseSpecs->breakMin); |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.breakMax = %d", |
| specString, pulseSpecs->breakMax); |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.makeMin = %d", |
| specString, pulseSpecs->makeMin); |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.makeMax = %d", |
| specString, pulseSpecs->makeMax); |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.interDigitMin = %d", |
| specString, pulseSpecs->interDigitMin); |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.flashMin = %d", |
| specString, pulseSpecs->flashMin); |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.flashMax = %d", |
| specString, pulseSpecs->flashMax); |
| #ifdef EXTENDED_FLASH_HOOK |
| VpSysDebugPrintf("\n\rpDevObj->pulseSpecs%s.onHookMin = %d", |
| specString, pulseSpecs->onHookMin); |
| #endif |
| |
| } |
| |
| void |
| VpPrintDPStateMachine( |
| uint8 stateMachineNum, |
| VpDialPulseDetectType *dpStruct) |
| { |
| char specString[2] = {'\0', '\0'}; |
| char *dpState[4] = { |
| "VP_DP_DETECT_STATE_LOOP_OPEN", |
| "VP_DP_DETECT_STATE_LOOP_CLOSE", |
| "VP_DP_DETECT_STATE_IDLE", |
| "UNKNOWN" |
| }; |
| uint8 stateIndex = (dpStruct->state < 3) ? dpStruct->state : 3; |
| |
| if (stateMachineNum == 1) { |
| specString[0] = '2'; |
| } |
| |
| VpSysDebugPrintf("\n\n\rpLineObj->dpStruct%s.digits = %d", |
| specString, dpStruct->digits); |
| VpSysDebugPrintf("\n\rpLineObj->dpStruct%s.lo_time = %d", |
| specString, dpStruct->lo_time); |
| VpSysDebugPrintf("\n\rpLineObj->dpStruct%s.lc_time = %d", |
| specString, dpStruct->lc_time); |
| VpSysDebugPrintf("\n\rpLineObj->dpStruct%s.state = %d:%s", |
| specString, dpStruct->state, dpState[stateIndex]); |
| VpSysDebugPrintf("\n\rpLineObj->dpStruct%s.hookSt = %s", |
| specString, ((dpStruct->hookSt == TRUE) ? "TRUE" : "FALSE")); |
| VpSysDebugPrintf("\n\rpLineObj->dpStruct%s.signalingData = %d\n\r", |
| specString, dpStruct->signalingData); |
| } |
| |
| #endif /* defined (VP890_FXS_SUPPORT) || defined (VP880_FXS_SUPPORT) */ |
| |
| void |
| VpPrintDeviceTimers( |
| uint16 devTimer[VP_DEV_TIMER_LAST]) |
| { |
| uint8 byteCount; |
| char *timerNames[VP_DEV_TIMER_LAST] = { |
| "VP_DEV_TIMER_TESTLINE", "VP_DEV_TIMER_CLKFAIL", "VP_DEV_TIMER_ABSCAL", |
| "VP_DEV_TIMER_LP_CHANGE", "VP_DEV_TIMER_ABV_CAL", "VP_DEV_TIMER_ENTER_RINGING", |
| "VP_DEV_TIMER_EXIT_RINGING", "VP_DEV_TIMER_WB_MODE_CHANGE" |
| }; |
| |
| VpSysDebugPrintf("\n\rpDevObj->devTimer ="); |
| for (byteCount = 0; byteCount < VP_DEV_TIMER_LAST; byteCount++) { |
| if (!(byteCount % 10)) { |
| VpSysDebugPrintf("\n\t"); |
| } |
| VpSysDebugPrintf(" 0x%04X", devTimer[byteCount]); |
| if (devTimer[byteCount] & VP_ACTIVATE_TIMER) { |
| VpSysDebugPrintf(" - %s is Active\n\t", timerNames[byteCount]); |
| } |
| } |
| } |
| |
| #endif /* VP_CC_DEBUG_SELECT & VP_DBG_ERROR */ |
| #endif /* defined (VP_CC_880_SERIES) || defined (VP_CC_890_SERIES) */ |
| |
| #endif /* VP_DEBUG */ |