void CCorpChannelDx::OnRecdPacket(IRecdPacket* pPacket)
{
    if ( ! _tcscmp(pPacket->PakParam, "STOP") )
    {
        CChannel::OnRecdPacket( pPacket );
        return;
    }

    //CString xNewFile = Settings.Meeting.RecFile;
    CString xNewFile = "<DATE>\\<REMOTE>-<TIME>.PCM";

    if ( xNewFile.Find( "<DATE>" ) >= 0 )
    {
        SYSTEMTIME pTime;
        GetLocalTime( &pTime );

        CString strValue;
        strValue.Format( "%04i年%02i月%02i日",
                         pTime.wYear, pTime.wMonth, pTime.wDay );
        Replace( xNewFile, "<DATE>", strValue );
    }

    if ( xNewFile.Find( "<TIME>" ) >= 0 )
    {
        SYSTEMTIME pTime;
        GetLocalTime( &pTime );

        CString strValue;
        strValue.Format( "%02i时%02i分%02i秒%03i",
                         pTime.wHour, pTime.wMinute, pTime.wSecond, pTime.wMilliseconds );
        Replace( xNewFile, "<TIME>", strValue );
    }

    if ( xNewFile.Find( "<REMOTE>" ) >= 0 )
    {
        CString strValue;
        Replace( xNewFile, "<REMOTE>", RemoteId );
    }

    for ( LPCTSTR xPath = xNewFile, xPathExt = NULL;
            xPathExt = _tcsistr(xPath, "\\"); xPath = xPathExt + 1 )
    {
        CString strValue = xNewFile.Left(xPathExt - (LPCTSTR)xNewFile);
        CreateDirectory( "中国电信\\" + strValue, NULL );
    }

    SsmSetRecMixer( m_nChan, TRUE, 0 );
    if ( RecordFile(xNewFile, "中国电信") )
    {
        CHAR sError[1024];
        SsmGetLastErrMsg( sError );
        throw sError;
    }

    theApp.Message( MSG_TEMP,"Record[%i] -> %s", m_nChan, xNewFile );
}
示例#2
0
struct state* CInfoChannel::RcvLvWord_cmplt(EVTBLK *evtblk)
{
	int nChan = evtblk->nReference;

	if ( evtblk->wEventCode == E_PROC_PlayEnd )
	{
		if ( (Reserved &= 0x07) == 0x01 )	// 提示语播放完毕
		{
			UsrLvFile = MakeUsrLvFile( "pcm" );
			RecordFile( UsrLvFile, NULL, _T("#") );
		}
		if ( (Reserved & 0x04) == 0x04 )	// 短信录制完毕
		{
			BjPlaying = FALSE;
		}
		else
		return &RcvLvWord;	// 循环播放背景音乐
	}
	if ( evtblk->wEventCode == E_PROC_RecordEnd )
	{
		Reserved |= 0x04;	// 记录播放完毕标志
		if ( SsmStopPlayFile( nChan ) ) BjPlaying = FALSE;
	}
	
	//if ( (Reserved & 0x04) == 0x04 )	// 短信录制完毕
	if ( (Reserved & 0x04) == 0x04 && ! BjPlaying )	// 短信录制完毕
	{
		PutUsrRecord( UsrLvFile ); SetEvent( Traffic.m_pWakeup );
		Reserved &= 0x00; return &RcvFnOper;
	}
	
	if ( (Reserved & 0x07) == 0x02 && evtblk->wEventCode == E_CHG_ChState &&
		((evtblk->dwParam & 0xFFFF) == S_CALL_STANDBY || (evtblk->dwParam & 0xFFFF) == S_CALL_PENDING) )
	{
		PutUsrRecord( UsrLvFile ); SetEvent( Traffic.m_pWakeup );
	}
	
