diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/resourcemanager_8cpp-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/resourcemanager_8cpp-source.html Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,667 @@ + + +TB10.1 Example Applications: examples/Base/resourcemanager/resourcemanager.cpp Source File + + + + +

examples/Base/resourcemanager/resourcemanager.cpp

00001 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+00002 // All rights reserved.
+00003 // This component and the accompanying materials are made available
+00004 // under the terms of "Eclipse Public License v1.0"
+00005 // which accompanies this distribution, and is available
+00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
+00007 //
+00008 // Initial Contributors:
+00009 // Nokia Corporation - initial contribution.
+00010 //
+00011 // Contributors:
+00012 //
+00013 // Description:
+00014 // Demonstrates the Resource Manager's user side API, RBusDevResManUs
+00015 
+00016 #include <e32cons.h>
+00017 #include <d32resmanus.h>
+00018 
+00019 _LIT(KTxtExampleCode,"PRM Example");
+00020 _LIT(KTxtFailed,"\nFailed with error : %d \n");
+00021 _LIT(KTxtPressAnyKey," \nPress any key to continue\n");
+00022 _LIT(KEnterResourceIdValue,"\nEnter the resource ID - any number other than zero: ");
+00023 _LIT(KTxtStateChange,"\nState of the resource after the change: %d");
+00024 _LIT(KPrintNoOfClients,"\nNumber of clients is %d \n");
+00025 _LIT(KTxtOptionNotSupported,"\nThis option is not supported\n");
+00031 _LIT8(KClient,"resourcemanager");
+00032 TClientName gName(KClient);
+00033 
+00034 //Indicates whether kernel-side (as well as user-side) clients are included in the request.
+00035 const TBool gIsKernelClient = EFalse;
+00036 
+00037 //Holds the resource ID selected by the user
+00038 TUint gResourceId;
+00039 
+00044 RBusDevResManUs gChannel;
+00045 
+00046 CConsoleBase* gConsole;
+00047 
+00048 TUint gNumClients = 0; //The number of resource manager clients
+00049 TUint gNumResources = 0; //The number of available resources
+00050 
+00056 TInt gReadValue = 0;
+00057 
+00061 TUint GetUserInput()
+00062         {
+00063         TBufC<50> buf;
+00064         TPtr ptr(buf.Des());
+00065         TKeyCode ch = gConsole->Getch();
+00066         while(ch != EKeyEnter)
+00067                 {
+00068                 _LIT(KChar, "%c");
+00069                 gConsole->Printf(KChar,ch);
+00070                 if(ch!= EKeyBackspace)
+00071                         {
+00072                         ptr.Append(ch);
+00073                         }
+00074                 ch=gConsole->Getch();                           
+00075                 }
+00076         TUint value;
+00077 
+00078         TUint err = TLex(ptr).Val(value, EDecimal);
+00079         
+00080         if(value == 0)
+00081                 {
+00082                 gConsole->Printf(KTxtOptionNotSupported);
+00083                 return (TUint)KErrNotSupported;;
+00084                 }
+00085         else
+00086                 {
+00087                 if (err == (TUint)KErrNone)
+00088                         {
+00089                         return value;
+00090                         }
+00091                 else 
+00092                         {
+00093                         return (TUint)KErrNotSupported;; // Error condition - could not parse input to number.
+00094                         }
+00095                 }
+00096         }
+00097 
+00101 void GetNoOfResources()
+00102         {
+00103         _LIT(KTxtOption,"\nGet the number of resources \n");
+00104         gConsole->Printf(KTxtOption);
+00105         TInt err=gChannel.GetNoOfResources(gNumResources);
+00106         if(err != KErrNone)
+00107                 {
+00108                 gConsole->Printf(KTxtFailed,err);
+00109                 }
+00110         else
+00111                 {
+00112                 _LIT(KPrintNoOfResources,"\nNumber of resources = %d \n");
+00113                 gConsole->Printf(KPrintNoOfResources,gNumResources);
+00114                 }
+00115         }
+00116 
+00121 void GetResourceInfo()
+00122         {
+00123         _LIT(KTxtOption,"\nGet information about a particular resource...\n");
+00124         gConsole->Printf(KTxtOption);
+00125         //Request the user to select a resource
+00126         gConsole->Printf(KEnterResourceIdValue);
+00127         gResourceId = GetUserInput(); 
+00128         if(gResourceId != (TUint)KErrNotSupported)
+00129                 {
+00130                 /*
+00131                 The name of the resource is held in an 8 bit buffer. In order to print this value as a string, 
+00132                 it must be converted to a 16 bit buffer. One character is left to hold the 'Null' character to mark the end of
+00133                 the string.
+00134                 */ 
+00135                 TBuf16<MAX_RESOURCE_NAME_LENGTH+1>name; //maximum resource length defined in d32resmanus.h 
+00136                 // retrieve information about the selected resource
+00137                 TResourceInfoBuf *info = new TResourceInfoBuf();
+00138                 TInt err=gChannel.GetResourceInfo(gResourceId,info);
+00139                 if(err!= KErrNone)
+00140                         {
+00141                         gConsole->Printf(KTxtFailed,err);
+00142                         }
+00143                 else
+00144                         {
+00145                         name.Copy((*info)().iName); //Copy the name of the resource into the Unicode buffer.
+00146                         name.PtrZ(); //Append a zero terminator to the buffer.
+00147                         _LIT(KPrintResourceInfo,"\nResource id = %d \t Resource name = %S \n");
+00148                         gConsole->Printf(KPrintResourceInfo,gResourceId ,&name);
+00149                         }
+00150                 delete info;
+00151                 }
+00152         }
+00153         
+00157 void GetAllResourcesInfoL()
+00158         {
+00159         _LIT(KTxtOption,"\nGet information about all the resources...\n");
+00160         gConsole->Printf(KTxtOption);
+00161         //Find the number of resources available
+00162         GetNoOfResources();
+00163         /*
+00164         Construct an array of TResourceInfoBuf objects.
+00165         TResourceInfo holds all the information about a resource.
+00166         */
+00167         TInt err;
+00168         RSimplePointerArray<TResourceInfoBuf> resPtrs(gNumResources);
+00169         for(TUint i=0;i<gNumResources;i++)
+00170                 {
+00171                 TResourceInfoBuf* info = new TResourceInfoBuf;
+00172                 if((err=resPtrs.Insert(info, i))!=KErrNone)
+00173                         {
+00174                         gConsole->Printf(KTxtFailed,err);
+00175                         }
+00176                 }
+00177         //Retrieve information about all the available resources
+00178         if((err=gChannel.GetAllResourcesInfo(&resPtrs,gNumResources))!=KErrNone)
+00179                 {
+00180                 gConsole->Printf(KTxtFailed,err);
+00181                 }
+00182         /*
+00183         The name of the resource is held in an 8 bit buffer. In order to print this value as a string, 
+00184         it must be converted to a 16 bit buffer. One character is left to hold the 'Null' character to mark the end of
+00185         the string.
+00186         */ 
+00187         TBuf16<MAX_RESOURCE_NAME_LENGTH+1>name;
+00188         for(TUint i=0; i<gNumResources; i++)
+00189                 {
+00190                 TResourceInfoBuf* currentInfo = resPtrs[i];
+00191                 name.Copy((*currentInfo)().iName);//Copy the name of the resource into the Unicode buffer.
+00192                 name.PtrZ();//Append a zero terminator to the buffer.
+00193                 _LIT(KPrintResourceInfo,"Resource id = %d, name = %S \n");
+00194                 gConsole->Printf(KPrintResourceInfo,(*currentInfo)().iId,&name);
+00195                 if(i%5 == 0 && i!= 0) //Print 5 resources at a time.
+00196                         {
+00197                         gConsole->Printf(KTxtPressAnyKey);
+00198                         TChar tchar = gConsole->Getch();
+00199                         }
+00200                 delete currentInfo;
+00201                 }
+00202         resPtrs.Close(); //Close the R class
+00203         }
+00204 
+00208 void GetResourceState()
+00209         {
+00210         _LIT(KTxtOption,"\nGet the state of a particular resource... \n");
+00211         gConsole->Printf(KTxtOption);
+00212         //Enter a resource value.
+00213         gConsole->Printf(KEnterResourceIdValue);
+00214         gResourceId = GetUserInput(); 
+00215         if(gResourceId != (TUint)KErrNotSupported)
+00216                 {
+00217                 TRequestStatus getResourceStatus;
+00231                 TBool isCached = EFalse;
+00232                 TInt levelOwnerId = 0;
+00233                 gChannel.GetResourceState(getResourceStatus,gResourceId,isCached,&gReadValue,&levelOwnerId);
+00234                 User::WaitForRequest(getResourceStatus);
+00235                 if(getResourceStatus.Int() != KErrNone)
+00236                         {
+00237                         gConsole->Printf(KTxtFailed,getResourceStatus.Int());
+00238                         }
+00239                 else
+00240                         {
+00241                         _LIT(KPrintResourceState,"\nResource state is %d\n");
+00242                         gConsole->Printf(KPrintResourceState,gReadValue);
+00243                         _LIT(KTxtLevelOwnerId,"\nId of the client which owns this resource is %d");
+00244                         gConsole->Printf(KTxtLevelOwnerId,levelOwnerId);
+00245                         }
+00246                 }
+00247         }
+00248 
+00252 void GetNumClientsUsingResource()
+00253         {
+00254         _LIT(KTxtOption,"\nGet the number of clients using a particular resource... \n");
+00255         gConsole->Printf(KTxtOption);
+00256         GetNoOfResources(); //Get the total number of resources available
+00257         //Ask the user to select a resource.
+00258         gConsole->Printf(KEnterResourceIdValue);
+00259         gResourceId = GetUserInput(); 
+00260         if(gResourceId != (TUint)KErrNotSupported)
+00261                 {
+00262                 _LIT(KPrintNoOfClientsUsingResource,"\nNumber of  clients using resource : %d\n");
+00263                 gNumClients = 0; //This should be initialised to '0' otherwise the API returns KErrArgument
+00264                 TInt err=gChannel.GetNumClientsUsingResource(gResourceId, gNumClients, gIsKernelClient);
+00265                 if((err == KErrArgument && gNumClients == 0) || err == KErrNone)
+00266                         {
+00267                         gConsole->Printf(KPrintNoOfClientsUsingResource,gNumClients);
+00268                         }
+00269                 else
+00270                         {
+00271                         gConsole->Printf(KTxtFailed,err);
+00272                         }
+00273                 }
+00274         }
+00275 
+00279 void GetNumResourcesInUseByClient()
+00280         {
+00281         _LIT(KTxtOption,"\nGet the number of resources in use by a particular client \n");
+00282         gConsole->Printf(KTxtOption);
+00283         _LIT(KTxtClientName,"Name of the client used in this option is resourcemanager ");
+00284         gConsole->Printf(KTxtClientName);
+00285         //Gets the number of resources used by the client, by passing in the client's name.
+00286         TInt err=gChannel.GetNumResourcesInUseByClient(gName, gNumResources, gIsKernelClient);
+00287         if(err!=KErrNone)
+00288                 {
+00289                 gConsole->Printf(KTxtFailed,err);
+00290                 }
+00291         else
+00292                 {
+00293                 _LIT(KPrintNumResourcesInUseByClient,"\nNumber of resources in use by client :  %d\n");
+00294                 gConsole->Printf(KPrintNumResourcesInUseByClient,gNumResources);
+00295                 }
+00296         }
+00297         
+00301 void GetInfoOnResourcesInUseByClientL()
+00302         {
+00303         _LIT(KTxtOption,"\nGet information about all the resources in use by client... \n");
+00304         gConsole->Printf(KTxtOption);
+00305 
+00306         //Get number of resources in use by the client.
+00307         GetNumResourcesInUseByClient();
+00308 
+00309         if(gNumResources!= 0)
+00310                 {
+00311                 /*
+00312                 Construct an array of TResourceInfoBuf objects.
+00313                 TResourceInfo holds all the information about a resource.
+00314                 */
+00315                 RSimplePointerArray<TResourceInfoBuf> resPtrs(gNumResources);
+00316 
+00317                 for(TUint i=0;i<gNumResources;i++)
+00318                         {
+00319                         TResourceInfoBuf *info = new TResourceInfoBuf();
+00320                         TInt err=resPtrs.Insert(info, i);
+00321                         if(err!= KErrNone)
+00322                                 {
+00323                                 gConsole->Printf(KTxtFailed,err);
+00324                                 }
+00325                         }
+00326                 //Gets information about all the resources
+00327                 TInt err=gChannel.GetInfoOnResourcesInUseByClient(gName, gNumResources, &resPtrs);
+00328                 if(err!= KErrNone)
+00329                         {
+00330                         gConsole->Printf(KTxtFailed,err);
+00331                         }
+00332                 else
+00333                         {
+00334                         /*
+00335                         The name of the resource is held in an 8 bit buffer. In order to print this value as a string, 
+00336                         it must be converted to a 16 bit buffer. One character is left to hold the 'Null' character to mark the end of
+00337                         the string.
+00338                         */ 
+00339                         TBuf16<MAX_RESOURCE_NAME_LENGTH+1>name;
+00340                         _LIT(KPrintResourceInfo,"\nResource %d name = %S \n");
+00341                         for(TUint i=0; i<gNumResources; i++)
+00342                                 {
+00343                                 TResourceInfoBuf* currRes = resPtrs[i];
+00344                                 name.Copy((*currRes)().iName);//Copy the name of the resource into the Unicode buffer.
+00345                                 name.PtrZ();//Append a zero terminator to the buffer.
+00346                                 gConsole->Printf(KPrintResourceInfo,i,&name);
+00347                                 if(i%5 == 0) //Print 5 resources at a time.
+00348                                         {
+00349                                         gConsole->Printf(KTxtPressAnyKey);
+00350                                         TChar tchar = gConsole->Getch();
+00351                                         }
+00352                                 }
+00353                         }
+00354                 resPtrs.Close();
+00355                 }
+00356         }
+00357 
+00361 void GetInfoOnClientsUsingResourceL()
+00362         {
+00363         _LIT(KTxtOption,"\nGet information about all clients using a particular resource... \n");
+00364         gConsole->Printf(KTxtOption);
+00365 
+00366         //Get the number of clients using a particular resource
+00367         GetNumClientsUsingResource();
+00368 
+00369         if(gNumClients!= 0)
+00370                 {
+00371                 //Construct an array of TClientInfoBuf objects. TClientInfo consists of the client name and ID.
+00372                 RSimplePointerArray<TClientInfoBuf> resPtrs(gNumClients);
+00373                 for(TUint i=0;i<gNumClients;i++)
+00374                         {
+00375                         TClientInfoBuf *info = new TClientInfoBuf();
+00376                         TInt err=resPtrs.Insert(info, i);
+00377                         if(err!= KErrNone)
+00378                                 {
+00379                                 gConsole->Printf(KTxtFailed,err);
+00380                                 }
+00381                         }
+00382                 TInt err=gChannel.GetInfoOnClientsUsingResource(gResourceId, gNumClients, &resPtrs, gIsKernelClient);
+00383                 if(err!= KErrNone)
+00384                         {
+00385                         gConsole->Printf(KTxtFailed,err);
+00386                         }
+00387                 else
+00388                         {
+00389                         //Print information about all the clients using this resource.
+00390                         _LIT(KPrintClientName,"Client name %d = %S, ID=%d\n");
+00391                         for(TUint i=0;i<gNumClients;i++)
+00392                                 {
+00393                                 TClientInfoBuf* currInfoBuf = resPtrs[i];
+00394                                 TClientInfo currInfo=(*currInfoBuf)();
+00395                                 TBuf16<sizeof(TClientName)> name;
+00396                                 name.Copy(currInfo.iName);
+00397                                 gConsole->Printf(KPrintClientName,i,&name,currInfo.iId);
+00398                                 }
+00399                         }
+00400                 resPtrs.Close();
+00401                 }
+00402         }
+00403 
+00407 void GetNamesOfAllClientsL()
+00408         {
+00409         _LIT(KTxtOption,"\nGet the names of all clients... \n");
+00410 
+00411         gConsole->Printf(KTxtOption);
+00412 
+00413         //Gets the number of clients
+00414         TInt err=gChannel.GetNoOfClients(gNumClients, gIsKernelClient);
+00415 
+00416         //Creates an array of client names
+00417         RSimplePointerArray<TClientName> resPtrs(gNumClients);
+00418         if(err != KErrNone)
+00419                 {
+00420                 gConsole->Printf(KTxtFailed,err);
+00421                 }
+00422         else
+00423                 {
+00424                 gConsole->Printf(KPrintNoOfClients,gNumClients);
+00425                 for(TUint i=0;i<gNumClients;i++)
+00426                         {
+00427                         TClientName *info = new TClientName();
+00428                         if((err=resPtrs.Insert(info, i))!= KErrNone)
+00429                                 {
+00430                                 gConsole->Printf(KTxtFailed,err);
+00431                                 }
+00432                         }
+00433                 }
+00434 
+00435         // Gets the names of all clients
+00436         if((err=gChannel.GetNamesAllClients(&resPtrs, gNumClients, gIsKernelClient)) != KErrNone)
+00437                 {
+00438                 gConsole->Printf(KTxtFailed,err);
+00439                 }
+00440         else
+00441                 {
+00442                 _LIT(KPrintNamesOfAllClients,"\nNames of all clients\n");
+00443                 _LIT(KPrintClientName,"Client name : %S\n");
+00444                 gConsole->Printf(KPrintNamesOfAllClients);
+00445                 for(TUint i=0;i<gNumClients;i++)
+00446                         {
+00447                         TClientName *currName = resPtrs[i];
+00448                         TBuf16<sizeof(TClientName)> name;
+00449                         name.Copy(*currName);
+00450                         gConsole->Printf(KPrintClientName,&name);
+00451                         delete currName;
+00452                         }
+00453                 }
+00454         resPtrs.Close();
+00455         }
+00456 
+00460 TInt ChangeStateOfResource()
+00461         {
+00462         _LIT(KTxtOption,"\nChange the state of a particular resource... \n");
+00463         gConsole->Printf(KTxtOption);
+00464 
+00465         //Gets the current state of the resource
+00466         GetResourceState();
+00467         TInt newLevel = gReadValue + 2; //new (random) state value
+00468         TRequestStatus changeResourceStatus;
+00469         gChannel.ChangeResourceState(changeResourceStatus,gResourceId,newLevel);
+00470         User::WaitForRequest(changeResourceStatus);
+00471         if(changeResourceStatus.Int() != KErrNone)
+00472                 {
+00473                 _LIT(KTxtChangeOfStateFailed,"\nChange of state failed with return value %d\n");
+00474                 gConsole->Printf(KTxtChangeOfStateFailed,changeResourceStatus.Int());
+00475                 }
+00476         else
+00477                 {
+00478                 gConsole->Printf(KTxtStateChange,newLevel);
+00479                 }
+00480         return changeResourceStatus.Int();
+00481         }
+00482 
+00486 void RequestNotification()
+00487         {
+00488         _LIT(KTxtOption,"\nRequest resource manager to notify the client about changes to the state of a resource... \n");
+00489         gConsole->Printf(KTxtOption);
+00490 
+00491         //Verify whether ChangeResourceState() is supported. If not, then notification cannot be issued
+00492         TInt ret = ChangeStateOfResource();
+00493         if(ret == KErrNone)
+00494                 {
+00495                 TRequestStatus notificationStatus;
+00496                 //Requests notification for any change in the resource state
+00497                 gChannel.RequestNotification(notificationStatus, gResourceId);
+00498                 TInt newLevel = gReadValue + 2;
+00499 
+00500                 //Change the resource state.
+00501                 TRequestStatus changeResourceStatus;
+00502                 gChannel.ChangeResourceState(changeResourceStatus,gResourceId,newLevel);
+00503                 User::WaitForRequest(changeResourceStatus);
+00504                 gConsole->Printf(KTxtStateChange,newLevel);
+00505                 User::WaitForRequest(notificationStatus);               
+00506                 if(notificationStatus.Int() != KErrNone)
+00507                         {
+00508                         _LIT(KTxtNotificationFailed,"\nRequest Notification for any change in the state of a resource failed with %d");
+00509                         gConsole->Printf(KTxtNotificationFailed,notificationStatus.Int());
+00510                         }
+00511                 else
+00512                         {
+00513                         
+00514                         _LIT(KTxtNotificationSuccess,"\nRequest Notification for any change in the state of a resource is successful");
+00515                         gConsole->Printf(KTxtNotificationSuccess);
+00516                         }
+00517                 }
+00518         else
+00519                 {
+00520                 _LIT(KTxtNotificationNotSupported,"User notification for this resource is not supported");
+00521                 gConsole->Printf(KTxtNotificationNotSupported);
+00522                 }
+00523         }
+00524         
+00525 void GetPowerResourceInfoL()
+00526         {
+00527         _LIT(KPrintSubMenu,"GetPowerResourceInfo was chosen\n");
+00528         _LIT(KPrintSubMenu1," \nDemonstrate the Get Power Resource APIs\n \
+00529                 *****************************************************\n \
+00530                 Option 1:GetNoOfResources\n   \
+00531                 Option 2:GetResourceInfo\n   \
+00532                 Option 3:GetAllResourcesInfo\n \
+00533                 Option 4:GetResourceState\n ");
+00534         _LIT(KPrintSubMenu2, "\t \tOption 5:GetNumClientsUsingResource \n \
+00535                 Option 6:GetNumResourcesInUseByClient\n \
+00536                 Option 7:GetInfoOnResourcesInUseByClient\n \
+00537                 Option 8:GetInfoOnClientsUsingResource\n  \
+00538                 Option 9:GetNamesOfAllClients\n \
+00539                 ******************************************************\n " );
+00540         gConsole->ClearScreen();
+00541         gConsole->Printf(KPrintSubMenu);
+00542         _LIT(KTxtPressMainESC," \nPress 'ESC' key to go back to the Main Menu\n");
+00543         gConsole->Printf(KTxtPressMainESC);
+00544         gConsole->Printf(KPrintSubMenu1);
+00545         gConsole->Printf(KPrintSubMenu2);
+00546         _LIT(KChooseSubMenuOption,"\nSelect an option 1 - 9 : ");
+00547         gConsole->Printf(KChooseSubMenuOption);
+00548         TChar tchar = gConsole->Getch();        
+00549         while (tchar != EKeyEscape)
+00550                 {               
+00551                 switch(tchar)
+00552                         {               
+00553                         case '1':
+00554                                 {
+00555                                 GetNoOfResources();
+00556                                 break;
+00557                                 }
+00558                         case '2':
+00559                                 {
+00560                                 GetResourceInfo();
+00561                                 break;
+00562                                 }
+00563                         case '3':
+00564                                 {
+00565                                 GetAllResourcesInfoL();
+00566                                 break;
+00567                                 }
+00568                         case '4':
+00569                                 {
+00570                                 GetResourceState();
+00571                                 break;
+00572                                 }
+00573                         case '5':
+00574                                 {
+00575                                 GetNumClientsUsingResource();
+00576                                 break;
+00577                                 }
+00578                         case '6':
+00579                                 {
+00580                                 GetNumResourcesInUseByClient();
+00581                                 break;
+00582                                 }
+00583                         case '7':
+00584                                 {
+00585                                 GetInfoOnResourcesInUseByClientL();
+00586                                 break;
+00587                                 }
+00588                         case '8':
+00589                                 {
+00590                                 GetInfoOnClientsUsingResourceL();
+00591                                 break;
+00592                                 }
+00593                         case '9':
+00594                                 {
+00595                                 GetNamesOfAllClientsL();
+00596                                 break;
+00597                                 }
+00598                         default:
+00599                                 {
+00600                                 if(tchar == EKeyEscape)
+00601                                         {
+00602                                         tchar = 'a'; //Any value can be assigned, so that it goes back to the main menu
+00603                                         }
+00604                                 else
+00605                                         {
+00606                                         gConsole->Printf(KTxtOptionNotSupported);
+00607                                         }
+00608                                 break;
+00609                                 }
+00610                         }
+00611                 gConsole->Printf(KTxtPressAnyKey);
+00612                 tchar = gConsole->Getch();      
+00613                 gConsole->Printf(KTxtPressMainESC);
+00614                 gConsole->Printf(KPrintSubMenu1);
+00615                 gConsole->Printf(KPrintSubMenu2);
+00616                 gConsole->Printf(KChooseSubMenuOption); 
+00617                 tchar = gConsole->Getch();              
+00618                 }
+00619         }
+00620 
+00621 void DoStartL()
+00622         {
+00623         TInt err= gChannel.Open(gName); // 'gName' contains the name of client
+00624         _LIT(KPrintEnterPRMExample,"Power Resource Manager example\n");
+00625         gConsole->Printf(KPrintEnterPRMExample);
+00626         if (err!=KErrNone)
+00627                 {
+00628                 _LIT(KTxtCommonFailure,"\n Note: The application cannot demonstrate the features without a defined PSL \
+00629                         (Platform Specific Layer) and the necessary ldd and pdd. \n");
+00630                 gConsole->Printf(KTxtCommonFailure);
+00631                 gConsole->Printf(KTxtFailed, err);
+00632                 _LIT(KTxtPressAnyKeyToCloseApp,"Press any key to close the application ");
+00633                 gConsole->Printf(KTxtPressAnyKeyToCloseApp);
+00634                 gConsole->Getch();
+00635                 }
+00636         else
+00637                 {
+00638                 const TUint8 KNoOfGetStateRequests = 5; //The maximum number of get state asynchronous requests
+00639                 const TUint8 KNoOfSetStateRequests = 4; //The maximum number of set state asynchronous requests
+00640                 const TUint8 KNoOfNotifyRequests = 7;  //The maximum number of notification requests
+00649                 err=gChannel.Initialise(KNoOfGetStateRequests,KNoOfSetStateRequests,KNoOfNotifyRequests);
+00650                 if (err!=KErrNone)
+00651                         {
+00652                         gConsole->Printf(KTxtFailed, err);
+00653                         }
+00654                 _LIT(KTxtPressAnyKey,"Press any key to continue");
+00655                 gConsole->Printf(KTxtPressAnyKey);
+00656                 _LIT(KTxtPressESC," \nPress the 'ESC' key to exit\n");
+00657                 gConsole->Printf(KTxtPressESC);
+00658                 _LIT(KPrintMainMenu,"\nOptions for various Power Resource Manager Features \n \
+00659                         **************************************\n \
+00660                         1:GetPowerResourceInfo \n \
+00661                         2:ChangeStateOfResource \n \
+00662                         3:RequestNotification \n \
+00663                         **************************************\n \n");
+00664                 TChar tchar = gConsole->Getch();        
+00665                 //make a choice
+00666                 while (tchar != EKeyEscape)
+00667                         {
+00668                         gConsole->Printf(KPrintMainMenu);
+00669                         _LIT(KChooseMainMenuOption,"Select option 1 - 3 : ");
+00670                         gConsole->Printf(KChooseMainMenuOption);
+00671                         tchar = gConsole->Getch();                      
+00672                         switch(tchar)
+00673                                 {
+00674                                 case '1':
+00675                                         {       
+00676                                         GetPowerResourceInfoL();
+00677                                         break;
+00678                                         }
+00679                                 case '2':
+00680                                         {
+00681                                         ChangeStateOfResource();
+00682                                         break;
+00683                                         }
+00684                                 case '3':
+00685                                         {
+00686                                         RequestNotification();
+00687                                         break;
+00688                                         }
+00689                                 default:
+00690                                         {
+00691                                         if(tchar == EKeyEscape)
+00692                                                 {
+00693                                                 _LIT(KPrintExitMenu,"\nExit the Menu\n");
+00694                                                 gConsole->Printf(KPrintExitMenu);
+00695                                                 }
+00696                                         else
+00697                                                 {
+00698                                                 gConsole->Printf(KTxtOptionNotSupported);
+00699                                                 }
+00700                                         break;
+00701                                         }
+00702                                 }                       
+00703                         }
+00704                 gChannel.Close();
+00705                 }
+00706         }
+00707 void callExampleL() // Initialise and call example code under cleanup stack.
+00708         {
+00709         gConsole=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
+00710         CleanupStack::PushL(gConsole);
+00711         DoStartL(); // Perform example function.
+00712         CleanupStack::PopAndDestroy(gConsole); // delete the gConsole.
+00713         }
+00714 
+00715 extern TInt E32Main()
+00716         {
+00717         __UHEAP_MARK;
+00718         CTrapCleanup* cleanup=CTrapCleanup::New(); // Create clean-up stack.
+00719         if(cleanup!=NULL)
+00720                 {
+00721                 TRAPD (error,callExampleL());
+00722                 __ASSERT_ALWAYS(!error,User::Panic(KTxtExampleCode,error));
+00723                 }
+00724         delete cleanup; // Delete clean-up stack.
+00725         __UHEAP_MARKEND;
+00726         return KErrNone;
+00727         }
+

Generated on Thu Jan 21 10:32:57 2010 for TB10.1 Example Applications by  + +doxygen 1.5.3
+ +