📄 bjack.cpp
字号:
#include "bjack.h"
#include "ObjectExchangeServiceSearcher.h"
#include "BTObjectExchange.pan"
#include "eikenv.h"
CBjack* CBjack::NewL()
{
CBjack* self = NewLC();
CleanupStack::Pop(self);
return self;
}
CBjack* CBjack::NewLC()
{
CBjack* self = new (ELeave) CBjack();
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CBjack::CBjack()
: CActive(CActive::EPriorityStandard),
iState(EWaitingToGetDevice)
{
CActiveScheduler::Add(this);
}
void CBjack::ConstructL()
{
iServiceSearcher = CObjectExchangeServiceSearcher::NewL();
}
CBjack::~CBjack()
{
Cancel();
if (iState != EWaitingToGetDevice && iClient)
{
iClient->Abort();
}
delete iServiceSearcher;
iServiceSearcher = NULL;
delete iClient;
iClient = NULL;
}
void CBjack::DoCancel()
{
}
void CBjack::RunL()
{
if (iStatus != KErrNone)
{
switch (iState)
{
case EGettingDevice:
if (iStatus = KErrCancel)
{
}
break;
case EGettingService:
case EGettingConnection:
case EDisconnecting:
iState = EWaitingToGetDevice;
break;
case EWaitingToSend:
iState = EWaitingToGetDevice;
break;
default:
Panic(EBTObjectExchangeUnexpectedLogicState);
break;
}
}
else
{
switch (iState)
{
case EGettingDevice:
// found a device now search for a suitable service
iState = EGettingService;
iStatus = KRequestPending; // this means that the RunL can not be called until
// this program does something to iStatus
iServiceSearcher->FindServiceL(iStatus);
SetActive();
break;
case EGettingService:
iState = EGettingConnection;
ConnectToServerL();
break;
case EGettingConnection:
iState = EWaitingToSend;
SendMessageL();
break;
case EWaitingToSend:
break;
case EDisconnecting:
iState = EWaitingToGetDevice;
break;
default:
Panic(EBTObjectExchangeSdpRecordDelete);
break;
};
}
}
void CBjack::ConnectL()
{
if (iState == EWaitingToGetDevice && !IsActive())
{
//iServiceSearcher->SelectDeviceByDiscoveryL(iStatus);
iStatus = KErrNone;
//
iState = EGettingDevice;
SetActive();
}
else
{
User::Leave(KErrInUse);
}
}
void CBjack::ConnectToServerL()
{
TObexBluetoothProtocolInfo protocolInfo;
protocolInfo.iTransport.Copy(KServerTransportName);
protocolInfo.iAddr.SetBTAddr(iServiceSearcher->BTDevAddr());
protocolInfo.iAddr.SetPort(iServiceSearcher->Port());
//protocolInfo.iAddr.SetBTAddr(BTAddy);
// protocolInfo.iAddr.SetPort(0x1106);
if (iClient)
{
delete iClient;
iClient = NULL;
}
iClient = CObexClient::NewL(protocolInfo);
iClient->Connect(iStatus);
SetActive();
}
void CBjack::SendMessageL()
{
_LIT(currentFileNameD,"\\system\\apps\\BlueJackX\\jackMSG.VCF");
obexFile = CObexFileObject::NewL(TPtrC(NULL, 0));
obexFile->InitFromFileL(currentFileNameD);
if (iState != EWaitingToSend)
{
User::Leave(KErrDisconnected);
}
else if (IsActive())
{
User::Leave(KErrInUse);
}
// iStatus = KRequestPending;
iClient->Put(*obexFile, iStatus);
SetActive();
CEikonEnv::Static()->AlertWin(_L("Status:"),_L("3")); // muss drin seinda mit sendne geht
if (obexFile)
{
delete obexFile;
obexFile = NULL;
}
}
void CBjack::StopL()
{
if (iClient && iClient->IsConnected())
{
iClient->Abort();
iState = EWaitingToGetDevice;
}
}
void CBjack::DisconnectL()
{
if (iState == EWaitingToGetDevice)
{
return;
}
if (iState == EWaitingToSend)
{
iState = EDisconnecting;
iClient->Disconnect(iStatus);
SetActive();
}
else
{
User::Leave(KErrInUse);
}
}
TBool CBjack::IsBusy()
{
return IsActive();
}
TBool CBjack::IsConnected()
{
return iState == EWaitingToSend;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -