X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=dss1.cpp;h=75ff448a5ae824ec68576a2d7b59ae91a9bbd5ab;hp=1191b9eb2c6f562d79e3c2f67ee60fc02a4cfb9a;hb=473d6569efcad130f9a5044b182b75a1c07a1eee;hpb=4ec1520c572c4099b478897e4a6ee3a28622ca44 diff --git a/dss1.cpp b/dss1.cpp index 1191b9e..75ff448 100644 --- a/dss1.cpp +++ b/dss1.cpp @@ -402,7 +402,7 @@ void Pdss1::setup_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) int bearer_coding, bearer_capability, bearer_mode, bearer_rate, bearer_multi, bearer_user; int exclusive, channel; int ret; - unsigned char keypad[32] = ""; + unsigned char keypad[33] = ""; unsigned char useruser[128]; int useruser_len = 0, useruser_protocol; class Endpoint *epoint; @@ -473,6 +473,12 @@ void Pdss1::setup_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) case 0: p_callerinfo.screen = INFO_SCREEN_USER; break; + case 1: + p_callerinfo.screen = INFO_SCREEN_USER_VERIFIED_PASSED; + break; + case 2: + p_callerinfo.screen = INFO_SCREEN_USER_VERIFIED_FAILED; + break; default: p_callerinfo.screen = INFO_SCREEN_NETWORK; break; @@ -516,6 +522,12 @@ void Pdss1::setup_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) case 0: p_callerinfo.screen2 = INFO_SCREEN_USER; break; + case 1: + p_callerinfo.screen2 = INFO_SCREEN_USER_VERIFIED_PASSED; + break; + case 2: + p_callerinfo.screen2 = INFO_SCREEN_USER_VERIFIED_FAILED; + break; default: p_callerinfo.screen2 = INFO_SCREEN_NETWORK; break; @@ -574,6 +586,12 @@ void Pdss1::setup_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) case 0: p_redirinfo.screen = INFO_SCREEN_USER; break; + case 1: + p_redirinfo.screen = INFO_SCREEN_USER_VERIFIED_PASSED; + break; + case 2: + p_redirinfo.screen = INFO_SCREEN_USER_VERIFIED_FAILED; + break; default: p_redirinfo.screen = INFO_SCREEN_NETWORK; break; @@ -728,7 +746,7 @@ void Pdss1::setup_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) void Pdss1::information_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) { int type, plan; - unsigned char keypad[32] = "", display[128] = ""; + unsigned char keypad[33] = "", display[128] = ""; struct lcr_msg *message; l1l2l3_trace_header(p_m_mISDNport, this, L3_INFORMATION_IND, DIRECTION_IN); @@ -753,7 +771,7 @@ void Pdss1::information_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l p_dialinginfo.ntype = INFO_NTYPE_UNKNOWN; break; } - SCAT(p_dialinginfo.display, (char *)display); + SCPY(p_dialinginfo.display, (char *)display); message = message_create(p_serial, ACTIVE_EPOINT(p_epointlist), PORT_TO_EPOINT, MESSAGE_INFORMATION); memcpy(&message->param.information, &p_dialinginfo, sizeof(struct dialing_info)); message_put(message); @@ -1007,6 +1025,12 @@ void Pdss1::connect_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m) case 0: p_connectinfo.screen = INFO_SCREEN_USER; break; + case 1: + p_connectinfo.screen = INFO_SCREEN_USER_VERIFIED_PASSED; + break; + case 2: + p_connectinfo.screen = INFO_SCREEN_USER_VERIFIED_FAILED; + break; default: p_connectinfo.screen = INFO_SCREEN_NETWORK; break; @@ -1876,8 +1900,6 @@ void Pdss1::message_information(unsigned int epoint_id, int message_id, union pa } -int newteid = 0; - /* MESSAGE_SETUP */ void Pdss1::message_setup(unsigned int epoint_id, int message_id, union parameter *param) { @@ -2002,6 +2024,12 @@ void Pdss1::message_setup(unsigned int epoint_id, int message_id, union paramete case INFO_SCREEN_USER: screen = 0; break; + case INFO_SCREEN_USER_VERIFIED_PASSED: + screen = 1; + break; + case INFO_SCREEN_USER_VERIFIED_FAILED: + screen = 2; + break; default: /* INFO_SCREEN_NETWORK */ screen = 3; break; @@ -2040,6 +2068,12 @@ void Pdss1::message_setup(unsigned int epoint_id, int message_id, union paramete case INFO_SCREEN_USER: screen2 = 0; break; + case INFO_SCREEN_USER_VERIFIED_PASSED: + screen2 = 1; + break; + case INFO_SCREEN_USER_VERIFIED_FAILED: + screen2 = 2; + break; default: /* INFO_SCREEN_NETWORK */ screen2 = 3; break; @@ -2064,6 +2098,9 @@ void Pdss1::message_setup(unsigned int epoint_id, int message_id, union paramete enc_ie_called_pn(l3m, 0, 1, (unsigned char *)p_dialinginfo.id, max); SCPY(p_m_d_queue, p_dialinginfo.id + max); } + /* keypad */ + if (p_dialinginfo.keypad[0]) + enc_ie_keypad(l3m, (unsigned char *)p_dialinginfo.keypad); /* sending complete */ if (p_dialinginfo.sending_complete) enc_ie_complete(l3m, 1); @@ -2094,6 +2131,12 @@ void Pdss1::message_setup(unsigned int epoint_id, int message_id, union paramete case INFO_SCREEN_USER: screen = 0; break; + case INFO_SCREEN_USER_VERIFIED_PASSED: + screen = 1; + break; + case INFO_SCREEN_USER_VERIFIED_FAILED: + screen = 2; + break; default: /* INFO_SCREE_NETWORK */ screen = 3; break; @@ -2197,7 +2240,14 @@ void Pdss1::message_notify(unsigned int epoint_id, int message_id, union paramet int notify; int plan = 0, type = -1, present = 0; - printf("if = %d\n", param->notifyinfo.notify); + if (p_m_mISDNport->ifport->nonotify) { + l1l2l3_trace_header(p_m_mISDNport, this, L3_NOTIFY_REQ, DIRECTION_OUT); + add_trace("info", NULL, "blocked by config"); + end_trace(); + return; + } + +// printf("if = %d\n", param->notifyinfo.notify); if (param->notifyinfo.notify>INFO_NOTIFY_NONE) notify = param->notifyinfo.notify & 0x7f; else @@ -2431,6 +2481,12 @@ void Pdss1::message_connect(unsigned int epoint_id, int message_id, union parame case INFO_SCREEN_USER: screen = 0; break; + case INFO_SCREEN_USER_VERIFIED_PASSED: + screen = 1; + break; + case INFO_SCREEN_USER_VERIFIED_FAILED: + screen = 2; + break; default: /* INFO_SCREE_NETWORK */ screen = 3; break;