	return ChkDTSignal( evtblk, &RcvLvWord );
}
示例#3
0
void CDlgMain::OnDropFiles(HDROP hDropInfo)
{
	// TODO:  在此添加消息处理程序代码和/或调用默认值
	int DropCount = DragQueryFile(hDropInfo, -1, NULL, 0);//取得被拖动文件的数目
	for (int i = 0; i < DropCount; i++)
	{
		char wcStr[MAX_PATH];
		DragQueryFile(hDropInfo, i, wcStr, MAX_PATH);//获得拖曳的第i个文件的文件名
	
		CString str_Filename;
		str_Filename.Format("%s", wcStr);

		//处理文件名,写入数据库,待开发
		//加入对文件格式的筛选,同时文件存入数据表,以便程序再次运行时重新显示列表
		//此处写入数据库,应当包含文件名、文件存储路径、文件格式
		str_Filename = RecordFile(str_Filename);


		m_ListIndex.AddString(str_Filename);
	}
	DragFinish(hDropInfo);  //拖放结束后,释放内存
	CDialogEx::OnDropFiles(hDropInfo);
}
示例#4
0
void VOIPWork ( VOIP_STRUCT *pOneVOIP, Acs_Evt_t *pAcsEvt )
{
	Acs_CallControl_Data   *pCallControl = NULL;
	VoIPCallPrivate_t      *voipCallPrivate = NULL;
	DeviceID_t				FreeVocDeviceID;
	char					FileName[256];
	char                    chTmpFilePath[256] = "";

	if (pOneVOIP == NULL || pAcsEvt == NULL)
		return;

	if ( pAcsEvt->m_s32EventType == XMS_EVT_CLEARCALL )	/*拆线事件*/
	{
		if (cfg_iVoiceCheck == 1)
		{
			StopPlayFile(&pOneVOIP->VocDevID);
			
			//删除录音文件
			GetFilePathName(pOneVOIP, chTmpFilePath);
			sprintf(FileName, "%s\\DemoRec.%0003d", chTmpFilePath, pOneVOIP->iSeqID);
			DeleteFile(FileName);
		}

		ResetVOIP ( pOneVOIP, pAcsEvt );
		Change_State(pOneVOIP, VOIP_FREE);

		return ; 
	}

	switch(pOneVOIP->State)
	{
	case VOIP_FREE:
		if ( pAcsEvt->m_s32EventType == XMS_EVT_CALLIN )	/*呼入事件*/
		{
			pCallControl = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

			ASSERT(pCallControl->m_PrivData.m_u32DataSize == sizeof(VoIPCallPrivate_t));
			voipCallPrivate = (VoIPCallPrivate_t *)&(pCallControl->m_PrivData);			

			XMS_ctsAlertCall ( g_acsHandle, &pOneVOIP->deviceID, NULL );

			XMS_ctsAnswerCallIn ( g_acsHandle, &pOneVOIP->deviceID, NULL );			
			
			pOneVOIP->iProtocol = voipCallPrivate->m_s32Protocol;

			//Caller Info
			strncpy(pOneVOIP->CallerAddr, voipCallPrivate->m_s8CallerAddress, sizeof(pOneVOIP->CallerAddr));			
			strncpy(pOneVOIP->CallerUserID, voipCallPrivate->m_s8CallerUserID, sizeof(pOneVOIP->CallerUserID));
			strncpy ( pOneVOIP->CallerNum, pCallControl->m_s8CallingNum, sizeof(pOneVOIP->CallerNum));
			pOneVOIP->iCallerPort = (unsigned short)voipCallPrivate->m_s32CallerPort;
			//

			//Callee Info
			strncpy(pOneVOIP->CalleeAddr, voipCallPrivate->m_s8CalleeAddress, sizeof(pOneVOIP->CalleeAddr));			
			strncpy(pOneVOIP->CalleeUserID, voipCallPrivate->m_s8CalleeUserID, sizeof(pOneVOIP->CalleeUserID));
			strncpy ( pOneVOIP->CalleeNum, pCallControl->m_s8CalledNum, sizeof(pOneVOIP->CalleeNum));			
			pOneVOIP->iCalleePort = (unsigned short)voipCallPrivate->m_s32CalleePort;
			//

			DrawMain_CallInfo( pOneVOIP );
			
			Change_State ( pOneVOIP, VOIP_WAIT_ANSWERCALL );
		}
		break;

	case VOIP_WAIT_ANSWERCALL:		
		if ( pAcsEvt->m_s32EventType == XMS_EVT_ANSWERCALL )	/*应答呼入完成事件*/
		{
			pCallControl = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

			if (cfg_iVoiceCheck == 1)
			{
				if ( SearchOneFreeVoice ( pOneVOIP,  &FreeVocDeviceID ) >= 0 )
				{
					pOneVOIP->u8PlayTag = 16;
					
					pOneVOIP->VocDevID = FreeVocDeviceID;
					
					M_OneVoice(FreeVocDeviceID).UsedDevID = pOneVOIP->deviceID; 
					
					DrawMain_VocInfo ( pOneVOIP );
					
					GetFilePathName(pOneVOIP, chTmpFilePath);
					sprintf(FileName, "%s\\DemoRec.%0003d", chTmpFilePath, pOneVOIP->iSeqID);		
					RecordFile ( pOneVOIP, FileName, 8000L*10, false);

					Change_State ( pOneVOIP, VOIP_RECORDFILE );					
				
				}
			}
			else
			{
				Change_State ( pOneVOIP, VOIP_WAITHANGUP );
			}
		}
		break;

	case VOIP_RECORDFILE:
		if ( CheckRecordEnd ( pOneVOIP, pAcsEvt) )	/*record完成事件*/
		{
			BindOneFreeVoice(pOneVOIP, pOneVOIP->VocDevID);
			Change_State ( pOneVOIP, VOIP_WAITBINDOK);
		}
		break;

	case VOIP_WAITBINDOK:
		if (pAcsEvt->m_s32EventType == XMS_EVT_SETPARAM)
		{
			GetFilePathName(pOneVOIP, chTmpFilePath);
			sprintf(FileName, "%s\\DemoRec.%0003d", chTmpFilePath, pOneVOIP->iSeqID);	
			pOneVOIP->u8PlayTag ++;
			PlayFile ( &pOneVOIP->VocDevID, FileName, pOneVOIP->u8PlayTag, true );

			Change_State (pOneVOIP, VOIP_PLAYRECORD);
		}	
		break;

	case VOIP_PLAYRECORD:
		if ( CheckPlayEnd ( pOneVOIP, pAcsEvt) )	/*play完成事件*/
		{
			// 主动挂机
			UnBindOneVoice(pOneVOIP);

			XMS_ctsClearCall ( g_acsHandle, &pOneVOIP->deviceID, 0, NULL );			

			Change_State ( pOneVOIP, VOIP_WAITHANGUP );
		}
		break;
	}
}