📄 bluetoothengine.cpp
字号:
for(TInt8 i=0;i<aPayloadLen;i++)
{
iTemp[i+HeaderLen] = iAppUi->iAppView->iAppEngine->temp[i+18*num_temp];
}
iTemp[aPayloadLen+HeaderLen] = iAppUi->iAppView->iAppEngine->activeplayer ;
for(TInt idx=0;idx<KMaxConnectedDevices;idx++)
{
if(iConnectedDevices[idx]!=NULL)
{
TBuf<128> formattedMessage ;
formattedMessage.Append( iTemp, HeaderLen+aPayloadLen+1 );
TBuf8<128> buf;
TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
iConnectedDevices[idx]->SendDataL(msgtext8); ///
delete []iTemp;
iTemp = NULL;
}
}
}
else if( aMsgType ==2 )
{
aPayloadLen = iAppUi->iAppView->iAppEngine->table_cards.Count();
TUint16 *iTemp = new (ELeave)TUint16[aPayloadLen+HeaderLen+2];
iTemp[0] = 2;iTemp[1]=0;iTemp[2]=2;iTemp[3]=aPayloadLen+2;
for(TInt i = 0;i<aPayloadLen;i++)
{
iTemp[i+HeaderLen]=iAppUi->iAppView->iAppEngine->table_cards[i];
}
iTemp[aPayloadLen+HeaderLen]=iAppUi->iAppView->iAppEngine->iPos;
iTemp[aPayloadLen+HeaderLen+1]=iAppUi->iAppView->iAppEngine->activeplayer;
for (TInt idx=0; idx<KMaxConnectedDevices; idx++)
{
if ( iConnectedDevices[idx]!=NULL )
{
TBuf<128> formattedMessage ;
formattedMessage.Append( iTemp, HeaderLen+aPayloadLen + 2 );
TBuf8<128> buf;
TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
iConnectedDevices[idx]->SendDataL(msgtext8);
delete []iTemp;
iTemp = NULL;
}
}
}
}
void CBluetoothEngine::SlaveSendMessage(TInt8 aMsgType)
{
TInt8 aPayloadLen = 0;
if(aMsgType == 1)
{
aPayloadLen = 1;
TUint16 *iTemp = new (ELeave)TUint16[aPayloadLen+HeaderLen+1];
iTemp[0] = 1;iTemp[1]=0;iTemp[2]=2;iTemp[3]=aPayloadLen+1;
iTemp[4] = 1;iTemp[aPayloadLen+HeaderLen]=iAppUi->iAppView->iAppEngine->activeplayer ;
TBuf<128> formattedMessage ;
formattedMessage.Append( iTemp, HeaderLen+aPayloadLen + 1 );
TBuf8<128> buf;
TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
// iAppUi->iAppView->ctr_2 = 0;
iListener->SendDataL(msgtext8); ////////////////////////////////////
delete []iTemp;
iTemp = NULL;
}
if( aMsgType == 2 )
{
aPayloadLen = iAppUi->iAppView->iAppEngine->table_cards.Count();
TUint16 *iTemp = new (ELeave)TUint16[aPayloadLen+HeaderLen+2];
iTemp[0] = 2 ;iTemp[1]=0;iTemp[2]=2;iTemp[3]=aPayloadLen+2;
for(TInt i = 0;i<aPayloadLen;i++)
{
iTemp[i+HeaderLen]=iAppUi->iAppView->iAppEngine->table_cards[i];
}
iTemp[aPayloadLen+HeaderLen]=iAppUi->iAppView->iAppEngine->iPos;
iTemp[aPayloadLen+HeaderLen+1]=iAppUi->iAppView->iAppEngine->activeplayer;
// for (TInt idx=0; idx<KMaxConnectedDevices; idx++)
// {
// if ( iConnectedDevices[idx]!=NULL ) //
// {
////////
///* tbuf<80> msg1;
// msg1.format(_l("playernum: %d\n"),20);
// showmessagel(msg1, true);*/
///////////////////
TBuf<128> formattedMessage ;
formattedMessage.Append( iTemp, HeaderLen+aPayloadLen + 2 );
TBuf8<128> buf;
TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
// iAppUi->iAppView->ctr_2 = 0;
iListener->SendDataL(msgtext8); ////////////////////////////////////
delete []iTemp;
iTemp = NULL;
// }
// }
//Tbuf<80> msg1;
//msg1.format(_l("playernum: %d\n"),20);
//showmessagel(msg1, false);
}
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleListenerDataReceivedL(TDesC& aData)
//
// display data the slave listener receives from the master. this is a
// callback that CListener class will invoke when it receives new data.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleListenerDataReceivedL(TDesC& aData)
{
// display received message
const TUint16* Data = aData.Ptr();
TInt length = aData.Length();
TInt8 *iTemp = new (ELeave) TInt8[length];
for ( TInt i = 0 ; i < length; ++i )
{
iTemp[i] = (TInt8) Data[i];
}
if( iTemp[0] == 0 ) //指定玩家身份
{
//TBuf<80> msg;
//msg.Format(_L("playernum: %d\n"), (iTemp[4]+1)%2);
//ShowMessageL(msg, false);
iAppUi->iAppView->iAppEngine->iPlayerNum = (iTemp[4]+1)%2;
}
else if(iTemp[0]==1)
{
TInt8 playernum = iAppUi->iAppView->iAppEngine->iPlayerNum ;
//TBuf<80> msg;
//msg.Format(_L("msgtype: %d\nplLen:%d\nFirstCard:%d active:%d\n"),iTemp[0],length-HeaderLen-1,iTemp[4],iTemp[length-1]);
//ShowMessageL(msg,false);
//newround
num_temp = iTemp[1];
//TBuf<80> msg1;
//msg1.Format(_L("p: %d\n"), playernum);
//ShowMessageL(msg1, false);
for(TInt i = 0; i<length-HeaderLen-1;i++)
{
// iAppUi->iAppView->iAppEngine->players[playernum].handing_cards.InsertInOrder(iTemp[i+HeaderLen]);
iAppUi->iAppView->iAppEngine->temp[i+num_temp*18]=iTemp[i+HeaderLen];
}
iAppUi->iAppView->iAppEngine->activeplayer= iTemp[length-1];
if(num_temp == 0)
{
iAppUi->iAppView->iAppEngine->table_cards.Reset();
iAppUi->iAppView->iAppEngine->Start();
num_temp++;
}
else
{
num_temp++;
}
//TBuf<80> msg0;
//msg0.Format(_L("num_temp: %d\n"), num_temp);
//ShowMessageL(msg0, false);
iAppUi->iAppView->DrawMove();
}
else if(iTemp[0] ==2)
{
//TBuf<80> msg;
//msg.Format(_L("msgtype: %d\nplLen:%d\nFirstCard:%d active:%d\n"),iTemp[0],length-HeaderLen-2,iTemp[4],iTemp[length-1]);
//ShowMessageL(msg,false);
iAppUi->iAppView->iAppEngine->table_cards.Reset();
for(TInt i = 0;i<length-HeaderLen-2;++i)
{
iAppUi->iAppView->iAppEngine->table_cards.Insert(iTemp[i+HeaderLen],i);
}
iAppUi->iAppView->iAppEngine->iPos = iTemp[length-2]/*+iappui->iappview->iappengine->ipos*/;
iAppUi->iAppView->iAppEngine->activeplayer = iTemp[length-1];
//TBuf<80> msg2;
//msg2.Format(_L("ipos: %d\n"),iAppUi->iAppView->iAppEngine->iPos);
//ShowMessageL(msg2,false);
//1!@#$%^&*()))))__+!@#$%^&*(()
iAppUi->iAppView->iAppEngine->iCurrentSelectedCard = 0; /////////////
iAppUi->iAppView->DrawMove();
}
delete []iTemp;
iTemp=NULL;
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleConnectorDataReceivedL(THostName aName,
// TDesC& aData)
//
// display data the master receives from a connected slave. this is a
// callback that CConnector class will invoke when it receives data from slave.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleConnectorDataReceivedL(THostName aName,
TDesC& aData)
{
const TUint16* Data = aData.Ptr();
TInt length = aData.Length();
TInt8 *iTemp = new (ELeave) TInt8[length];
for ( TInt i = 0 ; i < length; ++i )
{
iTemp[i] = (TInt8) Data[i];
}
if( iTemp[0] == 1)
{
iAppUi->iAppView->NewRound();
num_temp = 0;
MasterSendMessage(1);
}
if(iTemp[0] == 2)
{
//TBuf<80> msg;
//msg.Format(_L("msgtype: %d\nplLen:%d\nFirstCard:%d active:%d"),iTemp[0],length-HeaderLen-2,iTemp[4],iTemp[length-1]);
//ShowMessageL(msg,false);
iAppUi->iAppView->iAppEngine->table_cards.Reset();
for(TInt i = 0;i<length-HeaderLen-2;i++)
{
// iAppUi->iAppView->iAppEngine->table_cards.InsertInOrder(iTemp[i+HeaderLen]);
iAppUi->iAppView->iAppEngine->table_cards.Insert(iTemp[i+HeaderLen],i);
}
iAppUi->iAppView->iAppEngine->iPos = iTemp[length-2]/*+iAppUi->iAppView->iAppEngine->iPos*/;
iAppUi->iAppView->iAppEngine->activeplayer = iTemp[length-1]/*(iAppUi->iAppView->iAppEngine->iPlayerNum+1)%2*/;
//TBuf<80> msg2;
//msg2.Format(_L("ipos: %d\n"),iAppUi->iAppView->iAppEngine->iPos);
//ShowMessageL(msg2,false);
// iAppUi->iAppView->iAppEngine->iCurrentSelectedCard = 0;
//TBuf<80> msg1;
//msg1.Format(_L("ctr_2: %d\n"),iAppUi->iAppView->ctr_2);
//ShowMessageL(msg1, false);
iAppUi->iAppView->DrawMove();
/* TBuf<80> msg1;
msg1.Format(_L("playernum: %d\n"),20);
ShowMessageL(msg1, false);*/
}
delete []iTemp;
iTemp=NULL;
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleListenerConnectedL()
//
// a callback received from CListener to indicate that it has been connected to
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleListenerConnectedL()
{
ShowMessageL(_L("Connected!\n"), true);
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleListenerDisconnectedL()
//
// a callback received from CListener to indicate that it has been disconnected
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleListenerDisconnectedL()
{
if ( !iIsSlave )
return;
// listener has already been stopped, request advertiser to stop as well
iServiceAdvertiser->StopAdvertiserL();
ShowMessageL(_L("Disconnected!\nSlave stopped.\n"), true);
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleDeviceDiscoveryCompleteL()
//
// a callback received from device discoverer to indicate that the device
// discovery has completed.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleDeviceDiscoveryCompleteL()
{
// iterate and display found devices, if any
if ( iDevDataList.Count()> 0 )
{
// found devices
ShowMessageL(_L("Found devices:\n"), true);
for (TInt idx=0; idx<(iDevDataList.Count()); idx++)
{
TDeviceData *dev = iDevDataList[idx];
TBuf<40> name;
name = dev->iDeviceName;
name.Append(_L("\n"));
ShowMessageL(name, false);
}
}
else
{
// no devices found
ShowMessageL(_L("\nNo devices found!"), false);
}
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleServiceDiscoveryCompleteL()
//
// a callback received from service discoverer to indicate that the service
// discovery has completed.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleServiceDiscoveryCompleteL()
{
TInt count=0;
ShowMessageL(_L("Found service on:\n"), true);
// display devices with service we can use
for ( TInt idx=0; idx<(iDevDataList.Count()); idx++ )
{
TDeviceData *dev = iDevDataList[idx];
if ( dev->iDeviceServicePort>0 )
{
THostName name = dev->iDeviceName;
name.Append(_L("\n"));
ShowMessageL(name, false);
count++;
}
}
if ( count==0 )
{
ShowMessageL(_L("No services found!\n"), false);
}
}
// ----------------------------------------------------------------------------
// CBluetoothEngine::HasConnections()
//
// returns true if master has any connections to slave(s)
// ----------------------------------------------------------------------------
TBool CBluetoothEngine::HasConnections()
{
return ( iConnectedDeviceCount>0 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -