Исходящие звонки заработали, я даже удивился
Теперь входящие
Объявляем
Код: Выделить всё
fptr_regstate(long l1, long l2),long,C,type
my_regstate(long l1, long l2),long,C
fptr_callstate(long l1, long l2),long,C,type
my_callstate(long l1, long l2),long,C
fptr_callincoming(long l1, *cstring uri2),long,C,type
my_callincoming(long l1, *cstring uri2),long,C
MODULE('pjsipdll.dll')
SIP_init(),LONG,RAW,C,NAME('dll_init')
SIP_registerAccount(*CSTRING uri, *CSTRING reguri, *CSTRING nam, *CSTRING username, *CSTRING pass, *CSTRING proxy, bool isdefault),LONG,RAW,C,NAME('dll_registerAccount')
SIP_onRegStateCallback(fptr_regstate cb),long,RAW,C,name('onRegStateCallback')
SIP_onCallStateCallback(fptr_callstate cb),long,RAW,C,name('onCallStateCallback')
SIP_onCallIncoming(fptr_callincoming cb),long,RAW,C,name('onCallIncoming')
SIP_Main(),long,RAW,C,name('dll_Main')
SIP_makeCall(long accountId, *CSTRING uri),LONG,RAW,C,NAME('dll_makeCall')
END
Добавляем процедуры
Код: Выделить всё
my_regstate procedure(LONG l1, LONG l2)
code
state1=l1
state2=l2
return 0
my_callstate procedure(LONG l1, LONG l2)
code
call1=l1
call2=l2
return 0
my_callincoming procedure(LONG l1, *CSTRING uri2)
code
call1=l1
calluri=uri2
return 0
Логинимся
Код: Выделить всё
SIP_onRegStateCallback(my_regstate)
SIP_onCallStateCallback(my_callstate)
SIP_onCallIncoming(my_callincoming)
a#=SIP_init()
c#=SIP_Main()
uri='sip:'&clip(username)&'@'&clip(hostname)
reguri='sip:'&clip(hostname)&':5060;transport=tcp'
nam='*'
proxy=''
isdefault=0
account=SIP_registerAccount(uri,reguri,nam,username,pass,proxy,isdefault)
Что имеем:
Если прототипы С то на входящем звонке идёт вылет
Если меняю прототипы на Pascal то просто ничего не происходит
calluri, call2 и state2 это глобальные переменные которые выведены на окно которое для простоты обновляется по таймеру
call2 и state2 при логине и исходящем звонке отображаются нормально