⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isup.cpp.bak

📁 No。7七号信令网协议64K链路协议解码程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:

//通知表示语
void CIsup::create_notifyID_Table()
{	int i;
    for(i=0; i<128; i++)
    { strcpy(m_notifyID_Table[i], "备用");    } 
	strcpy(m_notifyID_Table[0x00], "用户暂停");  
	strcpy(m_notifyID_Table[0x01], "用户恢复");  
	strcpy(m_notifyID_Table[0x02], "承载业务改变");  
	strcpy(m_notifyID_Table[0x03], "扩充到ASN.1编码的识别符");  
	strcpy(m_notifyID_Table[0x04], "呼叫完成延时");  
	strcpy(m_notifyID_Table[0x42], "会议建立");  
	strcpy(m_notifyID_Table[0x43], "会议断开");  
	strcpy(m_notifyID_Table[0x44], "增加他方");  
	strcpy(m_notifyID_Table[0x45], "隔离");  
	strcpy(m_notifyID_Table[0x46], "重新连接");  
	strcpy(m_notifyID_Table[0x48], "他方隔离");  
	strcpy(m_notifyID_Table[0x49], "他方分离");  
	strcpy(m_notifyID_Table[0x4a], "他方断开");  
	strcpy(m_notifyID_Table[0x4b], "会议浮动");  
	strcpy(m_notifyID_Table[0x60], "呼叫是一个等待呼叫");  
	strcpy(m_notifyID_Table[0x68], "变更已激活,(在DSS1中使用)");  
	strcpy(m_notifyID_Table[0x69], "呼叫变换,提示");  
	strcpy(m_notifyID_Table[0x6a], "呼叫变换,执行");  
	strcpy(m_notifyID_Table[0x79], "远端保持");  
	strcpy(m_notifyID_Table[0x7a], "远端恢复");  
	strcpy(m_notifyID_Table[0x7b], "呼叫正在变更");  
}

void CIsup::create_preLevel_Table()
{	int i;
	strcpy(m_preLevel_Table[0x00], "最优先");  
	strcpy(m_preLevel_Table[0x01], "特急");  
	strcpy(m_preLevel_Table[0x02], "立即");  
	strcpy(m_preLevel_Table[0x03], "优先");  
	strcpy(m_preLevel_Table[0x04], "常规");  
    for(i=0x05; i<=0x0F; i++)
    { strcpy(m_preLevel_Table[i], "备用");    }
}

void CIsup::create_LFB_Table()
{	strcpy(m_LFB_Table[0x00], "LFB允许");  
	strcpy(m_LFB_Table[0x01], "通道保留");  
	strcpy(m_LFB_Table[0x02], "LFB不允许");  
	strcpy(m_LFB_Table[0x03], "备用");  
}

//计费表示语
void CIsup::create_backwardCallID_BA_Table()
{	strcpy(m_backwardCallID_BA_Table[0x00], "无指示");  
	strcpy(m_backwardCallID_BA_Table[0x01], "不计费");  
	strcpy(m_backwardCallID_BA_Table[0x02], "计费");  
	strcpy(m_backwardCallID_BA_Table[0x03], "备用");  
}
//被叫用户状态表示语
void CIsup::create_backwardCallID_DC_Table()
{	strcpy(m_backwardCallID_DC_Table[0x00], "无指示");  
	strcpy(m_backwardCallID_DC_Table[0x01], "用户空");  
	strcpy(m_backwardCallID_DC_Table[0x02], "空时连接");  
	strcpy(m_backwardCallID_DC_Table[0x03], "备用");  
}

//被叫用户类别表示语
void CIsup::create_backwardCallID_FE_Table()
{	strcpy(m_backwardCallID_FE_Table[0x00], "无指示");  
	strcpy(m_backwardCallID_FE_Table[0x01], "普通用户");  
	strcpy(m_backwardCallID_FE_Table[0x02], "付费电话");  
	strcpy(m_backwardCallID_FE_Table[0x03], "备用");  
}

