?? btb.cpp
字號:
#include <btb.h>
CBTB* CBTB::NewL()
{
CBTB* self = NewLC();
CleanupStack::Pop(self);
return self;
}
CBTB* CBTB::NewLC()
{
CBTB* self = new (ELeave) CBTB();
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CBTB::CBTB(): CActive(CActive::EPriorityStandard), iState(EWaitingToGetDevice)
{
CActiveScheduler::Add(this);
}
void CBTB::ConstructL()
{
}
CBTB::~CBTB()
{
Cancel();
if (iState != EWaitingToGetDevice && iClient)
{
iClient->Abort();
}
delete iClient;
iClient = NULL;
}
void CBTB::ConnectL()
{
if (iState == EWaitingToGetDevice && !IsActive())
{
iState = EGettingDevice;
SetActive();
}
else
{
User::Leave(KErrInUse);
}
}
void CBTB::ConnectToServerL()
{
TBuf8<54> settingsBuf;
settingsBuf.Copy(_L("000 006 171 128 083 070")); //flo
TLex8 lex(settingsBuf);
for (TInt i = 0; i < 6; i++)
{
TInt tempByte;
lex.Val(tempByte);
iAutoConnectAddress[i] = (TUint8) tempByte;
lex.SkipSpace();
}
protocolInfo.iTransport.Copy(_L("RFCOMM"));
protocolInfo.iAddr.SetBTAddr(iAutoConnectAddress);
protocolInfo.iAddr.SetPort(1);
if (iClient)
{
delete iClient;
iClient = NULL;
}
iClient = CObexClient::NewL(protocolInfo);
iClient->Connect(iStatus);
SetActive();
}
void CBTB::SendMessageL()
{
CObexFileObject *obexFile;
obexFile = CObexFileObject::NewL(TPtrC(NULL, 0));
_LIT(currentFileName,"\\system\\apps\\BlueJackX\\jackMSG.VCF");
obexFile->InitFromFileL(currentFileName);
if (iState != EWaitingToSend)
{
User::Leave(KErrDisconnected);
}
else if (IsActive())
{
User::Leave(KErrInUse);
}
iClient->Put(*obexFile, iStatus);
SetActive();
}
void CBTB::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:
break;
}
}
else
{
switch (iState)
{
case EGettingDevice:
iState = EGettingService;
iStatus = KRequestPending;
SetActive();
break;
case EGettingService:
iState = EGettingConnection;
ConnectToServerL();
break;
case EGettingConnection:
iState = EWaitingToSend;
break;
case EWaitingToSend:
break;
case EDisconnecting:
iState = EWaitingToGetDevice;
break;
default:
break;
};
}
}
void CBTB::StopL()
{
if (iClient && iClient->IsConnected())
{
iClient->Abort();
iState = EWaitingToGetDevice;
}
}
void CBTB::DisconnectL()
{
if (iState == EWaitingToGetDevice)
{
return;
}
if (iState == EWaitingToSend)
{
iState = EDisconnecting;
iClient->Disconnect(iStatus);
SetActive();
}
else
{
User::Leave(KErrInUse);
}
}
void CBTB::DoCancel()
{
}
TBool CBTB::IsBusy()
{
return IsActive();
}
TBool CBTB::IsConnected()
{
return iState == EWaitingToSend;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -