New Version 1.6
[lcr.git] / dss1.cpp
index c8adb27..a5d32bd 100644 (file)
--- a/dss1.cpp
+++ b/dss1.cpp
@@ -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;
@@ -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;
@@ -1064,8 +1088,10 @@ void Pdss1::disconnect_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3
        dec_ie_display(l3m, (unsigned char *)display, sizeof(display));
        end_trace();
 
-       if (cause < 0)
+       if (cause < 0) {
                cause = 16;
+               location = LOCATION_PRIVATE_LOCAL;
+       }
 
        /* release if remote sends us no tones */
        if (!p_m_mISDNport->earlyb) {
@@ -1152,8 +1178,10 @@ void Pdss1::release_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m)
        dec_ie_display(l3m, (unsigned char *)display, sizeof(display));
        end_trace();
 
-       if (cause < 0)
+       if (cause < 0) {
                cause = 16;
+               location = LOCATION_PRIVATE_LOCAL;
+       }
 
        /* sending release to endpoint */
        if (location == LOCATION_PRIVATE_LOCAL)
@@ -1203,8 +1231,10 @@ void Pdss1::release_complete_ind(unsigned int cmd, unsigned int pid, struct l3_m
        if (location == LOCATION_PRIVATE_LOCAL)
                location = LOCATION_PRIVATE_REMOTE;
 
-       if (cause < 0)
+       if (cause < 0) {
                cause = 16;
+               location = LOCATION_PRIVATE_LOCAL;
+       }
 
        /* sending release to endpoint */
        while(p_epointlist) {
@@ -1860,7 +1890,7 @@ void Pdss1::message_information(unsigned int epoint_id, int message_id, union pa
                enc_ie_called_pn(l3m, 0, 1, (unsigned char *)number, max);
                if ((p_m_d_ntmode || p_m_d_tespecial) && display[0]) {
                        enc_ie_display(l3m, (unsigned char *)display);
-                       display = "";
+                       display = (char *)"";
                }
                end_trace();
                p_m_mISDNport->ml3->to_layer3(p_m_mISDNport->ml3, MT_INFORMATION, p_m_d_l3id, l3m);
@@ -1902,7 +1932,6 @@ void Pdss1::message_setup(unsigned int epoint_id, int message_id, union paramete
        memcpy(&p_dialinginfo, &param->setup.dialinginfo, sizeof(p_dialinginfo));
        memcpy(&p_capainfo, &param->setup.capainfo, sizeof(p_capainfo));
        memcpy(&p_redirinfo, &param->setup.redirinfo, sizeof(p_redirinfo));
-//             SCPY(&p_m_tones_dir, param->setup.ext.tones_dir);
        /* screen outgoing caller id */
        do_screen(1, p_callerinfo.id, sizeof(p_callerinfo.id), &p_callerinfo.ntype, &p_callerinfo.present, p_m_mISDNport->ifport->interface);
        do_screen(1, p_callerinfo.id2, sizeof(p_callerinfo.id2), &p_callerinfo.ntype2, &p_callerinfo.present2, p_m_mISDNport->ifport->interface);
@@ -1997,6 +2026,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;
@@ -2035,6 +2070,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;
@@ -2089,6 +2130,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;
@@ -2192,7 +2239,7 @@ 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);
+//     printf("if = %d\n", param->notifyinfo.notify);
        if (param->notifyinfo.notify>INFO_NOTIFY_NONE)
                notify = param->notifyinfo.notify & 0x7f;
        else
@@ -2426,6 +2473,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;