//位置
void CIsup::create_locationID_Table()
{	int i;
    for(i=0; i<16; i++)
    { strcpy(m_locationID_Table[i], "备用");    } 
	strcpy(m_locationID_Table[0x00], "用户");
	strcpy(m_locationID_Table[0x01], "为本地用户服务的专用网");
	strcpy(m_locationID_Table[0x02], "为本地用户服务的公用网");
	strcpy(m_locationID_Table[0x03], "转接网");
	strcpy(m_locationID_Table[0x04], "为远端用户服务的公用网");
	strcpy(m_locationID_Table[0x05], "为远端用户服务的专用网");
	strcpy(m_locationID_Table[0x06], "国际网");
	strcpy(m_locationID_Table[0x07], "超出互通点的范围");
}

//编码标准2
void CIsup::create_codeStd2ID_Table()
{
	strcpy(m_codeStd2ID_Table[0x00], "CCITT标准编码");
	strcpy(m_codeStd2ID_Table[0x01], "ISO/IEC标准");
	strcpy(m_codeStd2ID_Table[0x02], "国内标准");
	strcpy(m_codeStd2ID_Table[0x03], "专用于所识别的位置的标准");
}

//原因值
void CIsup::create_causeVal_Table()
{	int i;
    for(i=0; i<128; i++)
    { strcpy(m_causeVal_Table[i], "未指定");    } 
	//000, 001 :一般事件类
	strcpy(m_causeVal_Table[0x01], "未分配的号码");
	strcpy(m_causeVal_Table[0x02], "无路由到指定的转接网");
	strcpy(m_causeVal_Table[0x03], "无路由到目的地");
	strcpy(m_causeVal_Table[0x04], "发送专用信息音");
	strcpy(m_causeVal_Table[0x05], "误拨长途字冠");
	strcpy(m_causeVal_Table[0x08], "预占");
	strcpy(m_causeVal_Table[0x09], "强占--电路留作再用");
	strcpy(m_causeVal_Table[0x10], "正常的呼叫拆线");
	strcpy(m_causeVal_Table[0x11], "用户忙");
	strcpy(m_causeVal_Table[0x12], "用户未响应");
	strcpy(m_causeVal_Table[0x13], "用户未应答");
	strcpy(m_causeVal_Table[0x14], "用户缺席");
	strcpy(m_causeVal_Table[0x15], "呼叫拒收");
	strcpy(m_causeVal_Table[0x16], "号码改变");
	strcpy(m_causeVal_Table[0x1b], "目的地不可达");
	strcpy(m_causeVal_Table[0x1c], "无效的号码格式(地址不全)");
	strcpy(m_causeVal_Table[0x1d], "性能拒绝");
	strcpy(m_causeVal_Table[0x1f], "正常--未指定");
	//010 :资源不可用类 
	strcpy(m_causeVal_Table[0x22], "无电路/通路可用");
	strcpy(m_causeVal_Table[0x26], "网络未正常工作");
	strcpy(m_causeVal_Table[0x29], "临时故障");
	strcpy(m_causeVal_Table[0x2a], "交换设备拥塞");
	strcpy(m_causeVal_Table[0x2b], "接入信息舍弃");
	strcpy(m_causeVal_Table[0x2c], "所请求的电路/通路不可用");
	strcpy(m_causeVal_Table[0x2e], "优先呼叫闭塞");
	strcpy(m_causeVal_Table[0x2f], "资源不可用--未指定");
	//011 : 业务或任选不可用类 
	strcpy(m_causeVal_Table[0x33], "所请求的性能未预订");
	strcpy(m_causeVal_Table[0x34], "CUG中限制去呼叫");
	strcpy(m_causeVal_Table[0x37], "CUG中限制来呼叫");
	strcpy(m_causeVal_Table[0x39], "承载能力无权");
	strcpy(m_causeVal_Table[0x3a], "承载能力目前不可用");
	strcpy(m_causeVal_Table[0x3e], "指定的出接入信息和用户类别不一致");
	strcpy(m_causeVal_Table[0x3f], "业务/任选不可用--未指定");
	//100 : 业务或任选未实现类 
	strcpy(m_causeVal_Table[0x41], "承载能力未实现类");
	strcpy(m_causeVal_Table[0x45], "所请求的性能未实现");
	strcpy(m_causeVal_Table[0x46], "只有受限的数字信息承载能力可用");
	strcpy(m_causeVal_Table[0x4F], "业务或任选未实现--未指定");
	//101 : 无效的消息类(例如参数超出范围) 
	strcpy(m_causeVal_Table[0x57], "被叫用户不是CUG的成员");
	strcpy(m_causeVal_Table[0x58], "不兼容的目的地");
	strcpy(m_causeVal_Table[0x5a], "不存在的CUG");
	strcpy(m_causeVal_Table[0x5b], "无效的转接网选择");
	strcpy(m_causeVal_Table[0x5f], "无效的消息,未指定");
	//110 : 协议错误类(例如未知的消息) 
	strcpy(m_causeVal_Table[0x61], "消息类型不存在或未实现");
	strcpy(m_causeVal_Table[0x63], "参数不存在或未实现");
	strcpy(m_causeVal_Table[0x65], "定时器终了时恢复");
	strcpy(m_causeVal_Table[0x66], "参数不存在或未实现--传递");
	strcpy(m_causeVal_Table[0x6e], "消息带有未被识别的参数--舍弃");
	strcpy(m_causeVal_Table[0x6f], "协议错误,未指定");
	//111 : 互通类 
	strcpy(m_causeVal_Table[0x7f], "互通,未指定");
}

