/** @SYMTestCaseID SYSLIB-BAFL-CT-4063 @SYMREQ CR1328 @SYMTestCaseDesc To ensure the correct attribute values are retrieved when there @SYMTestCaseDesc are multiple ROFS sections which may each contain a different @SYMTestCaseDesc version of the deviceattributes.ini file. @SYMTestCaseDesc @SYMTestCaseDesc Note: When run on hardware, this test needs to be part of a ROM @SYMTestCaseDesc which is made up of a core ROM image and extension ROM images. @SYMTestCaseDesc Each extension image should contain a different version of the @SYMTestCaseDesc same INI file. The INI files should contain data which makes @SYMTestCaseDesc sure the following things are covered: @SYMTestCaseDesc - There is an INI file in the core ROM image which contains at @SYMTestCaseDesc least 1 device attribute. This attribute should not appear in @SYMTestCaseDesc any of the other versions of the INI file which are contained @SYMTestCaseDesc in the extension ROM images. @SYMTestCaseDesc - There is an INI file in one of the extension ROM images which @SYMTestCaseDesc contains at least 1 device attribute. This attribute should @SYMTestCaseDesc not appear in the INI file contained in the core ROM image. @SYMTestCaseDesc - There is an INI file in the core ROM image which contains at @SYMTestCaseDesc least 1 device attribute. This attribute should appear in another @SYMTestCaseDesc version of the INI file in one of the extension ROM images. @SYMTestCaseDesc - There is an INI file in one of the extension ROM images which @SYMTestCaseDesc contains at least 1 device attribute. This attribute should @SYMTestCaseDesc appear in another version of the INI file in one of the @SYMTestCaseDesc extension ROM images @SYMTestPriority HIGH @SYMTestStatus Implemented @SYMTestActions 1. Create an instance of CDeviceTypeInformation by calling @SYMTestActions SysUtil::GetDeviceTypeInfo. @SYMTestActions 2. Call each of CDeviceTypeInformation member functions. @SYMTestActions 3. Check the retrieved value and return codes. @SYMTestExpectedResults GetUIPlatformName should return a default value and return @SYMTestExpectedResults CDeviceTypeInformation::KDefaultValue. The rest of the APIs @SYMTestExpectedResults should retrieve provisioned values and return KErrNone. */ void TestMultipleRofsSectionsL() { CDeviceTypeInformation* attribs = SysUtil::GetDeviceTypeInfoL(); CleanupStack::PushL(attribs); TPtrC16 buffer; TInt err = attribs->GetManufacturerName(buffer); test2(err, KErrNone); TInt difference = buffer.Compare(KTest1ManufacturerName); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1ManufacturerName, &buffer); test2(difference, 0); err = attribs->GetModelName(buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1ModelName); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1ModelName, &buffer); test2(difference, 0); err = attribs->GetModelCode(buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1ModelCode); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1ModelCode, &buffer); test2(difference, 0); err = attribs->GetRevisionID(buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1RevisionID); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1RevisionID, &buffer); test2(difference, 0); err = attribs->GetDefaultDeviceName(buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1DefaultDeviceName); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1DefaultDeviceName, &buffer); test2(difference, 0); err = attribs->GetUIPlatformName(buffer); test2(err, CDeviceTypeInformation::KDefaultValue); difference = buffer.Compare(KTest1UIPlatformName); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1UIPlatformName, &buffer); test2(difference, 0); TUint16 major, minor; err = attribs->GetUIPlatformVersion(major, minor); test2(err, KErrNone); test.Printf(_L("Expected major value = %d\nActual major value = %d\n"), KTest1UIPlatformVersionMajor, major); test.Printf(_L("Expected minor value = %d\nActual minor value = %d\n\n"), KTest1UIPlatformVersionMinor, minor); test2(major, KTest1UIPlatformVersionMajor); test2(minor, KTest1UIPlatformVersionMinor); err = attribs->GetUIPlatformVersion(buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1UIPlatformVersion); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1UIPlatformVersion, &buffer); test2(difference, 0); err = attribs->GetOSVersion(major, minor); test2(err, KErrNone); test.Printf(_L("Expected major value = %d\nActual major value = %d\n"), KTest1OSVersionMajor, major); test.Printf(_L("Expected minor value = %d\nActual minor value = %d\n\n"), KTest1OSVersionMinor, minor); test2(major, KTest1OSVersionMajor); test2(minor, KTest1OSVersionMinor); err = attribs->GetOSVersion(buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1OSVersion); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1OSVersion, &buffer); test2(difference, 0); err = attribs->GetAttribute(manufacturerAttributeUID, buffer); test2(err, KErrNone); difference = buffer.Compare(KTest1ManufacturerAttribute); test.Printf(_L("Expected value = %S\nActualValue = %S\n\n"), &KTest1ManufacturerAttribute, &buffer); test2(difference, 0); CleanupStack::PopAndDestroy(1); }
void ScrShotsGenUtils::DumpJsFileL(CScrShotsSettings* scrShotsSettings) { CGetImei* getImei = CGetImei::NewL(); CleanupStack::PushL(getImei); RBuf8 formatBuf; formatBuf.Create(256); formatBuf.CleanupClosePushL(); TFileName infoFile; User::LeaveIfError(CEikonEnv::Static()->FsSession().PrivatePath(infoFile)); infoFile.Append( KDeviceJSFile ); TParsePtrC parse((CEikonEnv::Static()->EikAppUi()->Application())->AppFullName()); infoFile.Insert(0, KCDriveWithColon); RFs fsConn; User::LeaveIfError(fsConn.Connect()); CleanupClosePushL(fsConn); RFile jsFile; if(BaflUtils::FileExists(fsConn, infoFile)){ BaflUtils::DeleteFile(fsConn, infoFile); } //now create the file User::LeaveIfError(jsFile.Create(fsConn, infoFile, EFileWrite)); CleanupClosePushL(jsFile); // User::LeaveIfError(jsFile.Write(KFunctionBlockStart)); RBuf8 values; values.Create(256); for(int i = 0; i < KDeviceParamsCount ; i++){ formatBuf.Zero(); TInt sizeOfItem = User::StringLength((TText8 *)DeviceParams [i]); TPtr8 item((unsigned char*)DeviceParams [i],sizeOfItem ,sizeOfItem ); switch(i){ //device_model case 0:{ CDeviceTypeInformation* devInfo = SysUtil::GetDeviceTypeInfoL(); CleanupStack::PushL(devInfo); TPtrC manufName, modelCode, modelName; devInfo->GetManufacturerName(manufName); devInfo->GetModelCode(modelCode); devInfo->GetModelName(modelName); RBuf8 manufName8, modelName8, modelCode8; manufName8.Create(128); modelName8.Create(128); modelCode8.Create(128); manufName8.CleanupClosePushL(); modelName8.CleanupClosePushL(); modelCode8.CleanupClosePushL(); manufName8.Copy(manufName); modelName8.Copy(modelName); modelCode8.Copy(modelCode); values.Format(KModelNameFormatString, &manufName8, &modelName8, &modelCode8); CleanupStack::PopAndDestroy(4); break; } //firmware_version case 1:{ RBuf swVersion; swVersion.Create(128); SysUtil::GetSWVersion(swVersion); values.Copy(swVersion); TInt pos = 0; while((pos = values.Find(_L8("\n"))) != KErrNotFound){ //values.Delete(pos,1); values.Replace(pos,1,_L8("_")); } swVersion.Close(); break; } //ram_info case 2:{ TInt totalram= 0; HAL::Get(HALData::EMemoryRAM, totalram); totalram /= 1024; values.Num(totalram); break; } //uptime case 3:{ TTimeIntervalMicroSeconds32 iTickPeriod; UserHal::TickPeriod(iTickPeriod); TUint tickCount = User::TickCount(); TUint noOfTicksPerSecond = (1000 * 1000) / iTickPeriod.Int(); TInt noOfSecsSinceStartUp = tickCount / noOfTicksPerSecond;//noOfMicroSecsSinceStartup / (1000 * 1000); values.Num(noOfSecsSinceStartUp); break; } //scrshot count case 4:{ values.Num(scrShotsSettings->TotalScrShotCount()); break; } //symbian version case 5:{ TVersion epocver = User::Version(); values.Copy(epocver.Name()); break; } //series 60 version case 6:{ VersionInfo::TPlatformVersion platformVersion; VersionInfo::GetVersion(platformVersion); TInt aMajor = platformVersion.iMajorVersion; TInt aMinor = platformVersion.iMinorVersion; values.Format(_L8("%d.%d"),aMajor, aMinor); break; } //country code case 7:{ TLocale loc; int code = loc.CountryCode(); values.Num(code); break; } //imei hash case 8:{ TBuf8<256> inputimei; TBuf8<256> outimeihash; if(getImei->IsImeiFetched()){ getImei->GetImei(inputimei); GetWhirlPoolHash(outimeihash,inputimei); values.Copy(outimeihash); } } break; } formatBuf.Format(KStringVariableDeclaration, &item, &values); TRACE_ON(RDebug::Printf((const char*)formatBuf.PtrZ())); jsFile.Write(formatBuf); } values.Close(); CleanupStack::PopAndDestroy(4); //TODO: This code should be commented in final release build #if BRAHMA_DEBUG //code to copy the js file just created to the c:\ so that it can be analyzed _LIT(KTargetFileName, "c:\\device_info.js"); BaflUtils::CopyFile(CEikonEnv::Static()->FsSession(),infoFile, KTargetFileName); #endif }