call forwarding调查

call forwarding介绍

call forwarding是call增值业务;在TS24082中有详细的介绍 呼叫转移有3方用户

  • A:呼叫方;(Calling mobile subscriber side)
  • B:被叫方且设置有呼叫转移业务;(Served mobile subscriber side)
  • C:呼叫转移接受方,即B设置的呼叫转移的接受方;(Forwarded-to mobile subscriber side)

整个流程即:

  • 前提条件 B设置了呼叫转移给C方
  • A打电话给B
  • 满足呼叫转移的4个条件之一, B转移电话给C
  • A和C进行通话

各种呼叫转移流程

CFU 无条件呼叫转移

  • A方流程
     
     
     MS                                                           Network 
                                              SETUP 
      ------------------------------------------------------------------> 
                                             FACILITY 
        <----------------------------------------------------------------- 
                    Facility (Invoke = NotifySS (CFU, SS-Notification)) 
  • B方 没有动作;
  • C方
     
     
     MS                                                           Network 
                                              SETUP 
        < ---------------------------------------------------------------- 
                       Facility (Invoke = NotifySS (CFU, SS-Notification)) 
     Redirecting party BCD number (screening indicator, presentation indicator, redirecting party digits), Redirecting party subaddress 

CFB 用户忙时呼叫转移

  • A方流程
     
     MS                                                                Network 
                                              SETUP 
       ----------------------------------------------------------------------> 
                                             FACILITY 
        <--------------------------------------------------------------------- 
                        Facility (Invoke = NotifySS (CFB, SS-Notification)) 
  • B方
     
     MS                                                                   Network 
                                              SETUP 
        <----------------------------------------------------------------------- 
                                   RELEASE COMPLETE/RELEASE/DISCONNECT 
      -------------------------------------------------------------------------> 
                              ....Transaction Identifier (A-B).... 
                                 ....Cause # 17 (User Busy).... 
     
     
                                      FACILITY (TI=B-X) 
        <------------------------------------------------------------------------ 
                      Facility (Invoke = NotifySS (CFB, SS-Notification)) 
  • C方
     
     MS                                                                  Network 
                                              SETUP 
        < ---------------------------------------------------------------------- 
                        Facility (Invoke = NotifySS (CFB, SS-Notification)) 
     Redirecting party BCD number (screening indicator, presentation indicator, redirecting party digits), Redirecting party subaddress 

CFNRy 无回应呼叫转移

  • A方流程
     
     MS                                                                    Network 
                                              SETUP 
       ---------------------------------------------------------------------------------> 
                                             FACILITY 
        <------------------------------------------------------------------------ 
                        Facility (Invoke = NotifySS (CFNRy, SS-Notification)) 
  • B方
     
     MS                                                               Network 
                                      FACILITY 
       <----------------------------------------------------------------------- 
                     Facility (Invoke = NotifySS (CFNRy, SS-Notification)) 

  • C方
     
     MS                                                                  Network 
                                              SETUP 
        < ------------------------------------------------------------------- 
         Facility (Invoke = NotifySS (CFNRc, SS-Notification))Redirecting party BCD number (screening indicator, presentation indicator, redirecting party digits) 

CFNRc 用户不可达呼叫转移

  • A方流程
     
     MS                                                                   Network 
                                              SETUP 
         -----------------------------------------------------------------------> 
                                             FACILITY 
        <------------------------------------------------------------------------- 
                           Facility (Invoke = NotifySS (CFNRc, SS-Notification)) 
  • B方 没有动作;
  • C方
     
     
     MS                                                           Network 
                                     SETUP 
        < ---------------------------------------------------------------- 
         Facility (Invoke = NotifySS (CFNRc, SS-Notification))Redirecting party BCD number (screening indicator, presentation indicator, redirecting party digits) 

设置呼叫转移

 
 MS                                                                        Network 
                                       REGISTER 
      ------------------------------------------------------------------------> 
                Facility (Invoke = ActivateSS (呼叫转移类型, BasicServiceCode)) 
                                  RELEASE COMPLETE 
     <----------------------------------------------------------------------- 
                      Facility (Return result = DeactivateSS (SS-Status)) 
 
 
 注册失败情况:从网络发以下请求中其中一种: 
                                  RELEASE COMPLETE 
     <- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ---- 
                         Facility (Return error (Error)) 
 
 
                                 RELEASE COMPLETE 
     <- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
                         Facility (Reject (Invoke_problem)) 

取消呼叫转移

 
 MS                                                                      Network 
                                       REGISTER 
      ---------------------------------------------------------------------------> 
                Facility (Invoke = DeactivateSS (呼叫转移类型, BasicServiceCode)) 
                                  RELEASE COMPLETE 
     <--------------------------------------------------------------------------- 
                      Facility (Return result = DeactivateSS (SS-Status)) 
 取消呼叫转移失败情况:从网络发以下请求中其中一种: 
                                  RELEASE COMPLETE 
     <- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
                         Facility (Return error (Error)) 
                                 RELEASE COMPLETE 
     <- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
                         Facility (Reject (Invoke_problem)) 

呼叫转移代码实现

呼叫转移界面显示实现

主要在callnotifer.java中getSuppSvcNotificationText();主要实现了若用户设置好呼叫转移后,发生呼叫转移时以toast形式提示给用户。
主要分下面2个方面(A 打电话给B,B设置呼叫转移到C;)

  • 呼出MO
    • MO_CODE_UNCONDITIONAL_CF_ACTIVE/MO_CODE_SOME_CF_ACTIVE: B激活了呼叫转移功能,若B拨打电话出去时,当modem侧上报Alerting消息里包含了faclity的消息,根据B设置的callforwarding的条件,显示给用户;
    • MO_CODE_CALL_FORWARDED: A拨打电话给B,呼叫转移给C,接收到网络端发过来的facility消息,在用户A上显示此电话是一个呼叫转移call;
  • 呼入MT
    • MT_CODE_FORWARDED_CALL:用户C接到呼叫转移过来的call,接收到网络端发过来的facility消息,在用户C上显示这是一个呼叫转移call;
    • MT_CODE_ADDITIONAL_CALL_FORWARDED:当用户B设置为CFB 或是 CFNRy ,若发生了呼叫转移,接收到网络端发过来的facility消息,在用户B上显示该call已呼叫转移;(CFNRy 没有确定)

SETUP消息中包含facility消息表明此为一个forwarding call

  • cmcall.c
    • cmcall_rpt_proc() 底层上报facility消息到CM侧;
    • cmwcall_rpt_call()
      • 根据cm_rpt_ptr->hdr.cmd ,case:CM_MT_CALL_SS_IND 处理;
      • 若是一个forwarding call,则通知上层,消息为:CM_CALL_EVENT_CALL_BEING_FORWARDED
  • qmi_voice_cm_if.h
    • 把底层上报的消息修改为qmi侧能识别的消息;CM_CALL_EVENT_CALL_BEING_FORWARDED--->QMI_VOICE_CM_IF_EVT_CALL_BEING_FORWARDED
    • qmi_voice_cm_if_fill_and_send_sups_notification_ind()对该消息进行处理;
      • 赋值notify_type然后调用qmi_voice_cm_if_unsol_response();header=QMI_VOICE_CM_IF_CMD_SUPS_NOTIFICATION_IND;
    • qmi_voice_cm_if_unsol_response()对header=QMI_VOICE_CM_IF_CMD_SUPS_NOTIFICATION_IND
      • 再一次进行那个赋值
      • dcc_send_cmd(DCC_QMI_VOICE_CMD, data_ptr);
  • DCC_QMI_VOICE_CMD的情况由qmi_voice_process_cmd()处理
  • qmi_voice.c
    • qmi_voice_process_cmd() header:QMI_VOICE_CM_IF_CMD_SUPS_NOTIFICATION_IND;
    • qmi_voicei_sups_notification_ind()
    • qmi_svc_send_ind(xx,xx,VOICEI_CMD_VAL_SUPS_NOTIFICATION_IND【0x0032】,ind),上报到qcril侧;
  • voice_service_v02.h
    • QMI_VOICE_SUPS_NOTIFICATION_IND_V02 0x0032
  • qcril_qmi_voice.c
    • qcril_qmi_voice_unsol_ind_cb_helper()
      • case:QMI_VOICE_SUPS_NOTIFICATION_IND_V02 --->qcril_qmi_voice_sups_notification_ind_hdlr()
    • qcril_qmi_voice_sups_notification_ind_hdlr()
      • 根据notification_type进行处理。若来电时forwarding call,符合case:NOTIFICATION_TYPE_INCOMING_FORWARDED_CALL_V02;则标明此为forwarding call;上报给RIL侧;
      • 上报消息RIL_UNSOL_SUPP_SVC_NOTIFICATION;该上报没有标明这是什么条件的呼叫转移,只是说明此为一个呼叫转移的电话。

SETUP消息中没有facility消息但包含redirecting number的forwarding call

  • DOCOMO运营商若来电是一个forwarding call不会再SETUP消息中的facility消息中表明此为一个什么条件的forwarding call,而是直接在IEI消息中包含了设置方的号码;
  • 下图是来电的流程图;call <wbr>forwarding调查
阅读更多
换一批

Call Forwarding

10-10

DescriptionnnThanks to computer technology the functionality of phone systems has been greatly enhanced in the last ten years. We have automated menus, sophisticated answering machines, conference call capabilities, group addressing and so on. A common feature of a company's phone system is the ability to set call forwarding. For example, if Bob at the Nobody's Home Company (NHC) goes on vacation, he sets things up so that all calls coming to him are forwarded to his associate Jane. This problem addresses how phone systems might keep track of call forwarding. nThe phones at the NHC all have four digit extensions. Employees can set call forwarding by entering the appropriate information through their telephone interface. If an employee is going to be away they enter the following information: their extension, the time they are leaving, how long they will be away, and the extension that their calls should be forwarded to, with the following constraints: nnAll extensions consist of four digits. nnThe extensions 0000 and 9999 are reserved for special use and will not be entered as information by an employee. nnTimes are recorded in increments of 1 hour and are based on a clock that begins at 0000 at midnight every New Year's Eve. Therefore, when describing the time they are leaving, employees always use an integer between 0000 and 8784 (which is 366*24). The call forwarding system is completely reset at the beginning of the year. nnA call forward set to start at time X for a duration of Y will be in effect from time X to time X+Y inclusive. nnUsers are ``good" about the requests they enter. They follow the format rules. They do not enter a request such that the duration of the request would go past the end of the year. They do not enter two requests for their extension that overlap in time. Even though the users enter correct, clear, non-overlapping information from their own point of view, a degenerate situation can still occur in a call forwarding system, if requests have been made in such a way as to forward a call back to the original target of the call. For example if Bob forwards his calls to Sue, and Sue forwards her calls to Joe, and Joe forwards his calls to Bob then when somebody calls any of these three people their calls would be forwarded forever. To prevent this situation the call forwarding system uses the ``dead end" number 9999. Any calls made to an extension involved in such a degenerate situation will be forwarded to the special 9999 extension. nnInputnnThe first line contains an integer N between 1 and 10 describing how many call forwarding systems will be simulated by your program. Each call forwarding system will be represented by 0 to 100 `source time duration target' lines. These lines represent the requests by the users to set up a call forwarding from the `source' to the `target' starting at the `time' for a length of `duration', and will be in the form `dddd dddd dddd dddd'. A line with 0000 in the `source' position indicates the end of this portion of the input. The call forwarding requests are listed in the order received. They will be followed by 1 or more `time extension' lines, in the form `dddd dddd', in non-decreasing order by `time' representing calls made into the system at `time' to `extension'. A line with 9000 in the `time' position indicates the end of this portion of the input.nOutputnnThe first line of output must read CALL FORWARDING OUTPUT. This will be followed by sections of information about each of the call forwarding systems being simulated. Each of these sections should be headed by the line SYSTEM N, where N is the number (1, 2, ...) of the system. Within the section there should be a line describing the result of each of the calls made into the system, with the format ``AT dddd CALL TO dddd RINGS dddd". The final line of output should read END OF OUTPUT.nSample Inputnn2n1111 0100 0200 2222n1111 0301 0500 4444n2222 0200 0200 3333n3333 0250 1000 1111n7777 1000 2000 7777n0000n0050 1111n0150 1111n0200 1111n0225 2222n0270 1111n0320 1111n0320 3333n0900 3000n1250 3333n1250 7777n9000n0000n3000 1111n9000nSample OutputnnCALL FORWARDING OUTPUTnSYSTEM 1nAT 0050 CALL TO 1111 RINGS 1111nAT 0150 CALL TO 1111 RINGS 2222nAT 0200 CALL TO 1111 RINGS 3333nAT 0225 CALL TO 2222 RINGS 3333nAT 0270 CALL TO 1111 RINGS 9999nAT 0320 CALL TO 1111 RINGS 4444nAT 0320 CALL TO 3333 RINGS 4444nAT 0900 CALL TO 3000 RINGS 3000nAT 1250 CALL TO 3333 RINGS 1111nAT 1250 CALL TO 7777 RINGS 9999nSYSTEM 2nAT 3000 CALL TO 1111 RINGS 1111nEND OF OUTPUT

没有更多推荐了,返回首页