//去话半回声控制装置响应表示语
void CIsup::create_echoCtrInfID_BA_Table()
{	strcpy(m_echoCtrInfID_BA_Table[0x00], "无信息");
	strcpy(m_echoCtrInfID_BA_Table[0x01], "未包括去话半回声控制装置");
	strcpy(m_echoCtrInfID_BA_Table[0x02], "包括去话半回声控制装置");
	strcpy(m_echoCtrInfID_BA_Table[0x03], "备用");
}

//来话半回声控制装置响应表示语
void CIsup::create_echoCtrInfID_DC_Table()
{	strcpy(m_echoCtrInfID_DC_Table[0x00], "无信息");
	strcpy(m_echoCtrInfID_DC_Table[0x01], "未包括来话半回声控制装置");
	strcpy(m_echoCtrInfID_DC_Table[0x02], "包括来话半回声控制装置");
	strcpy(m_echoCtrInfID_DC_Table[0x03], "备用");
}

//去话半回声控制装置请求表示语
void CIsup::create_echoCtrInfID_FE_Table()
{	strcpy(m_echoCtrInfID_FE_Table[0x00], "无信息");
	strcpy(m_echoCtrInfID_FE_Table[0x01], "去话半回声控制装置激活请求");
	strcpy(m_echoCtrInfID_FE_Table[0x02], "去话半回声控制装置去活请求");
	strcpy(m_echoCtrInfID_FE_Table[0x03], "备用");
}

//来话半回声控制装置请求表示语
void CIsup::create_echoCtrInfID_HG_Table()
{	strcpy(m_echoCtrInfID_HG_Table[0x00], "无信息");
	strcpy(m_echoCtrInfID_HG_Table[0x01], "来话半回声控制装置激活请求");
	strcpy(m_echoCtrInfID_HG_Table[0x02], "来话半回声控制装置去活请求");
	strcpy(m_echoCtrInfID_HG_Table[0x03], "备用");
}

//通知预定任选
void CIsup::create_notifySubOpt_Table()
{
	int i;
    for(i=0; i<8; i++)
    { strcpy(m_notifySubOpt_Table[i], "备用");    } 
	strcpy(m_notifySubOpt_Table[0x00], "不知道");
	strcpy(m_notifySubOpt_Table[0x01], "提供不允许");
	strcpy(m_notifySubOpt_Table[0x02], "提供允许,带有改发号码");
	strcpy(m_notifySubOpt_Table[0x03], "提供允许,不带有改发号码");
}

//改发原因
void CIsup::create_redirReason_Table()
{	int i;
    for(i=0; i<16; i++)
    { strcpy(m_redirReason_Table[i], "备用");    } 
	strcpy(m_redirReason_Table[0x00], "不知道");
	strcpy(m_redirReason_Table[0x01], "用户忙");
	strcpy(m_redirReason_Table[0x02], "无应答");
	strcpy(m_redirReason_Table[0x03], "无条件");
	strcpy(m_redirReason_Table[0x04], "在提示期间转向");
	strcpy(m_redirReason_Table[0x05], "转向立即响应");
	strcpy(m_redirReason_Table[0x06], "移动用户不可达");
}


