📄 conf.bas
字号:
channels(ch).dtmf_str = ""
End If
Else
'never forget to store the recent dtmf.
channels(ch).dtmf_str = channels(ch).dtmf_str + dtmf
End If
' // Arc 8
ElseIf (channels(ch).state_conference = CO_IN_CONFERENCE) Then
dtmf = Chr(&HFFFF& And lParam)
Select Case dtmf
Case "*"
'verbose infomation
SsmGetConfChInfo ch, GrpId, MmbrId, JoinMode, IsSpeaking, SilenceTime
SsmGetConfGrpInfo GrpId, TotalMember, TotalSpeaker, TotalSpeaking
SsmClearFileList ch
'Play "group id is ...".
SsmAddToFileList ch, "wav\\j1.wav", -1, 0, -1
add_list ch, GrpId
'Play "member id is ...".
SsmAddToFileList ch, "wav\\j2.wav", -1, 0, -1
add_list ch, MmbrId
'Play "join mode is ...".
SsmAddToFileList ch, "wav\\j3.wav", -1, 0, -1
add_list ch, JoinMode
'Play "is_speaking is ...".
SsmAddToFileList ch, "wav\\j4.wav", -1, 0, -1
add_list ch, IsSpeaking
'Play "silence time is ...".
SsmAddToFileList ch, "wav\\j5.wav", -1, 0, -1
add_list ch, SilenceTime
'play "total member is ...".
SsmAddToFileList ch, "wav\\j6.wav", -1, 0, -1
add_list ch, TotalMember
'Play "total speaker is ...".
SsmAddToFileList ch, "wav\\j7.wav", -1, 0, -1
add_list ch, TotalSpeaker
'Play "total speaking is ...".
SsmAddToFileList ch, "wav\\j8.wav", -1, 0, -1
add_list ch, TotalSpeaking
SsmPlayFileList ch
Case "9"
'Stop moving freq
'SsmSetVoiceEffect ch, 128
Case "1"
'Moving freq up, like a woman
'SsmSetVoiceEffect(ch, 220);
Case "2"
'Moving freq down, like a man
'SsmSetVoiceEffect(ch, 70);
Case "#"
SsmPlayFile ch, "wav\\h.wav", -1, 0, -1
channels(ch).state_conference = CO_WHO_TO_TALK_SECURELY
Case Else
'Error! but no operation needed!
End Select
'// Arc 10
ElseIf (channels(ch).state_conference = CO_WHO_TO_TALK_SECURELY) Then
dtmf = Chr(&HFFFF& And lParam)
Select Case dtmf
Case "#"
'Exit talking securely
If (Len(channels(ch).dtmf_str) = 0) Then
If (channels(ch).ch_to_talk_securely >= 0) Then
SsmStopLinkFrom ch, channels(ch).ch_to_talk_securely
SsmExitConfGroup ch, False
SsmJoinConfGroup channels(ch).conf_to_join, ch, channels(ch).last_join_mode, 0, False, False
channels(ch).ch_to_talk_securely = -1
SsmPlayFile ch, "wav\\o.wav", -1, 0, -1
End If
'Start talking securely
Else
If Val(channels(ch).dtmf_str) <> ch And Val(channels(ch).dtmf_str) < 1000 Then
channels(ch).ch_to_talk_securely = Val(channels(ch).dtmf_str)
If (is_same_group(ch, channels(ch).ch_to_talk_securely)) Then
Dim tmp As Long
Dim tmp2 As Integer
Dim tmp3 As Long
SsmGetConfChInfo ch, tmp, tmp, channels(ch).last_join_mode, tmp2, tmp3
SsmExitConfGroup ch, False
SsmJoinConfGroup channels(ch).conf_to_join, _
ch, 2, 0, False, False
SsmLinkFrom ch, channels(ch).ch_to_talk_securely
SsmPlayFile ch, "wav\\n.wav", -1, 0, -1
Else
channels(ch).ch_to_talk_securely = -1
SsmClearFileList ch
SsmAddToFileList ch, "wav\\i.wav", -1, 0, -1
SsmPlayFileList ch
End If
End If
channels(ch).dtmf_str = ""
End If
channels(ch).state_conference = CO_IN_CONFERENCE
Case Else
channels(ch).dtmf_str = channels(ch).dtmf_str + dtmf
End Select
'// Arc 11
ElseIf (channels(ch).state_conference = CO_HOW_TO_JOIN) Then
dtmf = Chr(&HFFFF& And lParam)
Select Case dtmf
'Five entries, corresponding to five join modes.
Case "1", "2", "3", "4", "5"
If (SsmJoinConfGroup(channels(ch).conf_to_join, ch, Val(dtmf) - 1, 0, False, False) = 0) Then
SsmStopPlayFileList get_chs_master(ch)
SsmSetPlayDest get_chs_master(ch), 1
SsmClearFileList get_chs_master(ch)
add_list get_chs_master(ch), ch
SsmAddToFileList get_chs_master(ch), "wav\\f.wav", -1, 0, -1
SsmStopPlayFile get_chs_master(ch)
SsmPlayFileList get_chs_master(ch)
channels(get_chs_master(ch)).IsPlayingBgSound = False
'SsmBindVCh(ch);
'SsmSetVoiceEffect(ch, 128);
channels(ch).state_conference = CO_IN_CONFERENCE
Else
SsmClearFileList ch
SsmAddToFileList ch, "wav\\p.wav", -1, 0, -1
SsmAddToFileList ch, "wav\\c.wav", -1, 0, -1
SsmPlayFileList ch
End If
'No specified join mode.
Case Else
SsmClearFileList ch
SsmAddToFileList ch, "wav\\e.wav", -1, 0, -1
SsmAddToFileList ch, "wav\\c.wav", -1, 0, -1
SsmPlayFileList ch
End Select
End If
'Here is the first step in conf flowchart.
Case TO_START
If (channels(ch).state_conference = CO_IDLE) Then
SsmSetDtmfStopPlay ch, True
SsmPlayFile ch, "wav\\a.wav", -1, 0, -1
channels(ch).state_conference = CO_CREATE_OR_JOIN
channels(ch).dtmf_str = ""
End If
'Here is the last step in conf flowchart.
Case TO_END
If (channels(ch).state_conference = CO_CREATE_OR_JOIN) Then
If (SsmCheckPlay(ch) = 0) Then
SsmStopPlay ch
End If
SsmSetDtmfStopPlay ch, False
channels(ch).state_conference = CO_IDLE
ElseIf (channels(ch).state_conference = CO_HOW_TO_JOIN) Then
If (channels(ch).creater = True) Then
i = search_appoint_confgrp(channels(ch).conf_to_join)
SsmStopRecToFile Conf2Master(i).nMaster
channels(Conf2Master(i).nMaster).master = MASTER_IDLE
SsmFreeConfGroup channels(ch).conf_to_join
Conf2Master(i).nConfGrpId = -1
Conf2Master(i).nMaster = -1
Conf2Master(i).bInUse = False
End If
If (SsmCheckPlay(ch) = 0) Then
SsmStopPlay ch
End If
SsmSetDtmfStopPlay ch, False
channels(ch).state_conference = CO_IDLE
ElseIf (channels(ch).state_conference = CO_IN_CONFERENCE Or _
channels(ch).state_conference = CO_WHO_TO_TALK_SECURELY) Then
SsmSetPlayDest get_chs_master(ch), 1
SsmStopPlayFileList get_chs_master(ch)
SsmClearFileList get_chs_master(ch)
add_list get_chs_master(ch), ch
SsmAddToFileList get_chs_master(ch), "wav\\g.wav", -1, 0, -1
SsmStopPlayFile get_chs_master(ch)
SsmPlayFileList get_chs_master(ch)
channels(get_chs_master(ch)).IsPlayingBgSound = False
SsmGetConfChInfo ch, GrpId, MmbrId, JoinMode, IsSpeaking, SilenceTime
SsmGetConfGrpInfo GrpId, TotalMember, TotalSpeaker, TotalSpeaking
'//SsmSetVoiceEffect(ch, 128);
'//SsmUnBindVCh(ch);
If (TotalMember = 2) Then
SsmStopRecToFile get_chs_master(ch)
SsmExitConfGroup ch, False
If (channels(ch).ch_to_talk_securely >= 0) Then
SsmStopLinkFrom ch, channels(ch).ch_to_talk_securely
channels(ch).ch_to_talk_securely = -1
End If
channels(get_master(GrpId)).master = MASTER_IDLE
SsmFreeConfGroup GrpId
i = search_appoint_confgrp(GrpId)
Conf2Master(i).nConfGrpId = -1
Conf2Master(i).nMaster = -1
Conf2Master(i).bInUse = False
Else
If (channels(ch).ch_to_talk_securely >= 0) Then
SsmStopLinkFrom ch, channels(ch).ch_to_talk_securely
channels(ch).ch_to_talk_securely = -1
End If
SsmExitConfGroup ch, False
End If
If (SsmCheckPlay(ch) = 0) Then
SsmStopPlay ch
End If
SsmSetDtmfStopPlay ch, False
channels(ch).state_conference = CO_IDLE
End If
End Select
EventCallbackProc = 0
End Function
Public Function CallbackPt(ByVal PtValue As Long) As Long
CallbackPt = PtValue
End Function
'Get its master channel of the parameter 'conf'
Function get_master(ByVal Conf As Integer) As Integer
get_master = Conf2Master(search_appoint_confgrp(Conf)).nMaster
End Function
'Get master channel of the conf that parameter 'channel' joined.
Function get_chs_master(ByVal ch As Integer) As Integer
get_chs_master = channels(ch).nMaster
End Function
'get an idle channel for the master from the array master
Function get_idle() As Integer
Dim i%
For i = 0 To total_ch - 1
If (channels(i).master = MASTER_IDLE) Then
get_idle = i
Exit Function
End If
Next i
get_idle = -1
End Function
'check whether the two channel are in the same conference
Function is_same_group(ByVal ch1 As Integer, ByVal ch2 As Long) As Boolean
Dim group1 As Long
Dim group2 As Long
Dim tmp As Long
Dim tmp2 As Integer
Dim tmp3 As Long
If (SsmGetConfChInfo(ch1, group1, tmp, tmp2, tmp2, tmp3) = -1) Then
is_same_group = False
End If
If (SsmGetConfChInfo(ch2, group2, tmp, tmp2, tmp2, tmp3) = -1) Then
is_same_group = False
End If
If group1 = group2 Then
is_same_group = True
Else
is_same_group = False
End If
End Function
Function search_idle_confgrp() As Integer
Dim i%
For i = 0 To master_num - 1
If (Conf2Master(i).nConfGrpId = -1) Then
search_idle_confgrp = i
Exit Function
End If
Next i
search_idle_confgrp = -1
End Function
Function search_appoint_confgrp(ByVal grp As Integer) As Integer
Dim i%
For i = 0 To master_num - 1
If Conf2Master(i).nConfGrpId = grp Then
search_appoint_confgrp = i
Exit Function
End If
Next i
search_appoint_confgrp = -1
End Function
Function add_list(ByVal ch As Integer, ByVal num As Long)
Dim a%
Dim d%
Dim s As String
Dim file As String
If num = 0 Then
SsmAddToFileList ch, "wav\\0.wav", -1, 0, -1
Else
a = Log(num) / Log(10)
Do While a >= 0
'Get first bit (10-based)
d = num \ (10 ^ a)
num = num - d * (10 ^ a)
a = a - 1
s = Format(d)
'Cat a filename
file = "wav\\" + s + ".wav"
'Add to the playlist
SsmAddToFileList ch, file, -1, 0, -1
Loop
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -