|
@@ -556,6 +556,22 @@ void CSIPEntity::OnStarted()
|
|
|
GetFunction()->SetTimer(2, this, 3200);
|
|
|
}
|
|
|
|
|
|
+ Error = GetLocalIP();
|
|
|
+ if (Error != 0) {
|
|
|
+ CSimpleStringA strErrMsg = "获取本地 IP 地址失败,请检查本地网络是否连接!";
|
|
|
+ LogWarn(Severity_Middle, Error_NetBroken, ERROR_MOD_SIP_GET_LOCAL_IP_FAILED, strErrMsg.GetData());
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ CSmartPointer<IEntityFunction> Func = GetFunction();
|
|
|
+ CSimpleStringA strValue("");
|
|
|
+ Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State %s.", strValue.GetData());
|
|
|
+ }
|
|
|
+
|
|
|
+ LogEvent(Severity_Middle, LOG_EVT_MOD_SIPPHONE_STARTED_SUCCESS, "sipphone entity started successfully.");
|
|
|
+ LogWarn(Severity_Low, Error_Debug, EVENT_MOD_SIP_ENTITY_STARTED, "sipphone entity started.");
|
|
|
+
|
|
|
#ifdef RVC_OS_WIN
|
|
|
if (!m_pAudioMgr || !m_bAudioMgrInited){
|
|
|
return;
|
|
@@ -592,14 +608,6 @@ void CSIPEntity::OnStarted()
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
- Error = GetLocalIP();
|
|
|
- if (Error != 0) {
|
|
|
- CSimpleStringA strErrMsg = "获取本地 IP 地址失败,请检查本地网络是否连接!";
|
|
|
- LogWarn(Severity_Middle, Error_NetBroken, ERROR_MOD_SIP_GET_LOCAL_IP_FAILED, strErrMsg.GetData());
|
|
|
- }
|
|
|
-
|
|
|
- LogEvent(Severity_Middle, LOG_EVT_MOD_SIPPHONE_STARTED_SUCCESS, "sipphone entity started successfully.");
|
|
|
- LogWarn(Severity_Low, Error_Debug, EVENT_MOD_SIP_ENTITY_STARTED, "sipphone entity started.");
|
|
|
}
|
|
|
|
|
|
|
|
@@ -822,13 +830,14 @@ ErrorCodeEnum CSIPEntity::__OnStart(ErrorCodeEnum preOperationError)
|
|
|
audiomgr_callback_t t_callback = { 0 };
|
|
|
t_callback.debug = &__audiomgrlog;
|
|
|
m_pAudioMgr = CreateAudioMgrObj(&t_callback);
|
|
|
- if (0 == m_pAudioMgr->audio_mgr_initialize()) {
|
|
|
+ if (m_pAudioMgr && 0 == m_pAudioMgr->audio_mgr_initialize()) {
|
|
|
m_bAudioMgrInited = true;
|
|
|
}
|
|
|
else {
|
|
|
LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SIPPHONE_AUDIOMGR_INITIAL_FAILED, "audio manager initialize failed!");
|
|
|
}
|
|
|
-
|
|
|
+ SetSoundCardSysVar(SOUNDCARD_INIT_STATE);
|
|
|
+
|
|
|
m_eDeviceType = RvcGetDeviceType();
|
|
|
m_stVideoParam.bActiveInspect = 0;
|
|
|
m_stVideoParam.bShowActiveImg = 0;
|
|
@@ -848,30 +857,38 @@ ErrorCodeEnum CSIPEntity::__OnStart(ErrorCodeEnum preOperationError)
|
|
|
if (Error != Error_Succeed) {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load config failed!");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (IsPostAudioConfigInfo()) {
|
|
|
LogWarn(Severity_Low, Error_Debug, EVENT_MOD_SIP_AUDIO_DEVICE_INFO, generateAudioInfoJson(conf.audio_handfree_in_dev, conf.audio_handfree_out_dev, conf.audio_pickup_in_dev, conf.audio_pickup_out_dev).GetData());
|
|
|
}
|
|
|
else {
|
|
|
//有配置为空的,进关门页
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("audio config is invalid.");
|
|
|
+ SetSoundCardSysVar(SOUNDCARD_BOTH_ERROR);
|
|
|
return Error_Param;
|
|
|
}
|
|
|
|
|
|
uint32_t uCheckRet = CheckAudioDevice();
|
|
|
if (RVC_AUDIO_NO_ERROR == uCheckRet) {
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("no audio device config error.");
|
|
|
+ SetSoundCardSysVar(SOUNDCARD_NO_ERROR);
|
|
|
}
|
|
|
else {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("error audio device number is %d.", countnum(uCheckRet));
|
|
|
if (countnum(uCheckRet) >= 3) { //故障设备数大于3个或以上
|
|
|
+ SetSoundCardSysVar(SOUNDCARD_BOTH_ERROR);
|
|
|
return Error_Param;
|
|
|
}
|
|
|
|
|
|
- if (uCheckRet = RVC_AUDIO_HANDFREEIN_ERROR | RVC_AUDIO_HANDFREEOUT_ERROR) {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("can't find usb audio device.");
|
|
|
+ if ((uCheckRet == (RVC_AUDIO_HANDFREEIN_ERROR | RVC_AUDIO_HANDFREEOUT_ERROR)) || (uCheckRet == RVC_AUDIO_HANDFREEIN_ERROR) || (uCheckRet == RVC_AUDIO_HANDFREEOUT_ERROR)) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("can't find usb audio device.");
|
|
|
+ SetSoundCardSysVar(SOUNDCARD_HANDFREE_ERROR);
|
|
|
HandleUSBAudioDeviceErrorEvent();
|
|
|
}
|
|
|
+
|
|
|
+ if ((uCheckRet == (RVC_AUDIO_PICKUPIN_ERROR | RVC_AUDIO_PICKUPOUT_ERROR))|| (uCheckRet == RVC_AUDIO_PICKUPIN_ERROR) || (uCheckRet == RVC_AUDIO_PICKUPOUT_ERROR)) {
|
|
|
+ SetSoundCardSysVar(SOUNDCARD_PICKUP_ERROR);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int nhandfreeout = 0;
|
|
@@ -1104,7 +1121,7 @@ void CSIPEntity::OnReceivePkt(int type, int sub_type, const char *buffer, int si
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
- else if((sub_type == ACM_SET_PICKUP_OUTVOLUMN)&&(eStand2sType == m_eDeviceType))
|
|
|
+ else if(sub_type == ACM_SET_PICKUP_OUTVOLUMN)
|
|
|
{
|
|
|
CVolumnValue num;
|
|
|
SpBuffer buf;
|
|
@@ -1113,16 +1130,10 @@ void CSIPEntity::OnReceivePkt(int type, int sub_type, const char *buffer, int si
|
|
|
#ifdef RVC_OS_WIN
|
|
|
if (m_pKeeperOut[DEV_PICKUP])
|
|
|
{
|
|
|
- if(eStand2sType == m_eDeviceType){
|
|
|
- volume_keeper_change(m_pKeeperOut[DEV_PICKUP],num.nValue);
|
|
|
- m_kept_volume_out[DEV_PICKUP] = num.nValue;
|
|
|
- SendAudioDeviceVolumn(DEVICE_PICKUP_OUT);
|
|
|
- SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE],m_kept_volume_out[DEV_PICKUP],m_kept_volume_in[DEV_HANDFREE],m_kept_volume_in[DEV_PICKUP]);
|
|
|
- }
|
|
|
- else //pad版屏蔽当前PICKUP音量设置
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("PAD type, ignore pickupout volume adj");
|
|
|
- }
|
|
|
+ volume_keeper_change(m_pKeeperOut[DEV_PICKUP],num.nValue);
|
|
|
+ m_kept_volume_out[DEV_PICKUP] = num.nValue;
|
|
|
+ SendAudioDeviceVolumn(DEVICE_PICKUP_OUT);
|
|
|
+ SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE],m_kept_volume_out[DEV_PICKUP],m_kept_volume_in[DEV_HANDFREE],m_kept_volume_in[DEV_PICKUP]);
|
|
|
}
|
|
|
else {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("PICKUP out volume keeper create failed!");
|
|
@@ -1130,17 +1141,10 @@ void CSIPEntity::OnReceivePkt(int type, int sub_type, const char *buffer, int si
|
|
|
#else
|
|
|
if (m_pAudioMgr)
|
|
|
{
|
|
|
- if (eStand2sType == m_eDeviceType)
|
|
|
- {
|
|
|
- m_pAudioMgr->audio_set_device_volume(num.nValue, conf.audio_pickup_out_dev, false);
|
|
|
- m_kept_volume_out[DEV_PICKUP] = num.nValue;
|
|
|
- SendAudioDeviceVolumn(DEVICE_PICKUP_OUT);
|
|
|
- SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE], m_kept_volume_out[DEV_PICKUP], m_kept_volume_in[DEV_HANDFREE], m_kept_volume_in[DEV_PICKUP]);
|
|
|
- }
|
|
|
- else //pad版屏蔽当前PICKUP音量设置
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("PAD type, ignore pickupout volume adj");
|
|
|
- }
|
|
|
+ m_pAudioMgr->audio_set_device_volume(num.nValue, conf.audio_pickup_out_dev, false);
|
|
|
+ m_kept_volume_out[DEV_PICKUP] = num.nValue;
|
|
|
+ SendAudioDeviceVolumn(DEVICE_PICKUP_OUT);
|
|
|
+ SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE], m_kept_volume_out[DEV_PICKUP], m_kept_volume_in[DEV_HANDFREE], m_kept_volume_in[DEV_PICKUP]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1179,7 +1183,7 @@ void CSIPEntity::OnReceivePkt(int type, int sub_type, const char *buffer, int si
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
- else if((sub_type == ACM_SET_PICKUP_INVOLUMN)&&(eStand2sType == m_eDeviceType))
|
|
|
+ else if(sub_type == ACM_SET_PICKUP_INVOLUMN)
|
|
|
{
|
|
|
CVolumnValue num;
|
|
|
SpBuffer buf;
|
|
@@ -1188,17 +1192,10 @@ void CSIPEntity::OnReceivePkt(int type, int sub_type, const char *buffer, int si
|
|
|
#ifdef RVC_OS_WIN
|
|
|
if (m_pKeeperIn[DEV_PICKUP])
|
|
|
{
|
|
|
- if (eStand2sType == m_eDeviceType)
|
|
|
- {
|
|
|
- volume_keeper_change(m_pKeeperIn[DEV_PICKUP], num.nValue);
|
|
|
- m_kept_volume_in[DEV_PICKUP] = num.nValue;
|
|
|
- SendAudioDeviceVolumn(DEVICE_PICKUP_IN);
|
|
|
- SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE], m_kept_volume_out[DEV_PICKUP], m_kept_volume_in[DEV_HANDFREE], m_kept_volume_in[DEV_PICKUP]);
|
|
|
- }
|
|
|
- else //pad版屏蔽当前PICKUP音量设置
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("PAD type, ignore pickupin volume adj");
|
|
|
- }
|
|
|
+ volume_keeper_change(m_pKeeperIn[DEV_PICKUP], num.nValue);
|
|
|
+ m_kept_volume_in[DEV_PICKUP] = num.nValue;
|
|
|
+ SendAudioDeviceVolumn(DEVICE_PICKUP_IN);
|
|
|
+ SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE], m_kept_volume_out[DEV_PICKUP], m_kept_volume_in[DEV_HANDFREE], m_kept_volume_in[DEV_PICKUP]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1207,17 +1204,10 @@ void CSIPEntity::OnReceivePkt(int type, int sub_type, const char *buffer, int si
|
|
|
#else
|
|
|
if (m_pAudioMgr)
|
|
|
{
|
|
|
- if (eStand2sType == m_eDeviceType)
|
|
|
- {
|
|
|
- m_pAudioMgr->audio_set_device_volume(num.nValue, conf.audio_pickup_in_dev, true);
|
|
|
- m_kept_volume_in[DEV_PICKUP] = num.nValue;
|
|
|
- SendAudioDeviceVolumn(DEVICE_PICKUP_IN);
|
|
|
- SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE], m_kept_volume_out[DEV_PICKUP], m_kept_volume_in[DEV_HANDFREE], m_kept_volume_in[DEV_PICKUP]);
|
|
|
- }
|
|
|
- else //pad版屏蔽当前PICKUP音量设置
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("PAD type, ignore pickupin volume adj");
|
|
|
- }
|
|
|
+ m_pAudioMgr->audio_set_device_volume(num.nValue, conf.audio_pickup_in_dev, true);
|
|
|
+ m_kept_volume_in[DEV_PICKUP] = num.nValue;
|
|
|
+ SendAudioDeviceVolumn(DEVICE_PICKUP_IN);
|
|
|
+ SaveAudioRunConfig(m_kept_volume_out[DEV_HANDFREE], m_kept_volume_out[DEV_PICKUP], m_kept_volume_in[DEV_HANDFREE], m_kept_volume_in[DEV_PICKUP]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1328,13 +1318,15 @@ ErrorCodeEnum CSIPEntity::RvcSetSaveAudioVolume()
|
|
|
{
|
|
|
ErrorCodeEnum Error = Error_Succeed;
|
|
|
|
|
|
+#ifdef RVC_OS_LINUX
|
|
|
if (m_pAudioMgr){
|
|
|
m_pAudioMgr->audio_set_device_volume(m_kept_volume_out[DEV_HANDFREE], conf.audio_handfree_out_dev, false);
|
|
|
m_pAudioMgr->audio_set_device_volume(m_kept_volume_in[DEV_HANDFREE], conf.audio_handfree_in_dev, true);
|
|
|
m_pAudioMgr->audio_set_device_volume(m_kept_volume_out[DEV_PICKUP], conf.audio_pickup_out_dev, false);
|
|
|
m_pAudioMgr->audio_set_device_volume(m_kept_volume_in[DEV_PICKUP], conf.audio_pickup_in_dev, true);
|
|
|
}
|
|
|
-
|
|
|
+#endif
|
|
|
+
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
@@ -1347,7 +1339,7 @@ bool CSIPEntity::IsPostAudioConfigInfo()
|
|
|
size_t upickupin = strlen(conf.audio_pickup_in_dev);
|
|
|
size_t upickupout = strlen(conf.audio_pickup_out_dev);
|
|
|
|
|
|
- if ((uhandfreeout > 0) && (uhandfreeout > 0) && (upickupin > 0) && (upickupout > 0)) {
|
|
|
+ if ((uhandfreein > 0) && (uhandfreeout > 0) && (upickupin > 0) && (upickupout > 0)) {
|
|
|
bRet = true;
|
|
|
}
|
|
|
|
|
@@ -1357,12 +1349,15 @@ bool CSIPEntity::IsPostAudioConfigInfo()
|
|
|
uint32_t CSIPEntity::CheckAudioDevice()
|
|
|
{
|
|
|
int id = -1;
|
|
|
+
|
|
|
uint32_t Error = RVC_AUDIO_NO_ERROR;
|
|
|
|
|
|
#ifdef RVC_OS_WIN
|
|
|
id = capture_get_audio_device_id(true, conf.audio_handfree_in_dev);
|
|
|
#else
|
|
|
- id = m_pAudioMgr->audio_get_device_id(conf.audio_handfree_in_dev, true);
|
|
|
+ if (NULL != m_pAudioMgr) {
|
|
|
+ id = m_pAudioMgr->audio_get_device_id(conf.audio_handfree_in_dev, true);
|
|
|
+ }
|
|
|
#endif
|
|
|
if (id == -1) {
|
|
|
//CSimpleStringA strErrMsg = "外部麦克风配置错误,请重新配置!";
|
|
@@ -1374,7 +1369,9 @@ uint32_t CSIPEntity::CheckAudioDevice()
|
|
|
#ifdef RVC_OS_WIN
|
|
|
id = capture_get_audio_device_id(false, conf.audio_handfree_out_dev);
|
|
|
#else
|
|
|
- id = m_pAudioMgr->audio_get_device_id(conf.audio_handfree_out_dev, false);
|
|
|
+ if (NULL != m_pAudioMgr) {
|
|
|
+ id = m_pAudioMgr->audio_get_device_id(conf.audio_handfree_out_dev, false);
|
|
|
+ }
|
|
|
#endif
|
|
|
if (id == -1) {
|
|
|
//CSimpleStringA strErrMsg = "外部扬声器配置错误,请重新配置!";
|
|
@@ -1387,7 +1384,9 @@ uint32_t CSIPEntity::CheckAudioDevice()
|
|
|
#ifdef RVC_OS_WIN
|
|
|
id = capture_get_audio_device_id(true, conf.audio_pickup_in_dev);
|
|
|
#else
|
|
|
- id = m_pAudioMgr->audio_get_device_id(conf.audio_pickup_in_dev, true);
|
|
|
+ if (NULL != m_pAudioMgr) {
|
|
|
+ id = m_pAudioMgr->audio_get_device_id(conf.audio_pickup_in_dev, true);
|
|
|
+ }
|
|
|
#endif
|
|
|
if (id == -1) {
|
|
|
//CSimpleStringA strErrMsg = "话筒麦克风配置错误,请重新配置!";
|
|
@@ -1399,7 +1398,9 @@ uint32_t CSIPEntity::CheckAudioDevice()
|
|
|
#ifdef RVC_OS_WIN
|
|
|
id = capture_get_audio_device_id(false, conf.audio_pickup_out_dev);
|
|
|
#else
|
|
|
- id = m_pAudioMgr->audio_get_device_id(conf.audio_pickup_out_dev, false);
|
|
|
+ if (NULL != m_pAudioMgr) {
|
|
|
+ id = m_pAudioMgr->audio_get_device_id(conf.audio_pickup_out_dev, false);
|
|
|
+ }
|
|
|
#endif
|
|
|
if (id == -1) {
|
|
|
//CSimpleStringA strErrMsg = "话筒扬声器配置错误,请重新配置!";
|
|
@@ -1415,6 +1416,13 @@ uint32_t CSIPEntity::CheckAudioDevice()
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
|
+ErrorCodeEnum CSIPEntity::SetSoundCardSysVar(const CSimpleStringA& newVal)
|
|
|
+{
|
|
|
+ CSmartPointer<IEntityFunction> spFunction = this->GetFunction();
|
|
|
+
|
|
|
+ return spFunction->SetSysVar(SYSVAR_SOUNDCARDSTATE, newVal.GetData());
|
|
|
+}
|
|
|
+
|
|
|
ErrorCodeEnum CSIPEntity::GetLocalIP()
|
|
|
{
|
|
|
#ifdef RVC_OS_WIN
|