diff -r 630d2f34d719 -r 07a122eea281 cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/tsyconfg.cpp --- a/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/tsyconfg.cpp Tue Aug 31 16:23:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,487 +0,0 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// @file tsyconfig.cpp -// This contains CTsyConfig which manage access to CommDB configuration. -// - -// system include -#include -#include -using namespace CommsDat; - -// user include -#include "tsyconfg.h" -#include "mslogger.h" - -#ifdef __LOGDEB__ -_LIT8(KLogEntry,"CTsyConfig::%S\t%S"); -#define LOCAL_LOGTEXT(function,text) {_LIT8(F,function);_LIT8(T,text);LOGTEXT3(KLogEntry,&F,&T);} -#else -#define LOCAL_LOGTEXT(function,text) -#endif - -// const defination -const TInt KDefaultLocationInternalPref = 0; -const RCall::TMonitorSpeakerControl KDefaultModemSpeakerSetting = RCall::EMonitorSpeakerControlOnUntilCarrier; -const RCall::TMonitorSpeakerVolume KDefaultMonitorSpeakerVolume = RCall::EMonitorSpeakerVolumeOff; -const RCall::TWaitForDialTone KDefaultWaitForDialTone = RCall::EDialToneNoWait; - -// --------------------------------------------------------------------------- -// CTsyConfig::NewL -// other items were commented in a header -// --------------------------------------------------------------------------- -CTsyConfig* CTsyConfig::NewL() - { - CTsyConfig* self = new(ELeave) CTsyConfig(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return (self); - } - -// --------------------------------------------------------------------------- -// CTsyConfig::CTsyConfig -// other items were commented in a header -// --------------------------------------------------------------------------- -CTsyConfig::CTsyConfig() - { - } - -// --------------------------------------------------------------------------- -// CTsyConfig::ConstructL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::ConstructL() - { - iLocationId = 0; - iModemBearer = 0; - SetCurrentTableViewL(); - GetLocationModemSettingsL(); - } - -// --------------------------------------------------------------------------- -// CTsyConfig::SetCurrentTableViewL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::SetCurrentTableViewL() - { - TInt r = KErrNone; - - for (TInt i = 0; i < 10; i++) - { - TRAP(r, GetCurrentTableViewsL()); // Place a cursor on the default modem record in comms database server - if (r == KErrAccessDenied) // if we get access denied from DBMS, which is a timing thing, just re-post - { - User::After(1000000); - continue; - } - else - { - break; - } - } - - if(r) - { - LOGTEXT(_L8("CommDB values seem to be corrupt")); - User::Leave(KErrEtelModemSettingsCorrupt); - } - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetLocationModemSettingsL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetLocationModemSettingsL() - { - ASSERT(iModemBearer != 0); - - iSpeakerSetting = KDefaultModemSpeakerSetting; - iSpeakerVolume = KDefaultMonitorSpeakerVolume; - - if(iLocationId == 0) - { - iInterval = KDefaultLocationInternalPref; - iWaitForDialTonePref = KDefaultWaitForDialTone; - } - else - { - TBool value(EFalse); - CMDBField* intervalField = new(ELeave) CMDBField(KCDTIdPauseAfterDialOut); - CleanupStack::PushL(intervalField); - intervalField->SetRecordId(iLocationId); - intervalField->LoadL(*iDbSession); - iInterval = *intervalField; - CleanupStack::PopAndDestroy(intervalField); - - CMDBField* valueField = new(ELeave) CMDBField(KCDTIdWaitForDialTone); - CleanupStack::PushL(valueField); - valueField->SetRecordId(iLocationId); - valueField->LoadL(*iDbSession); - value = *valueField; - CleanupStack::PopAndDestroy(valueField); - - if (value) - { - iWaitForDialTonePref = RCall::EDialToneWait; - } - else - { - iWaitForDialTonePref = RCall::EDialToneNoWait; - } - } - - // read speaker preferences - CMDBField* speakerPrefField = new(ELeave) CMDBField(KCDTIdSpeakerPref); - CleanupStack::PushL(speakerPrefField); - speakerPrefField->SetRecordId(iModemBearer); - speakerPrefField->LoadL(*iDbSession); - iSpeakerSetting = static_cast(static_cast(*speakerPrefField)); - CleanupStack::PopAndDestroy(speakerPrefField); - - // read speaker volume preferences - CMDBField* speakerVolPrefField = new(ELeave) CMDBField(KCDTIdSpeakerVolPref); - CleanupStack::PushL(speakerVolPrefField); - speakerVolPrefField->SetRecordId(iModemBearer); - speakerVolPrefField->LoadL(*iDbSession); - iSpeakerVolume = static_cast(static_cast(*speakerVolPrefField)); - CleanupStack::PopAndDestroy(speakerVolPrefField); - - // read modem rate - CMDBField* rateField = new(ELeave) CMDBField(KCDTIdRate); - CleanupStack::PushL(rateField); - rateField->SetRecordId(iModemBearer); - rateField->LoadL(*iDbSession); - TUint32 rate; - rate = *rateField; - CleanupStack::PopAndDestroy(rateField); - - // read data bits for modem - CMDBField* dataBitsField = new(ELeave) CMDBField(KCDTIdDataBits); - CleanupStack::PushL(dataBitsField); - dataBitsField->SetRecordId(iModemBearer); - dataBitsField->LoadL(*iDbSession); - TUint32 dataBits; - dataBits = *dataBitsField; - CleanupStack::PopAndDestroy(dataBitsField); - - // read stop bits for modem - CMDBField* stopBitsField = new(ELeave) CMDBField(KCDTIdStopBits); - CleanupStack::PushL(stopBitsField); - stopBitsField->SetRecordId(iModemBearer); - stopBitsField->LoadL(*iDbSession); - TUint32 stopBits; - stopBits = *stopBitsField; - CleanupStack::PopAndDestroy(stopBitsField); - - // read parity for modem - CMDBField* parityField = new(ELeave) CMDBField(KCDTIdParity); - CleanupStack::PushL(parityField); - parityField->SetRecordId(iModemBearer); - parityField->LoadL(*iDbSession); - TUint32 parity; - parity = *parityField; - CleanupStack::PopAndDestroy(parityField); - - // read handshake for modem - CMDBField* handshakeField = new(ELeave) CMDBField(KCDTIdHandshaking); - CleanupStack::PushL(handshakeField); - handshakeField->SetRecordId(iModemBearer); - handshakeField->LoadL(*iDbSession); - TUint32 handshake; - handshake = *handshakeField; - CleanupStack::PopAndDestroy(handshakeField); - - // set the modem configuration - iConfig.iRate = (TBps)rate; - iConfig.iDataBits = (TDataBits)dataBits; - iConfig.iStopBits = (TStopBits)stopBits; - iConfig.iParity = (TParity)parity; - iConfig.iHandshake = handshake; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::~CTsyConfig -// other items were commented in a header -// --------------------------------------------------------------------------- -CTsyConfig::~CTsyConfig() - { - delete iDbSession; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::ConfigModemStringL -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CTsyConfig::ConfigModemStringL(const TDesC& aStringTag, TDes8& aString) - { - ASSERT(iDbSession != 0); - CCDModemBearerRecord* modemRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord)); - CleanupStack::PushL(modemRecord); - modemRecord->SetRecordId(iModemBearer); - modemRecord->LoadL(*iDbSession); - - TInt ret; - TInt type(0); - CMDBElement* baseField = NULL; - TRAP(ret, baseField = modemRecord->GetFieldByNameL(aStringTag, type)); - if (ret == KErrNone) - { - // check for type - switch(type) - { - case EMedText: - case EText: - { - CMDBField* field16 = static_cast*>(baseField); - const TDesC& refField = *field16; - aString.Copy(refField); - ret = KErrNone; - } - break; - case EDesC8: - { - CMDBField* field = static_cast*>(baseField); - aString = *field; - ret = KErrNone; - } - break; - default: - ret = KErrNotFound; - } - } - CleanupStack::PopAndDestroy(modemRecord); - - return ret; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::ConfigModemStringL -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CTsyConfig::ConfigModemStringL(const TDesC& aStringTag, TDes16& aString) - { - ASSERT(iDbSession != 0); - // get the table record - CCDModemBearerRecord* modemRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord)); - CleanupStack::PushL(modemRecord); - modemRecord->SetRecordId(iModemBearer); - modemRecord->LoadL(*iDbSession); - - TInt ret; - TInt type(0); - CMDBElement* baseField = NULL; - TRAP(ret, baseField = modemRecord->GetFieldByNameL(aStringTag, type)); - if (ret == KErrNone) - { - // check for type - switch(type) - { - case EMedText: - case EText: - { - CMDBField* field = static_cast*>(baseField); - aString = *field; - ret = KErrNone; - } - break; - case EDesC8: - { - // des16 needs to be cast to des8 - CMDBField* field8 = static_cast*>(baseField); - const TDesC8& refField = *field8; - aString.Copy(refField); - ret = KErrNone; - } - break; - default: - ret = KErrNotFound; - } - } - - CleanupStack::PopAndDestroy(modemRecord); - - return ret; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetSpeakerSettingPref -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetSpeakerSettingPref(RCall::TMonitorSpeakerControl& aSpeakerSetting) - { - aSpeakerSetting = iSpeakerSetting; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetSpeakerVolumePref -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetSpeakerVolumePref(RCall::TMonitorSpeakerVolume& aSpeakerVolume) - { - aSpeakerVolume = iSpeakerVolume; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetWaitForDialTonePref -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetWaitForDialTonePref(RCall::TWaitForDialTone& aWaitForDialTonePref) - { - aWaitForDialTonePref = iWaitForDialTonePref; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::PortConfig -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CTsyConfig::PortConfig(TCommConfig& aConfigPckg, TConfigType aConfigType) - { - TCommConfig configDummyPckg; - TCommConfigV01& config = configDummyPckg(); - config = iConfig; - - if (aConfigType==EConfigTypeHangUp || - aConfigType==EConfigTypeQuickInit) - { - config.iHandshake = 0;//&= (~(KConfigFailDCD | KConfigObeyDCD | KConfigFailDSR)); - } - else - { - switch (aConfigType) - { - case EConfigTypePreInit: - config.iHandshake &= (~(KConfigObeyCTS | KConfigFailCTS | KConfigObeyDCD | KConfigFailDCD | KConfigFailDSR)); - break; - case EConfigTypeInit: - config.iHandshake &= (~(KConfigObeyCTS | KConfigFailCTS | KConfigObeyDCD | KConfigFailDCD)); - break; - case EConfigTypeConnect: - config.iHandshake &= (~(KConfigFailCTS | KConfigFailDCD)); // fail DCD masked out, as should get NO CARRIER anyway - break; - case EConfigTypeFull: - break; - case EConfigTypeDDBugWorkAroundStart: - if (config.iRate!=EBps300) // ensure that something other than handshaking has changed - config.iRate=EBps300; // to work around the bug in the ARM device driver - else - config.iRate=EBps2400; - config.iHandshake=0; - break; - case EConfigTypeDDBugWorkAroundEnd: - config.iHandshake=0; - break; - default: - break; - } - } - - aConfigPckg=configDummyPckg; - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetCurrentTableViewsL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetCurrentTableViewsL() - { - ResetCurrentTableViews(); - -#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY - iDbSession = CMDBSession::NewL(KCDVersion1_2); -#else - iDbSession = CMDBSession::NewL(KCDVersion1_1); -#endif - - iModemBearer = 0; - iLocationId = 0; - // Search the bearer tables for records using the Phonetsy.TSY - GetModemBearerIdL(iModemBearer); - - // Get the associated locationId - GetLocationIdL(iModemBearer,iLocationId); - - //Check if the selected bearer is an MMTSY bearer with a valid location - if(!iModemBearer || !iLocationId) - { - // - // Selected bearer does not mention the MMTSY - LOCAL_LOGTEXT("GetCurrentSettingsL","PhoneTSY not mentioned in the selected bearer"); - User::Leave(KErrNotFound); - } - } - -// --------------------------------------------------------------------------- -// CTsyConfig::ResetCurrentTableViews -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::ResetCurrentTableViews() - { - delete iDbSession; - iDbSession = NULL; - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetLocationIdL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetLocationIdL(const TUint32& aBearerId, TUint32& aLocationId) - { - CCDIAPRecord *iapRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); - CleanupStack::PushL(iapRecord); - - iapRecord->iBearer = aBearerId; - TBool err = iapRecord->FindL(*iDbSession); - if (err) - { - aLocationId = iapRecord->iLocation; - } - else - { - aLocationId = static_cast(KErrNotFound); - } - - CleanupStack::PopAndDestroy(iapRecord); - - } - -// --------------------------------------------------------------------------- -// CTsyConfig::GetModemBearerIdL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CTsyConfig::GetModemBearerIdL(TUint32& aBearerId) - { - CCDModemBearerRecord *modemRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord)); - CleanupStack::PushL(modemRecord); - - _LIT(KTsyName,"phonetsy"); // Note this is case sensitive and must match the name in commdb - modemRecord->iTsyName.SetMaxLengthL(KMaxTextLength); - modemRecord->iTsyName = KTsyName; - - TBool searchResult = modemRecord->FindL(*iDbSession); - - if (searchResult) - { - aBearerId = modemRecord->RecordId(); - } - else - { - aBearerId = static_cast(KErrNotFound); - } - - CleanupStack::PopAndDestroy(modemRecord); - } - -// End of file