00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00036 #include "publish.h"
00037
00038 LOCAL_D CConsoleBase* console;
00039
00045 void PublishL(RProperty& aProperty,TDes16& aBuf)
00046 {
00047 TInt bufLength = aBuf.Length();
00048 console->Printf(KTxtPublish);
00049
00050
00051
00052 TInt err = aProperty.Set(aBuf);
00053 switch(err)
00054 {
00055
00056 case KErrNone:
00057 {
00058
00059 console->Printf(KTxtArray);
00060 for(TInt ix = 0; ix < bufLength; ix++)
00061 {
00062 console->Printf(KTxtArrayElement,aBuf[ix]);
00063 }
00064 console->Printf(KTxtNewLine);
00065 }
00066 break;
00067
00068 case KErrNotFound:
00069 {
00070 console->Printf(KTxtNotFound);
00071 }
00072 break;
00073
00074 default:
00075 {
00076 User::LeaveIfError(err);
00077 }
00078 }
00079 }
00080
00081 void DoExampleL()
00082 {
00083 console->Printf(KTxtSpecPublish);
00084
00085 RProperty myProperty;
00086 console->Printf(KTxtCreateHandle);
00087
00088 User::LeaveIfError(myProperty.Attach(KMyPropertyCat,KMyPropertyName,EOwnerThread));
00089
00090
00091 TUint16 array[KArraySize] = {10,20,30,40};
00092
00093
00094 TBuf16<KBufSize> buf;
00095
00096
00097 buf.Copy(&array[0],sizeof(array));
00098 buf.SetLength(KArraySize);
00099
00100
00101 PublishL(myProperty,buf);
00102
00103
00104 array[0] = 0x00ab;
00105 array[1] = 0x00bc;
00106 array[2] = 0x00cd;
00107 array[3] = 0x00de;
00108 array[4] = 0x00ef;
00109 array[5] = 0x00fa;
00110
00111
00112 buf.Copy(&array[0],sizeof(array));
00113 buf.SetLength(KArraySize);
00114 console->Printf(KTxtEnter);
00115
00116
00117 while(console->Getch()!= EKeyEnter)
00118 {
00119 console->Printf(KTxtEnter);
00120 }
00121
00122
00123 PublishL(myProperty,buf);
00124
00125
00126 buf.Copy(KStop);
00127 console->Printf(KTxtEnter);
00128
00129
00130 while(console->Getch()!= EKeyEnter)
00131 {
00132 console->Printf(KTxtEnter);
00133 }
00134
00135
00136 PublishL(myProperty,buf);
00137
00138
00139 myProperty.Close();
00140 }
00141
00142 GLDEF_C TInt E32Main()
00143 {
00144 __UHEAP_MARK;
00145 CTrapCleanup* cleanup = CTrapCleanup::New();
00146
00147 TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)));
00148 if (createError)
00149 return createError;
00150
00151 TRAPD(mainError, DoExampleL());
00152 if (mainError)
00153 console->Printf(KTextFailed, mainError);
00154 console->Printf(KTextPressAnyKey);
00155 console->Getch();
00156
00157 delete console;
00158 delete cleanup;
00159 __UHEAP_MARKEND;
00160 return KErrNone;
00161 }