Exemple #1
0
static __inline__ void dah_login(dah_service_t *dah_srv)
{
    char addr[MAX_IP_LEN];
    int state, error = 0;
    int user_id = DAH_LOGOUT;
    proxy_sdk_t sdk_info;

    NMP_ASSERT(dah_srv);

    if (proxy_get_device_private(dah_srv->owner, DEV_PRI_PRX_SDK, &sdk_info))
    {
        BUG();
    }

    memset(addr, 0, sizeof(addr));
    if (proxy_resolve_host_immediate((const char*)sdk_info.dev_host, addr, sizeof(addr)))
    {
        user_id = CLIENT_Login(addr, sdk_info.dev_port, 
                    sdk_info.username, sdk_info.password, 
                    &dah_srv->dah_info, &error);
    }
    else
        show_warn("Device host '%s' unsolved.\n", sdk_info.dev_host);

    if (DAH_LOGOUT != user_id)
    {
        CLIENT_StartListen(user_id);

        state = DAH_LOGIN;
        error = 0;
        show_debug("dah_login() successful, user_id: %d\n", user_id);
    }
    else
    {
        state = DAH_LOGOUT;
        //error = ;

        if (strlen(addr))
        {
            show_warn("dah_login(deviceID:%d) failure[%s:%s @ %s:%d]. Error: %d\n", 
                dah_srv->owner->fastenings.dev_id, 
                sdk_info.username, sdk_info.password, 
                addr, sdk_info.dev_port, error);
        }
    }

    dah_set_user_id(dah_srv, user_id);
    dah_set_state(dah_srv, (DAH_STATE_E)state, error);

    return ;
}
Exemple #2
0
void CLoginDlg::OnButtonLogin() 
{
	UpdateData(TRUE);

	int nErr = 0;	//Storage the possible error return value.
	WORD wDVRPort = (WORD)m_nPort;
	char *pDevIP = (LPSTR)(LPCSTR)m_strIP;
	char *pchUserName = (LPSTR)(LPCSTR)m_strUserName;
	char *pchPassword = (LPSTR)(LPCSTR)m_strPassWord;
	
	//Call log in interface 
	long lRet = CLIENT_Login(pDevIP,wDVRPort,pchUserName,pchPassword,&m_stDevInfo,&nErr);
	if(0 != lRet)
	{
		m_lLogHandle = lRet;
	}
	else
	{
		GetConnectError(nErr);
	}

	CDialog::OnOK();
}
Exemple #3
0
/*----------------------------------
函数功能:获取码流分辨率
调用参数:
返回参数:
函数说明:连接NVR后,获取单个摄像头码流分辨率
-----------------------------------*/
_EXT_C_DEVCAM_API BOOL CAM_GetSize(CommonParam *commonParam,long channel){
	if (commonParam == NULL){
		return FALSE;
	}
	if(commonParam->deviceType == NET_IPC_SERIAL){
		return TRUE;
	}
	if(commonParam->cameraParam[channel].playHwnd == NULL){
		commonParam->cameraParam[channel].playHwnd = CreateWindow("EDIT",NULL,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,NULL,NULL);
	}
	NET_DEVICEINFO	      deviceInfo = {0};
	int				      error;
	DHDEV_CHANNEL_CFG	  channelConfig = {0};
	LDWORD			      bytesReturned;
	commonParam->cameraParam[channel].loginID = CLIENT_Login(commonParam->cameraParam[channel].deviceIP,commonParam->cameraParam[channel].devicePort,commonParam->cameraParam[channel].userName,commonParam->cameraParam[channel].passWord,&deviceInfo,&error);
	if(error != 0){
		return FALSE;
	}
	CLIENT_GetDevConfig(commonParam->cameraParam[channel].loginID,DH_DEV_CHANNELCFG,0,&channelConfig,sizeof(channelConfig),&bytesReturned);
	GetSize(channelConfig.stMainVideoEncOpt->byImageSize,commonParam->cameraParam[channel].frameWidth,commonParam->cameraParam[channel].frameHeight);
	CLIENT_Logout(commonParam->cameraParam[channel].loginID);

	return TRUE;
}
int main(void)
{
	/*
	 *	程序连接上设备后,用户可以通过拔网线或其他方式使设备断线,然后再恢复网络。
	 */
	NET_DEVICEINFO deviceInfo ={0};
	unsigned long lLogin;
	CLIENT_Init(DisConnectFunc,0);//初始化sdk,设置断线回调函数
	CLIENT_SetAutoReconnect(AutoConnectFunc,0);//设置断线重连成功的回调函数。不调用此接口,sdk将不进行断线重连。
	lLogin = CLIENT_Login("10.7.4.24",37777,"3","",&deviceInfo);//登陆设备,用户需另选设备。
	if(lLogin <= 0)
	{
		cout<<"登陆设备失败"<<endl;
	}
	else
	{
		cout<<"登陆设备成功,按任意键退出程序。"<<endl;
		cout<<"网络故障1分钟如果没有恢复,sdk会认为断线,请耐心等待"<<endl;
		_getch();
	}
	CLIENT_Logout(lLogin);
	CLIENT_Cleanup();
	return 0;
}
Exemple #5
0
//	连接设备
BOOL CRealPlayXCtrl::SetDeviceInfo(LPCTSTR strDvrIP, long nPort, short nChannel, LPCTSTR strUserId, LPCTSTR strUserPwd) 
{
	// TODO: Add your dispatch handler code here
	BOOL bSuccess = FALSE;

	//	不相同设备,重新登入
	if(strDvrIP != m_strDvrIP)
	{
		//	登入之前先注销
		if(0 != m_LoginID)
		{
			CLIENT_Logout(m_LoginID);
			m_LoginID = 0;
			m_strDvrIP = "";
			//刷新页面
			Invalidate();
		}

		int err = 0;	//存储可能的错误返回值
		NET_DEVICEINFO deviceInfo;

		//	调用登入接口
		long lRet = CLIENT_Login((LPSTR)strDvrIP,(WORD)nPort,(LPSTR)strUserId,(LPSTR)strUserPwd,&deviceInfo,&err);
		if(0 != lRet)
		{
			m_LoginID = lRet;
			m_nChannel = nChannel;
			m_strDvrIP = strDvrIP;
			bSuccess = TRUE;
		}
		else
		{
			m_LoginID = 0;
			m_nChannel = -1;
			bSuccess = FALSE;
			ShowLoginErrorReason(err);
		}
	}
	else
	{
		//	相同设备,没有登入的话再登入
		if(0 == m_LoginID)
		{
			int err = 0;	//存储可能的错误返回值
			NET_DEVICEINFO deviceInfo;

			//	调用登入接口
			long lRet = CLIENT_Login((LPSTR)strDvrIP,(WORD)nPort,(LPSTR)strUserId,(LPSTR)strUserPwd,&deviceInfo,&err);
			if(0 != lRet)
			{
				m_LoginID = lRet;
				m_nChannel = nChannel;
				bSuccess = TRUE;
			}
			else
			{
				m_LoginID = 0;
				m_nChannel = -1;
				bSuccess = FALSE;
				ShowLoginErrorReason(err);
			}
		}
		else
		{
			m_nChannel = nChannel;
			bSuccess = TRUE;
		}
	}

	return bSuccess;
}
Exemple #6
0
/*----------------------------------
函数功能:
调用参数:BASE_PARAM的指针:
调用成功,返回TRUE;调用失败,返回FALSE。其它需要返回的参数,置于结构:BASE_PARAM中。
函数说明:
-----------------------------------*/
_EXT_C_DEVCAM_API BOOL CAM_Init(CommonParam *commonParam){
	if (commonParam == NULL){
		commonParam->devError = InitError;
		return FALSE;
	}

	CLIENT_SetAutoReconnect(AutoConnectFunc,0);

	NET_DEVICEINFO	      deviceInfo = {0};
	int				      error;
	DHDEV_CHANNEL_CFG	  channelConfig = {0};
	DHDEV_SYSTEM_ATTR_CFG systemAttr = {0};
	LDWORD			      bytesReturned;

	commonParam->loginID=CLIENT_Login(commonParam->deviceIP,commonParam->devicePort,commonParam->userName,commonParam->passWord,&deviceInfo,&error);

	if(error != 0){
		commonParam->devError = InitError;
		return FALSE;
	}

	if(!CLIENT_GetDevConfig(commonParam->loginID, DH_DEV_DEVICECFG,-1,&systemAttr,sizeof(systemAttr),&bytesReturned)){
		commonParam->devError = InitError;
		return FALSE;
	}

	if(systemAttr.byDevType == NET_NVR_SERIAL){
		commonParam->deviceType = NET_NVR_SERIAL;
		DEV_ENCODER_CFG_EX encoderConfigEx = {0};
		if(!CLIENT_GetDevConfig(commonParam->loginID, DH_DEV_ENCODER_CFG, -1, &encoderConfigEx,sizeof(encoderConfigEx),&bytesReturned)){
			commonParam->devError = InitError;
			return FALSE;
		}

		commonParam->totalChannels = encoderConfigEx.nChannels;
		commonParam->onlineCameras = new int[encoderConfigEx.nChannels];
		commonParam->cameraParam = new struct tagCommonParam[encoderConfigEx.nChannels];
		for(int i=0;i<encoderConfigEx.nChannels;i++){
			commonParam->onlineCameras[i] = encoderConfigEx.stuDevInfo[i].bDevChnEnable;
			if(encoderConfigEx.stuDevInfo[i].byManuFactory == 22){
				commonParam->onlineCameras[i] = 0;
			}
		}
		
		for(int i = 0;i < encoderConfigEx.nChannels;i++){
			commonParam->cameraParam[i].deviceType = NET_IPC_SERIAL;
			strcpy(commonParam->cameraParam[i].deviceIP,encoderConfigEx.stuDevInfo[i].szDevIp);
			strcpy(commonParam->cameraParam[i].userName,encoderConfigEx.stuDevInfo[i].szDevUser);
			strcpy(commonParam->cameraParam[i].passWord,encoderConfigEx.stuDevInfo[i].szDevPwd);
			commonParam->cameraParam[i].devicePort = encoderConfigEx.stuDevInfo[i].wDevPort;
			commonParam->cameraParam[i].channelNo = encoderConfigEx.stuDevInfo[i].byDecoderID;
		}
	}else if(systemAttr.byDevType == NET_IPC_SERIAL){
		if(commonParam->playHwnd == NULL){
			commonParam->playHwnd = CreateWindow("EDIT",NULL,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,NULL,NULL);
		}
		char *channelName = new char[16*32];
		int channelCount ;
		if(!CLIENT_QueryChannelName(commonParam->loginID,channelName,16*32,&channelCount)){
			commonParam->devError = InitError;
			return FALSE;
		}
		strcpy(commonParam->deviceName,channelName);
		delete []channelName;
		channelName = NULL;
		commonParam->deviceType = NET_IPC_SERIAL;
		CLIENT_GetDevConfig(commonParam->loginID,DH_DEV_CHANNELCFG,0,&channelConfig,sizeof(channelConfig),&bytesReturned);
		GetSize(channelConfig.stMainVideoEncOpt->byImageSize,commonParam->frameWidth,commonParam->frameHeight);
	}else{
		commonParam->devError = InitError;
		return FALSE;
	}

	return TRUE;
}
Exemple #7
0
void CClientDlg::OnBtnLogin() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	CString strIp = "";
	CString strUser = "";
	CString strPwd = "";
	int nPort = 0;
	int nError = 0;
	NET_DEVICEINFO deviceInfo = {0};

	GetDlgItemText(IDC_IPADDRESS_IP, strIp);
	GetDlgItemText(IDC_EDIT_USER, strUser);
	GetDlgItemText(IDC_EDIT_PWD, strPwd);
	nPort = GetDlgItemInt(IDC_EDIT_PORT);

	LONG lLoginHandle = CLIENT_Login((LPSTR)(LPCSTR)strIp, nPort, (LPSTR)(LPCSTR)strUser, (LPSTR)(LPCSTR)strPwd, &deviceInfo, &nError);
	if (lLoginHandle != 0)
	{
		m_lLoginHandle = lLoginHandle;

		GetDlgItem(IDC_BTN_LOGIN)->EnableWindow(FALSE);
		GetDlgItem(IDC_BTN_LOGOUT)->EnableWindow(TRUE);
		GetDlgItem(IDC_BTN_STARTTALK)->EnableWindow(TRUE);

		m_ctlEncodeType.ResetContent();
		//Search the audio talk encode formats then device supported 
		int retlen = 0;
		BOOL bSuccess = CLIENT_QueryDevState(m_lLoginHandle, DH_DEVSTATE_TALK_ECTYPE, (char*)&m_lstTalkEncode, sizeof(DHDEV_TALKFORMAT_LIST), &retlen, DEMO_SDK_WAITTIME);
		if (bSuccess && retlen == sizeof(DHDEV_TALKFORMAT_LIST))
		{
			int nIndex = 0;
			CString str;
			for (int i = 0; i < m_lstTalkEncode.nSupportNum; i++)
			{
				switch(m_lstTalkEncode.type[i].encodeType)
				{
				case DH_TALK_DEFAULT:
				case DH_TALK_PCM:
					str = ConvertString("PCM");
					break;
				case DH_TALK_G711a:
					str = ConvertString("G711a");
					break;
				case DH_TALK_AMR:
					str = ConvertString("AMR");
					break;
				case DH_TALK_G711u:
					str = ConvertString("G711u");
					break;
				case DH_TALK_G726:
					str = ConvertString("G726");
					break;
				case DH_TALK_AAC:
					str = ConvertString("AAC");
					break;
				case  DH_TALK_MP3:
					str = ConvertString("MP3");
					break;
				default:
					str = ConvertString("Unknow");
					break;
				}
                if (0 != str.Compare("Unknow"))
                {
                    CString s;
                    s.Format("_%d%s_%d%s", m_lstTalkEncode.type[i].nAudioBit, ConvertString("Bit"), m_lstTalkEncode.type[i].dwSampleRate, ConvertString("SampleRate"));
                    str += s;
                }
				nIndex = m_ctlEncodeType.AddString(str);
				m_ctlEncodeType.SetItemData(nIndex, i);
			}
			
			if (m_ctlEncodeType.GetCount() > 0)
			{
				m_ctlEncodeType.SetCurSel(0);
			}
		}

		DWORD dwRetBytes = 0;
		DHDEV_SYSTEM_ATTR_CFG stuAttr = { sizeof(DHDEV_SYSTEM_ATTR_CFG) };
		if (!CLIENT_GetDevConfig(lLoginHandle, DH_DEV_DEVICECFG, -1, &stuAttr, stuAttr.dwSize, &dwRetBytes, DEMO_SDK_WAITTIME))
		{
			MessageBox(ConvertString("Get device info failed!"), ConvertString("Prompt"));
		}
        m_ctlSpeakerChl.EnableWindow(bSuccess);
        GetDlgItem(IDC_CHECK_SPEAK)->EnableWindow(bSuccess);

		for(int i=0; i<stuAttr.byTalkOutChanNum; i++)
		{
			char szTmp[MAX_PATH] = {0};
			sprintf(szTmp,"speaker_%d", i);
			int nIndex = m_ctlSpeakerChl.AddString(szTmp);
			m_ctlSpeakerChl.SetItemData(nIndex, i);
			m_ctlSpeakerChl.SetCurSel(0);
		}
	}
	else
	{
		m_lLoginHandle = 0;
		ShowLoginErrorReason(nError);
	}
}