//提供限制表示语
void CIsup::create_presentRestrict_Table()
{
	strcpy(m_presentRestrict_Table[0x00], "提供允许");
	strcpy(m_presentRestrict_Table[0x01], "提供限制");
	strcpy(m_presentRestrict_Table[0x02], "备用");
	strcpy(m_presentRestrict_Table[0x03], "备用");
}

//事件表示语
void CIsup::create_eventID_Table()
{	int i;
    for(i=0; i<128; i++)
    { strcpy(m_eventID_Table[i], "备用");    } 
	strcpy(m_eventID_Table[0x01], "提示");
	strcpy(m_eventID_Table[0x02], "进展");
	strcpy(m_eventID_Table[0x03], "带内信息或适当的码型现在可用");
	strcpy(m_eventID_Table[0x04], "遇忙呼叫前向转移");
	strcpy(m_eventID_Table[0x05], "无应答呼叫前向转移");
	strcpy(m_eventID_Table[0x06], "无条件呼叫前向转移");
}

//自动拥塞级
void CIsup::create_autoCongestLevel_Table()
{	int i;
    for(i=0; i<256; i++)
    { strcpy(m_autoCongestLevel_Table[i], "备用");    } 
	strcpy(m_autoCongestLevel_Table[0x01], "超过拥塞级1");
	strcpy(m_autoCongestLevel_Table[0x02], "超过拥塞级2");
}

//主叫用户地址响应表示语
void CIsup::create_informID_BA_Table()
{	strcpy(m_informID_BA_Table[0x00], "未包括主叫用户地址");
	strcpy(m_informID_BA_Table[0x01], "主叫用户地址不可用");
	strcpy(m_informID_BA_Table[0x02], "备用");
	strcpy(m_informID_BA_Table[0x03], "包括主叫用户地址");
}


//////////////////////////////////////////////////////////
char *CIsup::getH1h0FromTable(BYTE u_index, char *v_pH1h0)
{
    if(u_index >= 0x80)
    {
        sprintf(v_pH1h0, "Reserved for future extension");
    }
    else if(u_index >= 0x40)
    {
        sprintf(v_pH1h0, "Loop prevention");
    }
    else
    {
        sprintf(v_pH1h0, "%s", m_h1h0Table[u_index]);
    }
        
    return v_pH1h0;
}

BOOL CIsup::GetH1H0(BYTE *u_pMsg, DWORD u_msgLength, char *v_pH1H0)
{
    sprintf(v_pH1H0, "%02X", u_pMsg[SS7_ISUP_H1H0_OFFSET]);
    
    return TRUE;
}
BOOL CIsup::GetSls(BYTE *u_pMsg, DWORD u_msgLength, char *v_pSls)
{
    sprintf(v_pSls, "%X", u_pMsg[SS7_ISUP_SLS_OFFSET] & SS7_ISUP_SLS_MASK);
    
    return TRUE;
}
BOOL CIsup::GetCic(BYTE *u_pMsg, DWORD u_msgLength, char *v_pCic)
{
    sprintf(v_pCic, "%X%02X", u_pMsg[SS7_ISUP_CIC_OFFSET + 1] & 0x0F, \
        u_pMsg[SS7_ISUP_CIC_OFFSET]);
            
    return TRUE;
}
BOOL CIsup::GetData(BYTE *u_pMsg, DWORD u_msgLength, char *v_pData)
{
    extern CDecodeApp theApp;
    int dataLength;
    int i, temp;
    
    temp = SS7_ISUP_DATA_OFFSET + MAX_DATA_BYTE_NUMBER - 1;
    if(temp > ((int )u_msgLength))
    {
        dataLength = u_msgLength - SS7_ISUP_DATA_OFFSET;
    }
    else
    {
        dataLength = MAX_DATA_BYTE_NUMBER;
    }
    
    temp = 0;
    for(i=0; i<dataLength; i++)
    {
        theApp.ConvertOneByte(u_pMsg[SS7_ISUP_DATA_OFFSET + i], \
            &v_pData[temp]);
        temp += 3;
    }    
           
    return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -