• James Zhang's avatar
    Sigificant changes to the core state machine :) · fa64d395
    James Zhang 提交于
    Visually status of channels will only be DOWN once all resets/blocks are cleared.
    Therefore if any reset/block is active on a channel, the channel state will be in RESTART not DOWN.
    
    Logic Change
    
    SUSPENDED
       -> Originally used as intermediate state. Purpose is to handle a condition
          from any state and go back to the previous state.
          Conditions: such as  block/ucic.
       -> Updated logic is that SUSPEND will be smart enough not to
          go back to just any state.  SUSPEND will only go back to
          UP - if call is still up
          RESTART - if for any reason singaling is not up due to
                    blocks/resets/etc...
          DOWN - if signaling is UP - no resets/blocks
          In this case we avoid infinite loops due to state jumping
          from STATE->SUSPEND->STATE->SUSPEND
    HANGUP_COMPLETE
       -> If call is in use and a RESET comes on a call
          the RESTART state will first try the HANGUP_COMPLETE state.
          HANGUP_COMPLETE will Tx RSC and wait for it.
          Reset Response handle was updated if current state HANGUP/HANGUP_COMPLETE
          go back to RESTART state.  Which will call HANGUP COMPLETE due to
          channel in usage and HANDLE_COMPLETE will clear RESET condition and go back to DOWN
    TERMINATING
       -> This state is used to hangup a call. Sends a signal to FS.
       -> Usually TERMINATING state stays in TERMINATING until FS comes back.
       -> I added a condition in case of RESET on the line though TERMINATING
          will go back to RESTART.
          This allows us to process RESET commands even though we are
          in the middle of hanging up.
    Block Handler
       If BLO is received on circuit is already blocked,
       we failed to trasmit BLA.  We should always ack the BLO
       even though it was alrady in blocked state.
    
    Fixed & Tested
    
    S UP --> place call --> relay down --> hangup --> relay up-->
       Confirm that call is hungup properly.
       In this condition, on relay up the circuit  is put into RESET.
       Since circuit is still in use, it will HANGUP first, then RESET
       then clear pending BLOCK.
    
    S UP --> place call -> Tx RSC on call.
       Used to cause infitie loop
       Confirm call is cleard properly
    
    Re-Tested
    
    S UP --> place call -> Rx RSC on call
       Confirm call is cleard properly
    
    S UP --> place call -> Rx BLO -> hangup -> place call
       Confirm call cannot be placed
       Tx UBL
       Confirm call can be placed
    
    S UP --> place call -> Rx BLO -> Tx BLO -> hangup -> place call
       Confirm call cannot be placed
       Tx UBL
       Confirm call cannot be placed
       Rx UBL
       Confirm call can be placed
    
    S UP --> place call -> relay down --> Rx BLO on channel from telco
         --> relay up
       Confirm that relay detects the BLO channels even though relay was down
    
    Tx AIS -> S Start -> Confirm HW block -> Tx AIS off
       -> Confirm hw block clear and UP
    
    S UP -> Tx AIS -> Confirm HW block -> Tx AIS off
       -> confirm hw block clear and UP
    
    S UP -> relay down -> Tx AIS -> relay up -> Tx AIS off
       -> confirm all back up
       -> In this condition BLO will not go out due to PAUSE
    
    S UP -> Tx AIS -> relay down -> Tx AIS off -> relay up
       -> confirm all back up
       -> In this condition UBL will not go out due to PAUSE
    fa64d395
名称
最后提交
最后更新
build 正在载入提交数据...
clients/flex 正在载入提交数据...
cmake_modules 正在载入提交数据...
conf 正在载入提交数据...
debian 正在载入提交数据...
docs 正在载入提交数据...
dtd 正在载入提交数据...
freeswitch.xcodeproj 正在载入提交数据...
fscomm 正在载入提交数据...
htdocs 正在载入提交数据...
libs 正在载入提交数据...
patches 正在载入提交数据...
scripts 正在载入提交数据...
src 正在载入提交数据...
support-d 正在载入提交数据...
w32 正在载入提交数据...
web 正在载入提交数据...
.gitignore 正在载入提交数据...
.version.in 正在载入提交数据...
CMakeLists.txt 正在载入提交数据...
Freeswitch.2005.unsupported.sln 正在载入提交数据...
Freeswitch.2008.express.sln 正在载入提交数据...
Freeswitch.2008.sln 正在载入提交数据...
Freeswitch.2008.sln.debug.bat 正在载入提交数据...
Freeswitch.2008.sln.release.bat 正在载入提交数据...
Freeswitch.2010.express.sln 正在载入提交数据...
Freeswitch.2010.sln 正在载入提交数据...
INSTALL 正在载入提交数据...
Makefile.am 正在载入提交数据...
acinclude.m4 正在载入提交数据...
bootstrap.sh 正在载入提交数据...
configure.in 正在载入提交数据...
devel-bootstrap.sh 正在载入提交数据...
freeswitch-sounds-en-us-callie.spec 正在载入提交数据...
freeswitch-sounds-ru-RU-elena.spec 正在载入提交数据...
freeswitch.spec 正在载入提交数据...