// GetIMEI.cpp // // Copyright (c) 2000-2002 Symbian Ltd. All rights reserved. #include "GetIMEI.h" #include #include #include #include LOCAL_C void doExampleL() { _LIT(KMainText,"Example to get phone IMEI v1.00, 11/07/2002\n\n"); console->Printf(KMainText); // Read the TSY name from CommsDB CCommsDatabase* db = CCommsDatabase::NewL(EDatabaseTypeUnspecified); CleanupStack::PushL(db); CCommsDbTableView* table = db->OpenTableLC(TPtrC(MODEM)); table->GotoFirstRecord(); TBuf<255> tsyName; table->ReadTextL(TPtrC(MODEM_TSY_NAME),tsyName); // Cleanup - CommsDB no longer needed CleanupStack::PopAndDestroy(2); // table,db if (tsyName.Length()) { _LIT(KTsyNameText,"Read TSY name from CommsDB: %S\n"); console->Printf(KTsyNameText,&tsyName); } else { _LIT(KNoTsy,"No TSY information stored in CommsDB. Cannot continue.\n"); console->Printf(KNoTsy); User::Leave(KErrNotFound); } // Connect to the ETel server RTelServer telServer; User::LeaveIfError(telServer.Connect()); CleanupClosePushL(telServer); // Make sure our TSY is loaded User::LeaveIfError(telServer.LoadPhoneModule(tsyName)); // Get the number of registered phones TInt numberOfPhones; User::LeaveIfError(telServer.EnumeratePhones(numberOfPhones)); // Loop and display IMEI for all phones found _LIT(KIMEIDetails,"Phone number %d queried, IMEI: %S\n\n"); TBuf retrievedIMEI; for (TInt i=numberOfPhones; i>0; i--) { retrievedIMEI=GetIMEINumberL(telServer,i-1); console->Printf(KIMEIDetails,i,&retrievedIMEI); } // Cleanup telServer.UnloadPhoneModule(tsyName); CleanupStack::PopAndDestroy(); // telServer } LOCAL_C const TDesC& GetIMEINumberL(RTelServer& aTelServer, TInt aPhoneId) { // Get the phone name RTelServer::TPhoneInfo phoneInfo; User::LeaveIfError(aTelServer.GetPhoneInfo(aPhoneId,phoneInfo)); // Open the phone by name RBasicGsmPhone phone; User::LeaveIfError(phone.Open(aTelServer,phoneInfo.iName)); CleanupClosePushL(phone); // Get Phone Info RBasicGsmPhone::TId id; User::LeaveIfError(phone.GetGsmPhoneId(id)); // Close the Phone handle, no longer needed CleanupStack::PopAndDestroy(); // phone // Return the retrieved IMEI Number return (id.iSerialNumber); }